{
 "additionalProperties": false,
 "createOnlyProperties": [
  "/properties/AssociatePublicIpAddress",
  "/properties/BlockDeviceMappings",
  "/properties/ClassicLinkVPCId",
  "/properties/ClassicLinkVPCSecurityGroups",
  "/properties/EbsOptimized",
  "/properties/IamInstanceProfile",
  "/properties/ImageId",
  "/properties/InstanceId",
  "/properties/InstanceMonitoring",
  "/properties/InstanceType",
  "/properties/KernelId",
  "/properties/KeyName",
  "/properties/LaunchConfigurationName",
  "/properties/MetadataOptions",
  "/properties/PlacementTenancy",
  "/properties/RamDiskId",
  "/properties/SecurityGroups",
  "/properties/SpotPrice",
  "/properties/UserData"
 ],
 "definitions": {
  "BlockDevice": {
   "additionalProperties": false,
   "properties": {
    "DeleteOnTermination": {
     "type": "boolean"
    },
    "Encrypted": {
     "type": "boolean"
    },
    "Iops": {
     "maximum": 20000,
     "minimum": 100,
     "type": "integer"
    },
    "SnapshotId": {
     "maxLength": 255,
     "minLength": 1,
     "type": "string"
    },
    "Throughput": {
     "maximum": 1000,
     "minimum": 125,
     "type": "integer"
    },
    "VolumeSize": {
     "maximum": 16384,
     "minimum": 1,
     "type": "integer"
    },
    "VolumeType": {
     "enum": [
      "gp2",
      "gp3",
      "io1",
      "io2",
      "sc1",
      "st1",
      "standard"
     ],
     "maxLength": 255,
     "minLength": 1,
     "type": "string"
    }
   },
   "type": "object"
  },
  "BlockDeviceMapping": {
   "additionalProperties": false,
   "properties": {
    "DeviceName": {
     "maxLength": 255,
     "minLength": 1,
     "type": "string"
    },
    "Ebs": {
     "$ref": "#/definitions/BlockDevice"
    },
    "NoDevice": {
     "type": "boolean"
    },
    "VirtualName": {
     "maxLength": 255,
     "minLength": 1,
     "type": "string"
    }
   },
   "required": [
    "DeviceName"
   ],
   "requiredXor": [
    "VirtualName",
    "Ebs",
    "NoDevice"
   ],
   "type": "object"
  },
  "MetadataOptions": {
   "additionalProperties": false,
   "properties": {
    "HttpEndpoint": {
     "enum": [
      "disabled",
      "enabled"
     ],
     "type": "string"
    },
    "HttpPutResponseHopLimit": {
     "maximum": 64,
     "minimum": 1,
     "type": "integer"
    },
    "HttpTokens": {
     "enum": [
      "optional",
      "required"
     ],
     "type": "string"
    }
   },
   "type": "object"
  }
 },
 "primaryIdentifier": [
  "/properties/LaunchConfigurationName"
 ],
 "properties": {
  "AssociatePublicIpAddress": {
   "type": "boolean"
  },
  "BlockDeviceMappings": {
   "insertionOrder": false,
   "items": {
    "$ref": "#/definitions/BlockDeviceMapping"
   },
   "type": "array",
   "uniqueItems": true
  },
  "ClassicLinkVPCId": {
   "maxLength": 255,
   "minLength": 1,
   "type": "string"
  },
  "ClassicLinkVPCSecurityGroups": {
   "insertionOrder": false,
   "items": {
    "maxLength": 255,
    "minLength": 1,
    "type": "string"
   },
   "type": "array"
  },
  "EbsOptimized": {
   "type": "boolean"
  },
  "IamInstanceProfile": {
   "maxLength": 1600,
   "minLength": 1,
   "type": "string"
  },
  "ImageId": {
   "format": "AWS::EC2::Image.Id",
   "maxLength": 255,
   "minLength": 1,
   "type": "string"
  },
  "InstanceId": {
   "maxLength": 19,
   "minLength": 1,
   "type": "string"
  },
  "InstanceMonitoring": {
   "type": "boolean"
  },
  "InstanceType": {
   "maxLength": 255,
   "minLength": 1,
   "type": "string"
  },
  "KernelId": {
   "maxLength": 255,
   "minLength": 1,
   "type": "string"
  },
  "KeyName": {
   "maxLength": 255,
   "minLength": 1,
   "type": "string"
  },
  "LaunchConfigurationName": {
   "maxLength": 255,
   "minLength": 1,
   "type": "string"
  },
  "MetadataOptions": {
   "$ref": "#/definitions/MetadataOptions"
  },
  "PlacementTenancy": {
   "maxLength": 64,
   "minLength": 1,
   "type": "string"
  },
  "RamDiskId": {
   "maxLength": 255,
   "minLength": 1,
   "type": "string"
  },
  "SecurityGroups": {
   "anyOf": [
    {
     "format": "AWS::EC2::SecurityGroup.Ids"
    },
    {
     "format": "AWS::EC2::SecurityGroup.Names"
    }
   ],
   "insertionOrder": false,
   "items": {
    "anyOf": [
     {
      "format": "AWS::EC2::SecurityGroup.Id"
     },
     {
      "format": "AWS::EC2::SecurityGroup.Name"
     }
    ],
    "type": "string"
   },
   "type": "array"
  },
  "SpotPrice": {
   "maxLength": 255,
   "minLength": 1,
   "type": "string"
  },
  "UserData": {
   "maxLength": 21847,
   "minLength": 0,
   "type": "string"
  }
 },
 "required": [
  "ImageId",
  "InstanceType"
 ],
 "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-autoscaling.git",
 "tagging": {
  "taggable": false
 },
 "typeName": "AWS::AutoScaling::LaunchConfiguration",
 "writeOnlyProperties": [
  "/properties/InstanceId"
 ]
}
