{
  "tagging" : {
    "permissions" : [ "ec2:CreateTags", "ec2:DeleteTags" ],
    "taggable" : true,
    "tagOnCreate" : true,
    "tagUpdatable" : true,
    "tagProperty" : "/properties/Tags",
    "cloudFormationSystemTags" : true
  },
  "$schema" : "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json",
  "typeName" : "AWS::EC2::Instance",
  "readOnlyProperties" : [ "/properties/InstanceId", "/properties/PrivateIp", "/properties/PublicDnsName", "/properties/PublicIp", "/properties/PrivateDnsName", "/properties/VpcId", "/properties/State" ],
  "description" : "Resource Type definition for AWS::EC2::Instance",
  "createOnlyProperties" : [ "/properties/AvailabilityZone", "/properties/CpuOptions", "/properties/ElasticGpuSpecifications", "/properties/ElasticInferenceAccelerators", "/properties/EnclaveOptions", "/properties/HibernationOptions", "/properties/HostResourceGroupArn", "/properties/ImageId", "/properties/Ipv6AddressCount", "/properties/Ipv6Addresses", "/properties/KeyName", "/properties/LaunchTemplate", "/properties/LicenseSpecifications", "/properties/NetworkInterfaces", "/properties/PlacementGroupName", "/properties/PrivateIpAddress", "/properties/SecurityGroups", "/properties/SubnetId" ],
  "primaryIdentifier" : [ "/properties/InstanceId" ],
  "conditionalCreateOnlyProperties" : [ "/properties/AdditionalInfo", "/properties/Affinity", "/properties/EbsOptimized", "/properties/HostId", "/properties/InstanceType", "/properties/KernelId", "/properties/PrivateDnsNameOptions", "/properties/RamdiskId", "/properties/Tenancy", "/properties/UserData", "/properties/BlockDeviceMappings", "/properties/SecurityGroupIds" ],
  "sourceUrl" : "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git",
  "handlers" : {
    "read" : {
      "permissions" : [ "ec2:DescribeNetworkInterfaces", "ec2:DescribeVolumes", "ec2:DescribeInstances", "ec2:DescribeInstanceAttribute", "ec2:DescribeInstanceCreditSpecifications", "ec2:DescribeLaunchTemplates", "ssm:DescribeAssociation", "ssm:ListAssociations" ]
    },
    "create" : {
      "permissions" : [ "iam:PassRole", "ec2:ModifyPrivateDnsNameOptions", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVolumes", "ec2:RunInstances", "ec2:AssociateIamInstanceProfile", "ec2:DescribeIamInstanceProfileAssociations", "ec2:DescribeInstances", "ec2:DescribeSubnets", "ec2:DescribeKeyPairs", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs", "ec2:DescribeInstanceAttribute", "ec2:DescribeInstanceCreditSpecifications", "ec2:DescribeLaunchTemplates", "ec2:DescribeLaunchTemplateVersions", "ec2:DetachVolume", "ec2:DisassociateIamInstanceProfile", "ec2:ModifyInstanceAttribute", "ec2:ModifyInstanceCreditSpecification", "ec2:ModifyInstancePlacement", "ec2:MonitorInstances", "ec2:AttachVolume", "ec2:CreateTags", "ec2:ReplaceIamInstanceProfileAssociation", "ec2:StartInstances", "ssm:CreateAssociation", "ssm:DescribeAssociation", "ssm:ListAssociations" ]
    },
    "update" : {
      "permissions" : [ "ec2:ModifyPrivateDnsNameOptions", "ec2:DescribeNetworkInterfaces", "ec2:AssociateIamInstanceProfile", "ec2:DescribeIamInstanceProfileAssociations", "ec2:DescribeInstances", "ec2:DescribeSubnets", "ec2:DescribeKeyPairs", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs", "ec2:DescribeInstanceAttribute", "ec2:DescribeInstanceCreditSpecifications", "ec2:DescribeLaunchTemplates", "ec2:DetachVolume", "ec2:DisassociateIamInstanceProfile", "ec2:ModifyInstanceAttribute", "ec2:ModifyInstanceCreditSpecification", "ec2:ModifyInstanceMaintenanceOptions", "ec2:ModifyInstanceMetadataOptions", "ec2:ModifyInstancePlacement", "ec2:MonitorInstances", "ec2:AttachVolume", "ec2:CreateTags", "ec2:DeleteTags", "ec2:ReplaceIamInstanceProfileAssociation", "ec2:StartInstances", "ec2:StopInstances", "ec2:UnmonitorInstances", "ssm:CreateAssociation", "ssm:DeleteAssociation", "ssm:DescribeAssociation", "ssm:ListAssociations" ]
    },
    "list" : {
      "permissions" : [ "ec2:DescribeInstances" ]
    },
    "delete" : {
      "permissions" : [ "ec2:DescribeInstances", "ec2:TerminateInstances", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVolumes", "ec2:DescribeInstances", "ec2:DescribeInstanceAttribute", "ec2:DescribeInstanceCreditSpecifications", "ec2:DescribeLaunchTemplates", "ssm:DescribeAssociation", "ssm:ListAssociations" ]
    }
  },
  "writeOnlyProperties" : [ "/properties/BlockDeviceMappings/*/NoDevice", "/properties/BlockDeviceMappings/*/VirtualName", "/properties/LicenseSpecification", "/properties/AdditionalInfo", "/properties/Ipv6AddressCount", "/properties/Ipv6Addresses", "/properties/PropagateTagsToVolumeOnCreation", "/properties/LaunchTemplate" ],
  "additionalProperties" : false,
  "definitions" : {
    "LaunchTemplateSpecification" : {
      "oneOf" : [ {
        "required" : [ "LaunchTemplateName", "Version" ]
      }, {
        "required" : [ "LaunchTemplateId", "Version" ]
      } ],
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "LaunchTemplateName" : {
          "description" : "The name of the launch template. You must specify the LaunchTemplateName or the LaunchTemplateId, but not both.",
          "type" : "string"
        },
        "Version" : {
          "description" : "The version number of the launch template.",
          "type" : "string"
        },
        "LaunchTemplateId" : {
          "description" : "The ID of the launch template. You must specify the LaunchTemplateName or the LaunchTemplateId, but not both.",
          "type" : "string"
        }
      }
    },
    "MetadataOptions" : {
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "HttpPutResponseHopLimit" : {
          "default" : 1,
          "description" : "The number of network hops that the metadata token can travel. Maximum is 64.",
          "maximum" : 64,
          "type" : "integer",
          "minimum" : 1
        },
        "HttpProtocolIpv6" : {
          "description" : "Enables or disables the IPv6 endpoint for the instance metadata service. To use this option, the instance must be a Nitro-based instance launched in a subnet that supports IPv6.",
          "type" : "string",
          "enum" : [ "disabled", "enabled" ]
        },
        "HttpTokens" : {
          "description" : "Indicates whether IMDSv2 is required.",
          "type" : "string",
          "enum" : [ "optional", "required" ]
        },
        "InstanceMetadataTags" : {
          "description" : "Indicates whether tags from the instance are propagated to the EBS volumes.",
          "type" : "string",
          "enum" : [ "disabled", "enabled" ]
        },
        "HttpEndpoint" : {
          "description" : "Enables or disables the HTTP metadata endpoint on your instances. If you specify a value of disabled, you cannot access your instance metadata.",
          "type" : "string",
          "enum" : [ "disabled", "enabled" ]
        }
      }
    },
    "LicenseSpecification" : {
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "LicenseConfigurationArn" : {
          "description" : "The Amazon Resource Name (ARN) of the license configuration.",
          "type" : "string"
        }
      },
      "required" : [ "LicenseConfigurationArn" ]
    },
    "ElasticGpuSpecification" : {
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Type" : {
          "description" : "The type of Elastic Graphics accelerator. Amazon Elastic Graphics is no longer available.",
          "type" : "string"
        }
      },
      "required" : [ "Type" ]
    },
    "InstanceIpv6Address" : {
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Ipv6Address" : {
          "description" : "The IPv6 address.",
          "type" : "string"
        }
      },
      "required" : [ "Ipv6Address" ]
    },
    "NetworkInterface" : {
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Description" : {
          "description" : "The description of the network interface.",
          "type" : "string"
        },
        "PrivateIpAddress" : {
          "description" : "The private IPv4 address of the network interface.",
          "type" : "string"
        },
        "PrivateIpAddresses" : {
          "uniqueItems" : false,
          "description" : "One or more private IPv4 addresses to assign to the network interface.",
          "insertionOrder" : false,
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/PrivateIpAddressSpecification"
          }
        },
        "SecondaryPrivateIpAddressCount" : {
          "description" : "The number of secondary private IPv4 addresses.",
          "type" : "integer"
        },
        "DeviceIndex" : {
          "description" : "The position of the network interface in the attachment order. A primary network interface has a device index of 0.",
          "type" : "string"
        },
        "GroupSet" : {
          "uniqueItems" : false,
          "description" : "The IDs of the security groups for the network interface.",
          "insertionOrder" : false,
          "type" : "array",
          "items" : {
            "type" : "string"
          }
        },
        "Ipv6Addresses" : {
          "uniqueItems" : false,
          "description" : "The IPv6 addresses associated with the network interface.",
          "insertionOrder" : false,
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/InstanceIpv6Address"
          }
        },
        "SubnetId" : {
          "description" : "The ID of the subnet.",
          "type" : "string"
        },
        "AssociatePublicIpAddress" : {
          "description" : "Indicates whether to assign a public IPv4 address to an instance you launch in a VPC.",
          "type" : "boolean"
        },
        "NetworkInterfaceId" : {
          "description" : "The ID of the network interface.",
          "type" : "string"
        },
        "AssociateCarrierIpAddress" : {
          "description" : "Not currently supported by AWS CloudFormation.",
          "type" : "boolean"
        },
        "EnaSrdSpecification" : {
          "$ref" : "#/definitions/EnaSrdSpecification"
        },
        "Ipv6AddressCount" : {
          "description" : "A number of IPv6 addresses to assign to the network interface.",
          "type" : "integer"
        },
        "DeleteOnTermination" : {
          "description" : "If set to true, the interface is deleted when the instance is terminated.",
          "type" : "boolean"
        }
      },
      "required" : [ "DeviceIndex" ]
    },
    "PrivateDnsNameOptions" : {
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "EnableResourceNameDnsARecord" : {
          "description" : "Indicates whether to respond to DNS queries for instance hostnames with DNS A records. For more information, see Amazon EC2 instance hostname types in the Amazon Elastic Compute Cloud User Guide.",
          "type" : "boolean"
        },
        "HostnameType" : {
          "description" : "The type of hostnames to assign to instances in the subnet at launch. For IPv4 only subnets, an instance DNS name must be based on the instance IPv4 address. For IPv6 only subnets, an instance DNS name must be based on the instance ID. For dual-stack subnets, you can specify whether DNS names use the instance IPv4 address or the instance ID. For more information, see Amazon EC2 instance hostname types in the Amazon Elastic Compute Cloud User Guide.",
          "type" : "string",
          "enum" : [ "ip-name", "resource-name" ]
        },
        "EnableResourceNameDnsAAAARecord" : {
          "description" : "Indicates whether to respond to DNS queries for instance hostnames with DNS AAAA records. For more information, see Amazon EC2 instance hostname types in the Amazon Elastic Compute Cloud User Guide.",
          "type" : "boolean"
        }
      }
    },
    "ElasticInferenceAccelerator" : {
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Type" : {
          "description" : "The type of elastic inference accelerator. Amazon Elastic Inference is no longer available.",
          "type" : "string"
        },
        "Count" : {
          "description" : "The number of elastic inference accelerators to attach to the instance. Amazon Elastic Inference is no longer available.",
          "type" : "integer",
          "minimum" : 0
        }
      },
      "required" : [ "Type" ]
    },
    "AssociationParameter" : {
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Value" : {
          "uniqueItems" : false,
          "description" : "The value of an input parameter.",
          "insertionOrder" : false,
          "type" : "array",
          "items" : {
            "type" : "string"
          }
        },
        "Key" : {
          "description" : "The name of an input parameter that is in the associated SSM document.",
          "type" : "string"
        }
      },
      "required" : [ "Value", "Key" ]
    },
    "SsmAssociation" : {
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "AssociationParameters" : {
          "uniqueItems" : false,
          "description" : "The input parameter values to use with the associated SSM document.",
          "insertionOrder" : false,
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/AssociationParameter"
          }
        },
        "DocumentName" : {
          "description" : "The name of an SSM document to associate with the instance.",
          "type" : "string"
        }
      },
      "required" : [ "DocumentName" ]
    },
    "PrivateIpAddressSpecification" : {
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "PrivateIpAddress" : {
          "description" : "The private IPv4 addresses.",
          "type" : "string"
        },
        "Primary" : {
          "description" : "Indicates whether the private IPv4 address is the primary private IPv4 address. Only one IPv4 address can be designated as primary.",
          "type" : "boolean"
        }
      },
      "required" : [ "PrivateIpAddress", "Primary" ]
    },
    "EnaSrdSpecification" : {
      "description" : "Specifies the ENA Express settings for the network interface that's attached to the instance.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "EnaSrdEnabled" : {
          "description" : "Specifies whether ENA Express is enabled for the network interface when you launch an instance.",
          "type" : "boolean"
        },
        "EnaSrdUdpSpecification" : {
          "$ref" : "#/definitions/EnaSrdUdpSpecification"
        }
      }
    },
    "EnaSrdUdpSpecification" : {
      "description" : "Contains ENA Express settings for UDP network traffic for the network interface that's attached to the instance.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "EnaSrdUdpEnabled" : {
          "description" : "Indicates whether UDP traffic uses ENA Express for your instance.",
          "type" : "boolean"
        }
      }
    },
    "Volume" : {
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "VolumeId" : {
          "description" : "The ID of the EBS volume. The volume and instance must be within the same Availability Zone.",
          "type" : "string"
        },
        "Device" : {
          "description" : "The device name (for example, /dev/sdh or xvdh).",
          "type" : "string"
        }
      },
      "required" : [ "VolumeId", "Device" ]
    },
    "State" : {
      "description" : "The current state of the instance",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Code" : {
          "description" : "The state of the instance as a 16-bit unsigned integer.",
          "type" : "string"
        },
        "Name" : {
          "description" : "The current state of the instance.",
          "type" : "string"
        }
      }
    },
    "Ebs" : {
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "SnapshotId" : {
          "description" : "The ID of the snapshot.",
          "type" : "string"
        },
        "VolumeType" : {
          "description" : "The volume type.",
          "type" : "string"
        },
        "KmsKeyId" : {
          "description" : "The identifier of the AWS Key Management Service (AWS KMS) customer managed CMK to use for Amazon EBS encryption. If KmsKeyId is specified, the encrypted state must be true. If the encrypted state is true but you do not specify KmsKeyId, your AWS managed CMK for EBS is used.",
          "type" : "string"
        },
        "Encrypted" : {
          "description" : "Indicates whether the volume should be encrypted.",
          "type" : "boolean"
        },
        "Iops" : {
          "description" : "The number of I/O operations per second (IOPS). For gp3, io1, and io2 volumes, this represents the number of IOPS that are provisioned for the volume. For gp2 volumes, this represents the baseline performance of the volume and the rate at which the volume accumulates I/O credits for bursting.",
          "type" : "integer"
        },
        "VolumeSize" : {
          "description" : "The size of the volume, in GiBs. You must specify either a snapshot ID or a volume size. If you specify a snapshot, the default is the snapshot size. You can specify a volume size that is equal to or larger than the snapshot size.",
          "type" : "integer"
        },
        "DeleteOnTermination" : {
          "description" : "Indicates whether the EBS volume is deleted on instance termination.",
          "type" : "boolean"
        }
      }
    },
    "BlockDeviceMapping" : {
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Ebs" : {
          "description" : "Parameters used to automatically set up EBS volumes when the instance is launched.",
          "$ref" : "#/definitions/Ebs"
        },
        "NoDevice" : {
          "additionalProperties" : false,
          "type" : "object"
        },
        "VirtualName" : {
          "type" : "string"
        },
        "DeviceName" : {
          "description" : "The device name (for example, /dev/sdh or xvdh).",
          "type" : "string"
        }
      },
      "required" : [ "DeviceName" ]
    },
    "Tag" : {
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Value" : {
          "type" : "string"
        },
        "Key" : {
          "type" : "string"
        }
      },
      "required" : [ "Value", "Key" ]
    }
  },
  "properties" : {
    "PrivateDnsName" : {
      "description" : "The private DNS name of the specified instance. For example: ip-10-24-34-0.ec2.internal.",
      "type" : "string"
    },
    "Volumes" : {
      "uniqueItems" : false,
      "description" : "The volumes to attach to the instance.",
      "insertionOrder" : false,
      "type" : "array",
      "items" : {
        "$ref" : "#/definitions/Volume"
      }
    },
    "PrivateIp" : {
      "description" : "The private IP address of the specified instance. For example: 10.24.34.0.",
      "type" : "string"
    },
    "EnclaveOptions" : {
      "description" : "Indicates whether the instance is enabled for AWS Nitro Enclaves.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Enabled" : {
          "description" : "If this parameter is set to true, the instance is enabled for AWS Nitro Enclaves; otherwise, it is not enabled for AWS Nitro Enclaves.",
          "type" : "boolean"
        }
      }
    },
    "ImageId" : {
      "description" : "The ID of the AMI. An AMI ID is required to launch an instance and must be specified here or in a launch template.",
      "type" : "string"
    },
    "Tags" : {
      "uniqueItems" : false,
      "description" : "The tags to add to the instance.",
      "insertionOrder" : false,
      "type" : "array",
      "items" : {
        "$ref" : "#/definitions/Tag"
      }
    },
    "AdditionalInfo" : {
      "description" : "This property is reserved for internal use. If you use it, the stack fails with this error: Bad property set: [Testing this property] (Service: AmazonEC2; Status Code: 400; Error Code: InvalidParameterCombination; Request ID: 0XXXXXX-49c7-4b40-8bcc-76885dcXXXXX).",
      "type" : "string"
    },
    "HibernationOptions" : {
      "description" : "Indicates whether an instance is enabled for hibernation.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Configured" : {
          "default" : false,
          "description" : "If you set this parameter to true, your instance is enabled for hibernation.",
          "type" : "boolean"
        }
      }
    },
    "LicenseSpecifications" : {
      "uniqueItems" : false,
      "description" : "The license configurations.",
      "insertionOrder" : false,
      "type" : "array",
      "items" : {
        "$ref" : "#/definitions/LicenseSpecification"
      }
    },
    "MetadataOptions" : {
      "description" : "The metadata options for the instance",
      "type" : "object",
      "$ref" : "#/definitions/MetadataOptions"
    },
    "InstanceId" : {
      "description" : "The EC2 Instance ID.",
      "type" : "string"
    },
    "CpuOptions" : {
      "description" : "The CPU options for the instance.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "ThreadsPerCore" : {
          "type" : "integer"
        },
        "CoreCount" : {
          "type" : "integer"
        }
      }
    },
    "AvailabilityZone" : {
      "description" : "The Availability Zone of the instance.",
      "type" : "string"
    },
    "PrivateDnsNameOptions" : {
      "description" : "The options for the instance hostname.",
      "type" : "object",
      "$ref" : "#/definitions/PrivateDnsNameOptions"
    },
    "HostId" : {
      "description" : "If you specify host for the Affinity property, the ID of a dedicated host that the instance is associated with. If you don't specify an ID, Amazon EC2 launches the instance onto any available, compatible dedicated host in your account.",
      "type" : "string"
    },
    "PublicDnsName" : {
      "description" : "The public DNS name of the specified instance. For example: ec2-107-20-50-45.compute-1.amazonaws.com.",
      "type" : "string"
    },
    "SecurityGroupIds" : {
      "uniqueItems" : false,
      "description" : "The IDs of the security groups.",
      "insertionOrder" : false,
      "type" : "array",
      "items" : {
        "type" : "string"
      }
    },
    "PlacementGroupName" : {
      "description" : "The name of an existing placement group that you want to launch the instance into (cluster | partition | spread).",
      "type" : "string"
    },
    "SsmAssociations" : {
      "uniqueItems" : false,
      "description" : "The SSM document and parameter values in AWS Systems Manager to associate with this instance.",
      "insertionOrder" : false,
      "type" : "array",
      "items" : {
        "$ref" : "#/definitions/SsmAssociation"
      }
    },
    "VpcId" : {
      "description" : "The ID of the VPC that the instance is running in.",
      "type" : "string"
    },
    "State" : {
      "description" : "The current state of the instance.",
      "type" : "object",
      "$ref" : "#/definitions/State"
    },
    "Affinity" : {
      "description" : "Indicates whether the instance is associated with a dedicated host. If you want the instance to always restart on the same host on which it was launched, specify host. If you want the instance to restart on any available host, but try to launch onto the last host it ran on (on a best-effort basis), specify default.",
      "type" : "string",
      "enum" : [ "default", "host" ]
    },
    "Tenancy" : {
      "description" : "The tenancy of the instance (if the instance is running in a VPC). An instance with a tenancy of dedicated runs on single-tenant hardware.",
      "type" : "string"
    },
    "SecurityGroups" : {
      "uniqueItems" : false,
      "description" : "the names of the security groups. For a nondefault VPC, you must use security group IDs instead.",
      "insertionOrder" : false,
      "type" : "array",
      "items" : {
        "type" : "string"
      }
    },
    "PrivateIpAddress" : {
      "description" : "[EC2-VPC] The primary IPv4 address. You must specify a value from the IPv4 address range of the subnet.",
      "type" : "string"
    },
    "UserData" : {
      "description" : "The user data to make available to the instance.",
      "type" : "string"
    },
    "BlockDeviceMappings" : {
      "uniqueItems" : false,
      "description" : "The block device mapping entries that defines the block devices to attach to the instance at launch.",
      "insertionOrder" : false,
      "type" : "array",
      "items" : {
        "$ref" : "#/definitions/BlockDeviceMapping"
      }
    },
    "IamInstanceProfile" : {
      "description" : "The IAM instance profile.",
      "type" : "string"
    },
    "Ipv6Addresses" : {
      "uniqueItems" : false,
      "description" : "[EC2-VPC] The IPv6 addresses from the range of the subnet to associate with the primary network interface.",
      "insertionOrder" : false,
      "type" : "array",
      "items" : {
        "$ref" : "#/definitions/InstanceIpv6Address"
      }
    },
    "KernelId" : {
      "description" : "The ID of the kernel.",
      "type" : "string"
    },
    "SubnetId" : {
      "description" : "[EC2-VPC] The ID of the subnet to launch the instance into.\n\n",
      "type" : "string"
    },
    "EbsOptimized" : {
      "description" : "Indicates whether the instance is optimized for Amazon EBS I/O.",
      "type" : "boolean"
    },
    "PropagateTagsToVolumeOnCreation" : {
      "description" : "Indicates whether to assign the tags from the instance to all of the volumes attached to the instance at launch. If you specify true and you assign tags to the instance, those tags are automatically assigned to all of the volumes that you attach to the instance at launch. If you specify false, those tags are not assigned to the attached volumes.",
      "type" : "boolean"
    },
    "ElasticGpuSpecifications" : {
      "uniqueItems" : false,
      "description" : "An elastic GPU to associate with the instance. Amazon Elastic Graphics is no longer available.",
      "insertionOrder" : false,
      "type" : "array",
      "items" : {
        "$ref" : "#/definitions/ElasticGpuSpecification"
      }
    },
    "ElasticInferenceAccelerators" : {
      "uniqueItems" : false,
      "description" : "An elastic inference accelerator to associate with the instance. Amazon Elastic Inference is no longer available.",
      "insertionOrder" : false,
      "type" : "array",
      "items" : {
        "$ref" : "#/definitions/ElasticInferenceAccelerator"
      }
    },
    "Ipv6AddressCount" : {
      "description" : "[EC2-VPC] The number of IPv6 addresses to associate with the primary network interface. Amazon EC2 chooses the IPv6 addresses from the range of your subnet.",
      "type" : "integer"
    },
    "LaunchTemplate" : {
      "description" : "The launch template to use to launch the instances.",
      "type" : "object",
      "$ref" : "#/definitions/LaunchTemplateSpecification"
    },
    "NetworkInterfaces" : {
      "uniqueItems" : false,
      "description" : "The network interfaces to associate with the instance.",
      "insertionOrder" : false,
      "type" : "array",
      "items" : {
        "$ref" : "#/definitions/NetworkInterface"
      }
    },
    "InstanceType" : {
      "description" : "The instance type.",
      "type" : "string"
    },
    "Monitoring" : {
      "description" : "Specifies whether detailed monitoring is enabled for the instance.",
      "type" : "boolean"
    },
    "PublicIp" : {
      "description" : "The public IP address of the specified instance. For example: 192.0.2.0.",
      "type" : "string"
    },
    "InstanceInitiatedShutdownBehavior" : {
      "description" : "Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).",
      "type" : "string"
    },
    "HostResourceGroupArn" : {
      "description" : "The ARN of the host resource group in which to launch the instances. If you specify a host resource group ARN, omit the Tenancy parameter or set it to host.",
      "type" : "string"
    },
    "DisableApiTermination" : {
      "description" : "If you set this parameter to true, you can't terminate the instance using the Amazon EC2 console, CLI, or API; otherwise, you can.",
      "type" : "boolean"
    },
    "KeyName" : {
      "description" : "The name of the key pair.",
      "type" : "string"
    },
    "RamdiskId" : {
      "description" : "The ID of the RAM disk to select.",
      "type" : "string"
    },
    "SourceDestCheck" : {
      "description" : "Specifies whether to enable an instance launched in a VPC to perform NAT.",
      "type" : "boolean"
    },
    "CreditSpecification" : {
      "description" : "The credit option for CPU usage of the burstable performance instance. Valid values are standard and unlimited.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "CPUCredits" : {
          "type" : "string"
        }
      }
    }
  }
}