{
 "additionalProperties": false,
 "conditionalCreateOnlyProperties": [
  "/properties/LaunchConfigurationName",
  "/properties/VPCZoneIdentifier",
  "/properties/LaunchTemplate",
  "/properties/MixedInstancesPolicy"
 ],
 "createOnlyProperties": [
  "/properties/InstanceId",
  "/properties/AutoScalingGroupName"
 ],
 "definitions": {
  "AcceleratorCountRequest": {
   "additionalProperties": false,
   "properties": {
    "Max": {
     "minimum": 0,
     "type": "integer"
    },
    "Min": {
     "minimum": 0,
     "type": "integer"
    }
   },
   "type": "object"
  },
  "AcceleratorTotalMemoryMiBRequest": {
   "additionalProperties": false,
   "properties": {
    "Max": {
     "minimum": 0,
     "type": "integer"
    },
    "Min": {
     "minimum": 0,
     "type": "integer"
    }
   },
   "type": "object"
  },
  "AvailabilityZoneDistribution": {
   "additionalProperties": false,
   "properties": {
    "CapacityDistributionStrategy": {
     "enum": [
      "balanced-best-effort",
      "balanced-only"
     ],
     "type": "string"
    }
   },
   "type": "object"
  },
  "AvailabilityZoneImpairmentPolicy": {
   "additionalProperties": false,
   "properties": {
    "ImpairedZoneHealthCheckBehavior": {
     "enum": [
      "IgnoreUnhealthy",
      "ReplaceUnhealthy"
     ],
     "type": "string"
    },
    "ZonalShiftEnabled": {
     "type": "boolean"
    }
   },
   "required": [
    "ImpairedZoneHealthCheckBehavior",
    "ZonalShiftEnabled"
   ],
   "type": "object"
  },
  "BaselineEbsBandwidthMbpsRequest": {
   "additionalProperties": false,
   "properties": {
    "Max": {
     "minimum": 0,
     "type": "integer"
    },
    "Min": {
     "minimum": 0,
     "type": "integer"
    }
   },
   "type": "object"
  },
  "BaselinePerformanceFactorsRequest": {
   "additionalProperties": false,
   "properties": {
    "Cpu": {
     "$ref": "#/definitions/CpuPerformanceFactorRequest"
    }
   },
   "type": "object"
  },
  "CapacityReservationIds": {
   "insertionOrder": true,
   "items": {
    "maxLength": 255,
    "minLength": 1,
    "pattern": "^[A-Za-z0-9\\-_\\/]+$",
    "type": "string"
   },
   "type": "array",
   "uniqueItems": true
  },
  "CapacityReservationResourceGroupArns": {
   "insertionOrder": true,
   "items": {
    "maxLength": 1600,
    "minLength": 1,
    "type": "string"
   },
   "type": "array",
   "uniqueItems": true
  },
  "CapacityReservationSpecification": {
   "additionalProperties": false,
   "properties": {
    "CapacityReservationPreference": {
     "enum": [
      "capacity-reservations-first",
      "capacity-reservations-only",
      "default",
      "none"
     ],
     "type": "string"
    },
    "CapacityReservationTarget": {
     "$ref": "#/definitions/CapacityReservationTarget"
    }
   },
   "required": [
    "CapacityReservationPreference"
   ],
   "type": "object"
  },
  "CapacityReservationTarget": {
   "additionalProperties": false,
   "properties": {
    "CapacityReservationIds": {
     "$ref": "#/definitions/CapacityReservationIds"
    },
    "CapacityReservationResourceGroupArns": {
     "$ref": "#/definitions/CapacityReservationResourceGroupArns"
    }
   },
   "type": "object"
  },
  "CpuPerformanceFactorRequest": {
   "additionalProperties": false,
   "properties": {
    "References": {
     "$ref": "#/definitions/PerformanceFactorReferenceSetRequest"
    }
   },
   "type": "object"
  },
  "InstanceLifecyclePolicy": {
   "additionalProperties": false,
   "properties": {
    "RetentionTriggers": {
     "$ref": "#/definitions/RetentionTriggers"
    }
   },
   "type": "object"
  },
  "InstanceMaintenancePolicy": {
   "additionalProperties": false,
   "dependencies": {
    "MaxHealthyPercentage": [
     "MinHealthyPercentage"
    ],
    "MinHealthyPercentage": [
     "MaxHealthyPercentage"
    ]
   },
   "properties": {
    "MaxHealthyPercentage": {
     "maximum": 200,
     "minimum": -1,
     "type": "integer"
    },
    "MinHealthyPercentage": {
     "maximum": 100,
     "minimum": -1,
     "type": "integer"
    }
   },
   "type": "object"
  },
  "InstanceRequirements": {
   "additionalProperties": false,
   "properties": {
    "AcceleratorCount": {
     "$ref": "#/definitions/AcceleratorCountRequest"
    },
    "AcceleratorManufacturers": {
     "insertionOrder": false,
     "items": {
      "enum": [
       "amazon-web-services",
       "amd",
       "nvidia",
       "xilinx"
      ],
      "type": "string"
     },
     "type": "array",
     "uniqueItems": true
    },
    "AcceleratorNames": {
     "insertionOrder": false,
     "items": {
      "enum": [
       "a100",
       "k80",
       "m60",
       "radeon-pro-v520",
       "t4",
       "v100",
       "vu9p"
      ],
      "type": "string"
     },
     "type": "array",
     "uniqueItems": true
    },
    "AcceleratorTotalMemoryMiB": {
     "$ref": "#/definitions/AcceleratorTotalMemoryMiBRequest"
    },
    "AcceleratorTypes": {
     "insertionOrder": false,
     "items": {
      "enum": [
       "fpga",
       "gpu",
       "inference"
      ],
      "type": "string"
     },
     "type": "array",
     "uniqueItems": true
    },
    "AllowedInstanceTypes": {
     "insertionOrder": true,
     "items": {
      "maxLength": 30,
      "minLength": 1,
      "pattern": "^[a-zA-Z0-9\\.\\*\\-]+$",
      "type": "string"
     },
     "maxItems": 400,
     "minItems": 0,
     "type": "array",
     "uniqueItems": true
    },
    "BareMetal": {
     "enum": [
      "excluded",
      "included",
      "required"
     ],
     "type": "string"
    },
    "BaselineEbsBandwidthMbps": {
     "$ref": "#/definitions/BaselineEbsBandwidthMbpsRequest"
    },
    "BaselinePerformanceFactors": {
     "$ref": "#/definitions/BaselinePerformanceFactorsRequest"
    },
    "BurstablePerformance": {
     "enum": [
      "excluded",
      "included",
      "required"
     ],
     "type": "string"
    },
    "CpuManufacturers": {
     "insertionOrder": false,
     "items": {
      "enum": [
       "amazon-web-services",
       "amd",
       "apple",
       "intel"
      ],
      "type": "string"
     },
     "type": "array",
     "uniqueItems": true
    },
    "ExcludedInstanceTypes": {
     "insertionOrder": true,
     "items": {
      "maxLength": 30,
      "minLength": 1,
      "pattern": "^[a-zA-Z0-9\\.\\*\\-]+$",
      "type": "string"
     },
     "maxItems": 400,
     "minItems": 0,
     "type": "array",
     "uniqueItems": true
    },
    "InstanceGenerations": {
     "insertionOrder": false,
     "items": {
      "enum": [
       "current",
       "previous"
      ],
      "type": "string"
     },
     "type": "array",
     "uniqueItems": true
    },
    "LocalStorage": {
     "enum": [
      "excluded",
      "included",
      "required"
     ],
     "type": "string"
    },
    "LocalStorageTypes": {
     "insertionOrder": false,
     "items": {
      "enum": [
       "hdd",
       "ssd"
      ],
      "type": "string"
     },
     "type": "array",
     "uniqueItems": true
    },
    "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice": {
     "minimum": 0,
     "type": "integer"
    },
    "MemoryGiBPerVCpu": {
     "$ref": "#/definitions/MemoryGiBPerVCpuRequest"
    },
    "MemoryMiB": {
     "$ref": "#/definitions/MemoryMiBRequest"
    },
    "NetworkBandwidthGbps": {
     "$ref": "#/definitions/NetworkBandwidthGbpsRequest"
    },
    "NetworkInterfaceCount": {
     "$ref": "#/definitions/NetworkInterfaceCountRequest"
    },
    "OnDemandMaxPricePercentageOverLowestPrice": {
     "minimum": 0,
     "type": "integer"
    },
    "RequireHibernateSupport": {
     "type": "boolean"
    },
    "SpotMaxPricePercentageOverLowestPrice": {
     "minimum": 0,
     "type": "integer"
    },
    "TotalLocalStorageGB": {
     "$ref": "#/definitions/TotalLocalStorageGBRequest"
    },
    "VCpuCount": {
     "$ref": "#/definitions/VCpuCountRequest"
    }
   },
   "required": [
    "MemoryMiB",
    "VCpuCount"
   ],
   "type": "object"
  },
  "InstancesDistribution": {
   "additionalProperties": false,
   "properties": {
    "OnDemandAllocationStrategy": {
     "type": "string"
    },
    "OnDemandBaseCapacity": {
     "type": "integer"
    },
    "OnDemandPercentageAboveBaseCapacity": {
     "type": "integer"
    },
    "SpotAllocationStrategy": {
     "type": "string"
    },
    "SpotInstancePools": {
     "type": "integer"
    },
    "SpotMaxPrice": {
     "maxLength": 255,
     "minLength": 0,
     "type": "string"
    }
   },
   "type": "object"
  },
  "LaunchTemplate": {
   "additionalProperties": false,
   "properties": {
    "LaunchTemplateSpecification": {
     "$ref": "#/definitions/LaunchTemplateSpecification"
    },
    "Overrides": {
     "insertionOrder": true,
     "items": {
      "$ref": "#/definitions/LaunchTemplateOverrides"
     },
     "type": "array",
     "uniqueItems": false
    }
   },
   "required": [
    "LaunchTemplateSpecification"
   ],
   "type": "object"
  },
  "LaunchTemplateOverrides": {
   "additionalProperties": false,
   "properties": {
    "ImageId": {
     "format": "AWS::EC2::Image.Id",
     "maxLength": 21,
     "minLength": 5,
     "pattern": "^ami-[a-z0-9]{1,17}$",
     "type": "string"
    },
    "InstanceRequirements": {
     "$ref": "#/definitions/InstanceRequirements"
    },
    "InstanceType": {
     "maxLength": 255,
     "minLength": 1,
     "type": "string"
    },
    "LaunchTemplateSpecification": {
     "$ref": "#/definitions/LaunchTemplateSpecification"
    },
    "WeightedCapacity": {
     "maxLength": 32,
     "minLength": 1,
     "type": "string"
    }
   },
   "type": "object"
  },
  "LaunchTemplateSpecification": {
   "additionalProperties": false,
   "properties": {
    "LaunchTemplateId": {
     "maxLength": 255,
     "minLength": 1,
     "type": "string"
    },
    "LaunchTemplateName": {
     "maxLength": 128,
     "minLength": 3,
     "pattern": "^[a-zA-Z0-9\\(\\)\\.\\-/_]+$",
     "type": "string"
    },
    "Version": {
     "maxLength": 255,
     "minLength": 1,
     "type": "string"
    }
   },
   "required": [
    "Version"
   ],
   "requiredXor": [
    "LaunchTemplateId",
    "LaunchTemplateName"
   ],
   "type": "object"
  },
  "LifecycleHookSpecification": {
   "additionalProperties": false,
   "properties": {
    "DefaultResult": {
     "type": "string"
    },
    "HeartbeatTimeout": {
     "type": "integer"
    },
    "LifecycleHookName": {
     "maxLength": 255,
     "minLength": 1,
     "pattern": "^[A-Za-z0-9\\-_\\/]+$",
     "type": "string"
    },
    "LifecycleTransition": {
     "type": "string"
    },
    "NotificationMetadata": {
     "maxLength": 4000,
     "minLength": 1,
     "pattern": "^[\\u0009\\u000A\\u000D\\u0020-\\u007e]+$",
     "type": "string"
    },
    "NotificationTargetARN": {
     "maxLength": 255,
     "minLength": 0,
     "type": "string"
    },
    "RoleARN": {
     "format": "AWS::IAM::Role.Arn",
     "maxLength": 255,
     "minLength": 1,
     "type": "string"
    }
   },
   "required": [
    "LifecycleHookName",
    "LifecycleTransition"
   ],
   "type": "object"
  },
  "MemoryGiBPerVCpuRequest": {
   "additionalProperties": false,
   "properties": {
    "Max": {
     "minimum": 0,
     "type": "number"
    },
    "Min": {
     "minimum": 0,
     "type": "number"
    }
   },
   "type": "object"
  },
  "MemoryMiBRequest": {
   "additionalProperties": false,
   "properties": {
    "Max": {
     "minimum": 0,
     "type": "integer"
    },
    "Min": {
     "minimum": 0,
     "type": "integer"
    }
   },
   "type": "object"
  },
  "MetricsCollection": {
   "additionalProperties": false,
   "properties": {
    "Granularity": {
     "type": "string"
    },
    "Metrics": {
     "insertionOrder": false,
     "items": {
      "type": "string"
     },
     "type": "array",
     "uniqueItems": false
    }
   },
   "required": [
    "Granularity"
   ],
   "type": "object"
  },
  "MixedInstancesPolicy": {
   "additionalProperties": false,
   "properties": {
    "InstancesDistribution": {
     "$ref": "#/definitions/InstancesDistribution"
    },
    "LaunchTemplate": {
     "$ref": "#/definitions/LaunchTemplate"
    }
   },
   "required": [
    "LaunchTemplate"
   ],
   "type": "object"
  },
  "NetworkBandwidthGbpsRequest": {
   "additionalProperties": false,
   "properties": {
    "Max": {
     "minimum": 0,
     "type": "number"
    },
    "Min": {
     "minimum": 0,
     "type": "number"
    }
   },
   "type": "object"
  },
  "NetworkInterfaceCountRequest": {
   "additionalProperties": false,
   "properties": {
    "Max": {
     "minimum": 0,
     "type": "integer"
    },
    "Min": {
     "minimum": 0,
     "type": "integer"
    }
   },
   "type": "object"
  },
  "NotificationConfiguration": {
   "additionalProperties": false,
   "properties": {
    "NotificationTypes": {
     "insertionOrder": false,
     "items": {
      "type": "string"
     },
     "type": "array",
     "uniqueItems": false
    },
    "TopicARN": {
     "items": {
      "format": "AWS::SNS::Topic.Arn",
      "type": "string"
     },
     "type": [
      "string",
      "array"
     ]
    }
   },
   "required": [
    "TopicARN"
   ],
   "type": "object"
  },
  "PerformanceFactorReferenceRequest": {
   "additionalProperties": false,
   "properties": {
    "InstanceFamily": {
     "type": "string"
    }
   },
   "type": "object"
  },
  "PerformanceFactorReferenceSetRequest": {
   "insertionOrder": true,
   "items": {
    "$ref": "#/definitions/PerformanceFactorReferenceRequest"
   },
   "type": "array",
   "uniqueItems": true
  },
  "RetentionTriggers": {
   "additionalProperties": false,
   "properties": {
    "TerminateHookAbandon": {
     "enum": [
      "retain",
      "terminate"
     ],
     "type": "string"
    }
   },
   "type": "object"
  },
  "TagProperty": {
   "additionalProperties": false,
   "properties": {
    "Key": {
     "maxLength": 128,
     "minLength": 1,
     "type": "string"
    },
    "PropagateAtLaunch": {
     "type": "boolean"
    },
    "Value": {
     "maxLength": 256,
     "minLength": 0,
     "type": "string"
    }
   },
   "required": [
    "Value",
    "Key",
    "PropagateAtLaunch"
   ],
   "type": "object"
  },
  "TotalLocalStorageGBRequest": {
   "additionalProperties": false,
   "properties": {
    "Max": {
     "minimum": 0,
     "type": "number"
    },
    "Min": {
     "minimum": 0,
     "type": "number"
    }
   },
   "type": "object"
  },
  "TrafficSourceIdentifier": {
   "additionalProperties": false,
   "properties": {
    "Identifier": {
     "maxLength": 511,
     "minLength": 1,
     "type": "string"
    },
    "Type": {
     "maxLength": 511,
     "minLength": 1,
     "type": "string"
    }
   },
   "required": [
    "Identifier",
    "Type"
   ],
   "type": "object"
  },
  "VCpuCountRequest": {
   "additionalProperties": false,
   "properties": {
    "Max": {
     "minimum": 0,
     "type": "integer"
    },
    "Min": {
     "minimum": 0,
     "type": "integer"
    }
   },
   "type": "object"
  }
 },
 "deprecatedProperties": [
  "/properties/NotificationConfiguration"
 ],
 "primaryIdentifier": [
  "/properties/AutoScalingGroupName"
 ],
 "properties": {
  "AutoScalingGroupARN": {
   "type": "string"
  },
  "AutoScalingGroupName": {
   "maxLength": 255,
   "minLength": 1,
   "type": "string"
  },
  "AvailabilityZoneDistribution": {
   "$ref": "#/definitions/AvailabilityZoneDistribution"
  },
  "AvailabilityZoneIds": {
   "insertionOrder": false,
   "items": {
    "maxLength": 255,
    "minLength": 1,
    "type": "string"
   },
   "type": "array",
   "uniqueItems": true
  },
  "AvailabilityZoneImpairmentPolicy": {
   "$ref": "#/definitions/AvailabilityZoneImpairmentPolicy"
  },
  "AvailabilityZones": {
   "insertionOrder": false,
   "items": {
    "maxLength": 255,
    "minLength": 1,
    "type": "string"
   },
   "type": "array",
   "uniqueItems": false
  },
  "CapacityRebalance": {
   "type": "boolean"
  },
  "CapacityReservationSpecification": {
   "$ref": "#/definitions/CapacityReservationSpecification"
  },
  "Context": {
   "type": "string"
  },
  "Cooldown": {
   "type": "string"
  },
  "DefaultInstanceWarmup": {
   "type": "integer"
  },
  "DeletionProtection": {
   "enum": [
    "none",
    "prevent-all-deletion",
    "prevent-force-deletion"
   ],
   "type": "string"
  },
  "DesiredCapacity": {
   "pattern": "^[0-9]+$",
   "type": "string"
  },
  "DesiredCapacityType": {
   "maxLength": 255,
   "minLength": 1,
   "type": "string"
  },
  "HealthCheckGracePeriod": {
   "type": "integer"
  },
  "HealthCheckType": {
   "maxLength": 32,
   "minLength": 1,
   "pattern": "^(EBS|EC2|ELB|VPC_LATTICE)(,(EBS|EC2|ELB|VPC_LATTICE))*$",
   "type": "string"
  },
  "InstanceId": {
   "maxLength": 19,
   "minLength": 1,
   "type": "string"
  },
  "InstanceLifecyclePolicy": {
   "$ref": "#/definitions/InstanceLifecyclePolicy"
  },
  "InstanceMaintenancePolicy": {
   "$ref": "#/definitions/InstanceMaintenancePolicy"
  },
  "LaunchConfigurationName": {
   "maxLength": 255,
   "minLength": 1,
   "type": "string"
  },
  "LaunchTemplate": {
   "$ref": "#/definitions/LaunchTemplateSpecification"
  },
  "LifecycleHookSpecificationList": {
   "insertionOrder": false,
   "items": {
    "$ref": "#/definitions/LifecycleHookSpecification"
   },
   "type": "array",
   "uniqueItems": false
  },
  "LoadBalancerNames": {
   "insertionOrder": true,
   "items": {
    "maxLength": 255,
    "minLength": 1,
    "type": "string"
   },
   "type": "array",
   "uniqueItems": false
  },
  "MaxInstanceLifetime": {
   "type": "integer"
  },
  "MaxSize": {
   "pattern": "^[0-9]+$",
   "type": "string"
  },
  "MetricsCollection": {
   "insertionOrder": true,
   "items": {
    "$ref": "#/definitions/MetricsCollection"
   },
   "type": "array",
   "uniqueItems": false
  },
  "MinSize": {
   "pattern": "^[0-9]+$",
   "type": "string"
  },
  "MixedInstancesPolicy": {
   "$ref": "#/definitions/MixedInstancesPolicy"
  },
  "NewInstancesProtectedFromScaleIn": {
   "type": "boolean"
  },
  "NotificationConfiguration": {
   "$ref": "#/definitions/NotificationConfiguration"
  },
  "NotificationConfigurations": {
   "insertionOrder": true,
   "items": {
    "$ref": "#/definitions/NotificationConfiguration"
   },
   "type": "array",
   "uniqueItems": false
  },
  "PlacementGroup": {
   "maxLength": 255,
   "minLength": 1,
   "type": "string"
  },
  "ServiceLinkedRoleARN": {
   "format": "AWS::IAM::Role.Arn",
   "maxLength": 1600,
   "minLength": 1,
   "type": "string"
  },
  "SkipZonalShiftValidation": {
   "type": "boolean"
  },
  "Tags": {
   "insertionOrder": false,
   "items": {
    "$ref": "#/definitions/TagProperty"
   },
   "type": "array"
  },
  "TargetGroupARNs": {
   "insertionOrder": false,
   "items": {
    "maxLength": 511,
    "minLength": 1,
    "type": "string"
   },
   "type": "array",
   "uniqueItems": false
  },
  "TerminationPolicies": {
   "insertionOrder": true,
   "items": {
    "maxLength": 1600,
    "minLength": 1,
    "type": "string"
   },
   "type": "array",
   "uniqueItems": false
  },
  "TrafficSources": {
   "insertionOrder": false,
   "items": {
    "$ref": "#/definitions/TrafficSourceIdentifier"
   },
   "type": "array",
   "uniqueItems": true
  },
  "VPCZoneIdentifier": {
   "insertionOrder": false,
   "items": {
    "type": "string"
   },
   "maxLength": 5000,
   "minLength": 1,
   "type": "array",
   "uniqueItems": false
  }
 },
 "propertyTransform": {
  "/properties/LaunchConfigurationName": "InstanceId? AutoScalingGroupName : LaunchConfigurationName"
 },
 "readOnlyProperties": [
  "/properties/AutoScalingGroupARN"
 ],
 "required": [
  "MinSize",
  "MaxSize"
 ],
 "requiredXor": [
  "InstanceId",
  "LaunchConfigurationName",
  "LaunchTemplate",
  "MixedInstancesPolicy"
 ],
 "tagging": {
  "cloudFormationSystemTags": true,
  "tagOnCreate": true,
  "tagProperty": "/properties/Tags",
  "tagUpdatable": true,
  "taggable": true
 },
 "typeName": "AWS::AutoScaling::AutoScalingGroup",
 "writeOnlyProperties": [
  "/properties/SkipZonalShiftValidation",
  "/properties/InstanceId"
 ]
}
