{
  "tagging" : {
    "taggable" : false,
    "tagOnCreate" : false,
    "tagUpdatable" : false,
    "cloudFormationSystemTags" : false
  },
  "handlers" : {
    "read" : {
      "permissions" : [ "ec2:DescribeLaunchTemplates" ]
    },
    "create" : {
      "permissions" : [ "ec2:CreateLaunchTemplate", "ec2:CreateTags" ]
    },
    "update" : {
      "permissions" : [ "ec2:CreateLaunchTemplateVersion", "ec2:CreateTags", "ec2:DeleteTags" ]
    },
    "list" : {
      "permissions" : [ "ec2:DescribeLaunchTemplates" ]
    },
    "delete" : {
      "permissions" : [ "ec2:DeleteLaunchTemplate", "ec2:DeleteTags", "ec2:DescribeLaunchTemplates" ]
    }
  },
  "typeName" : "AWS::EC2::LaunchTemplate",
  "readOnlyProperties" : [ "/properties/DefaultVersionNumber", "/properties/LaunchTemplateId", "/properties/LatestVersionNumber" ],
  "description" : "Specifies the properties for creating a launch template.\n The minimum required properties for specifying a launch template are as follows:\n  +  You must specify at least one property for the launch template data.\n  +  You can optionally specify a name for the launch template. If you do not specify a name, CFN creates a name for you.\n  \n A launch template can contain some or all of the configuration information to launch an instance. When you launch an instance using a launch template, instance properties that are not specified in the launch template use default values, except the ``ImageId`` property, which has no default value. If you do not specify an AMI ID for the launch template ``ImageId`` property, you must specify an AMI ID for the instance ``ImageId`` property.\n For more information, see [Launch an instance from a launch template](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html) in the *Amazon EC2 User Guide*.",
  "writeOnlyProperties" : [ "/properties/LaunchTemplateData", "/properties/VersionDescription", "/properties/TagSpecifications" ],
  "createOnlyProperties" : [ "/properties/LaunchTemplateName" ],
  "additionalProperties" : false,
  "primaryIdentifier" : [ "/properties/LaunchTemplateId" ],
  "definitions" : {
    "LaunchTemplateData" : {
      "description" : "The information to include in the launch template.\n  You must specify at least one parameter for the launch template data.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "SecurityGroups" : {
          "uniqueItems" : false,
          "description" : "The names of the security groups. For a nondefault VPC, you must use security group IDs instead.\n If you specify a network interface, you must specify any security groups as part of the network interface instead of using this parameter.",
          "type" : "array",
          "items" : {
            "type" : "string"
          }
        },
        "TagSpecifications" : {
          "uniqueItems" : false,
          "description" : "The tags to apply to resources that are created during instance launch.\n To tag the launch template itself, use [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html#cfn-ec2-launchtemplate-tagspecifications).",
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/TagSpecification"
          }
        },
        "NetworkPerformanceOptions" : {
          "description" : "The settings for the network performance options for the instance. For more information, see [EC2 instance bandwidth weighting configuration](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configure-bandwidth-weighting.html).",
          "$ref" : "#/definitions/NetworkPerformanceOptions"
        },
        "UserData" : {
          "description" : "The user data to make available to the instance. You must provide base64-encoded text. User data is limited to 16 KB. For more information, see [Run commands when you launch an EC2 instance with user data input](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) in the *Amazon EC2 User Guide*.\n If you are creating the launch template for use with BATCH, the user data must be provided in the [MIME multi-part archive format](https://docs.aws.amazon.com/https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archive). For more information, see [Amazon EC2 user data in launch templates](https://docs.aws.amazon.com/batch/latest/userguide/launch-templates.html#lt-user-data) in the *User Guide*.",
          "type" : "string"
        },
        "BlockDeviceMappings" : {
          "uniqueItems" : false,
          "description" : "The block device mapping.",
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/BlockDeviceMapping"
          }
        },
        "MaintenanceOptions" : {
          "description" : "The maintenance options of your instance.",
          "$ref" : "#/definitions/MaintenanceOptions"
        },
        "IamInstanceProfile" : {
          "description" : "The name or Amazon Resource Name (ARN) of an IAM instance profile.",
          "$ref" : "#/definitions/IamInstanceProfile"
        },
        "KernelId" : {
          "description" : "The ID of the kernel.\n We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see [User Provided Kernels](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html) in the *Amazon EC2 User Guide*.",
          "type" : "string"
        },
        "EbsOptimized" : {
          "description" : "Indicates whether the instance is optimized for Amazon EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal Amazon EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS-optimized instance.",
          "type" : "boolean"
        },
        "Placement" : {
          "description" : "The placement for the instance.",
          "$ref" : "#/definitions/Placement"
        },
        "NetworkInterfaces" : {
          "uniqueItems" : false,
          "description" : "The network interfaces for the instance.",
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/NetworkInterface"
          }
        },
        "EnclaveOptions" : {
          "description" : "Indicates whether the instance is enabled for AWS Nitro Enclaves. For more information, see [What is Nitro Enclaves?](https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave.html) in the *Nitro Enclaves User Guide*.\n You can't enable AWS Nitro Enclaves and hibernation on the same instance.",
          "$ref" : "#/definitions/EnclaveOptions"
        },
        "ImageId" : {
          "description" : "The ID of the AMI. Alternatively, you can specify a Systems Manager parameter, which will resolve to an AMI ID on launch.\n Valid formats:\n  +   ``ami-0ac394d6a3example`` \n  +   ``resolve:ssm:parameter-name`` \n  +   ``resolve:ssm:parameter-name:version-number`` \n  +   ``resolve:ssm:parameter-name:label`` \n  \n For more information, see [Use a Systems Manager parameter to find an AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html#using-systems-manager-parameter-to-find-AMI) in the *Amazon Elastic Compute Cloud User Guide*.",
          "type" : "string"
        },
        "InstanceType" : {
          "description" : "The instance type. For more information, see [Amazon EC2 instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) in the *Amazon EC2 User Guide*.\n If you specify ``InstanceType``, you can't specify ``InstanceRequirements``.",
          "type" : "string"
        },
        "Monitoring" : {
          "description" : "The monitoring for the instance.",
          "$ref" : "#/definitions/Monitoring"
        },
        "HibernationOptions" : {
          "description" : "Indicates whether an instance is enabled for hibernation. This parameter is valid only if the instance meets the [hibernation prerequisites](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/hibernating-prerequisites.html). For more information, see [Hibernate your Amazon EC2 instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html) in the *Amazon EC2 User Guide*.",
          "$ref" : "#/definitions/HibernationOptions"
        },
        "MetadataOptions" : {
          "description" : "The metadata options for the instance. For more information, see [Configure the Instance Metadata Service options](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html) in the *Amazon EC2 User Guide*.",
          "$ref" : "#/definitions/MetadataOptions"
        },
        "LicenseSpecifications" : {
          "uniqueItems" : false,
          "description" : "The license configurations.",
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/LicenseSpecification"
          }
        },
        "InstanceInitiatedShutdownBehavior" : {
          "description" : "Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown).\n Default: ``stop``",
          "type" : "string"
        },
        "DisableApiStop" : {
          "description" : "Indicates whether to enable the instance for stop protection. For more information, see [Enable stop protection for your EC2 instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-stop-protection.html) in the *Amazon EC2 User Guide*.",
          "type" : "boolean"
        },
        "CpuOptions" : {
          "description" : "The CPU options for the instance. For more information, see [CPU options for Amazon EC2 instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html) in the *Amazon EC2 User Guide*.",
          "$ref" : "#/definitions/CpuOptions"
        },
        "PrivateDnsNameOptions" : {
          "description" : "The hostname type for EC2 instances launched into this subnet and how DNS A and AAAA record queries should be handled. For more information, see [Amazon EC2 instance hostname types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) in the *User Guide*.",
          "$ref" : "#/definitions/PrivateDnsNameOptions"
        },
        "SecurityGroupIds" : {
          "uniqueItems" : false,
          "description" : "The IDs of the security groups. You can specify the IDs of existing security groups and references to resources created by the stack template.\n If you specify a network interface, you must specify any security groups as part of the network interface instead.",
          "type" : "array",
          "items" : {
            "type" : "string"
          }
        },
        "KeyName" : {
          "description" : "The name of the key pair. You can create a key pair using [CreateKeyPair](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateKeyPair.html) or [ImportKeyPair](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ImportKeyPair.html).\n  If you do not specify a key pair, you can't connect to the instance unless you choose an AMI that is configured to allow users another way to log in.",
          "type" : "string"
        },
        "DisableApiTermination" : {
          "description" : "Indicates whether termination protection is enabled for the instance. The default is ``false``, which means that you can terminate the instance using the Amazon EC2 console, command line tools, or API. You can enable termination protection when you launch an instance, while the instance is running, or while the instance is stopped.",
          "type" : "boolean"
        },
        "InstanceMarketOptions" : {
          "description" : "The market (purchasing) option for the instances.",
          "$ref" : "#/definitions/InstanceMarketOptions"
        },
        "InstanceRequirements" : {
          "description" : "The attributes for the instance types. When you specify instance attributes, Amazon EC2 will identify instance types with these attributes.\n You must specify ``VCpuCount`` and ``MemoryMiB``. All other attributes are optional. Any unspecified optional attribute is set to its default.\n When you specify multiple attributes, you get instance types that satisfy all of the specified attributes. If you specify multiple values for an attribute, you get instance types that satisfy any of the specified values.\n To limit the list of instance types from which Amazon EC2 can identify matching instance types, you can use one of the following parameters, but not both in the same request:\n  +  ``AllowedInstanceTypes`` - The instance types to include in the list. All other instance types are ignored, even if they match your specified attributes.\n  +  ``ExcludedInstanceTypes`` - The instance types to exclude from the list, even if they match your specified attributes.\n  \n  If you specify ``InstanceRequirements``, you can't specify ``InstanceType``.\n Attribute-based instance type selection is only supported when using Auto Scaling groups, EC2 Fleet, and Spot Fleet to launch instances. If you plan to use the launch template in the [launch instance wizard](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html), or with the [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) API or [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html)AWS CloudFormation resource, you can't specify ``InstanceRequirements``.\n  For more information, see [Specify attributes for instance type selection for EC2 Fleet or Spot Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html) and [Spot placement score](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-placement-score.html) in the *Amazon EC2 User Guide*.",
          "$ref" : "#/definitions/InstanceRequirements"
        },
        "RamDiskId" : {
          "description" : "The ID of the RAM disk.\n  We recommend that you use PV-GRUB instead of kernels and RAM disks. For more information, see [User provided kernels](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html) in the *Amazon EC2 User Guide*.",
          "type" : "string"
        },
        "CapacityReservationSpecification" : {
          "description" : "The Capacity Reservation targeting option. If you do not specify this parameter, the instance's Capacity Reservation preference defaults to ``open``, which enables it to run in any open Capacity Reservation that has matching attributes (instance type, platform, Availability Zone).",
          "$ref" : "#/definitions/CapacityReservationSpecification"
        },
        "CreditSpecification" : {
          "description" : "The credit option for CPU usage of the instance. Valid only for T instances.",
          "$ref" : "#/definitions/CreditSpecification"
        }
      }
    },
    "Ipv6Add" : {
      "description" : "Specifies an IPv6 address in an Amazon EC2 launch template.\n ``Ipv6Add`` is a property of [AWS::EC2::LaunchTemplate NetworkInterface](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html).",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Ipv6Address" : {
          "description" : "One or more specific IPv6 addresses from the IPv6 CIDR block range of your subnet. You can't use this option if you're specifying a number of IPv6 addresses.",
          "type" : "string"
        }
      }
    },
    "NetworkPerformanceOptions" : {
      "description" : "Contains settings for the network performance options for the instance.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "BandwidthWeighting" : {
          "description" : "Specify the bandwidth weighting option to boost the associated type of baseline bandwidth, as follows:\n  + default This option uses the standard bandwidth configuration for your instance type. + vpc-1 This option boosts your networking baseline bandwidth and reduces your EBS baseline bandwidth. + ebs-1 This option boosts your EBS baseline bandwidth and reduces your networking baseline bandwidth.",
          "type" : "string"
        }
      }
    },
    "LicenseSpecification" : {
      "description" : "Specifies a license configuration for an instance.\n ``LicenseSpecification`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "LicenseConfigurationArn" : {
          "description" : "The Amazon Resource Name (ARN) of the license configuration.",
          "type" : "string"
        }
      }
    },
    "MaintenanceOptions" : {
      "description" : "The maintenance options of your instance.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "AutoRecovery" : {
          "description" : "Disables the automatic recovery behavior of your instance or sets it to default.",
          "type" : "string"
        }
      }
    },
    "Cpu" : {
      "description" : "Specifies the CPU performance to consider when using an instance family as the baseline reference.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "References" : {
          "description" : "The instance family to use as the baseline reference for CPU performance. All instance types that match your specified attributes are compared against the CPU performance of the referenced instance family, regardless of CPU manufacturer or architecture differences.",
          "$ref" : "#/definitions/References"
        }
      }
    },
    "IamInstanceProfile" : {
      "description" : "Specifies an IAM instance profile, which is a container for an IAM role for your instance. You can use an IAM role to distribute your AWS credentials to your instances.\n If you are creating the launch template for use with an ASlong group, you can specify either the name or the ARN of the instance profile, but not both.\n ``IamInstanceProfile`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Arn" : {
          "description" : "The Amazon Resource Name (ARN) of the instance profile.",
          "type" : "string"
        },
        "Name" : {
          "description" : "The name of the instance profile.",
          "type" : "string"
        }
      }
    },
    "MemoryGiBPerVCpu" : {
      "description" : "The minimum and maximum amount of memory per vCPU, in GiB.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Min" : {
          "description" : "The minimum amount of memory per vCPU, in GiB. To specify no minimum limit, omit this parameter.",
          "type" : "number"
        },
        "Max" : {
          "description" : "The maximum amount of memory per vCPU, in GiB. To specify no maximum limit, omit this parameter.",
          "type" : "number"
        }
      }
    },
    "VCpuCount" : {
      "description" : "The minimum and maximum number of vCPUs.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Min" : {
          "description" : "The minimum number of vCPUs. To specify no minimum limit, specify ``0``.",
          "type" : "integer"
        },
        "Max" : {
          "description" : "The maximum number of vCPUs. To specify no maximum limit, omit this parameter.",
          "type" : "integer"
        }
      }
    },
    "Ipv4PrefixSpecification" : {
      "description" : "Specifies an IPv4 prefix for a network interface.\n ``Ipv4PrefixSpecification`` is a property of [AWS::EC2::LaunchTemplate NetworkInterface](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html).",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Ipv4Prefix" : {
          "description" : "The IPv4 prefix. For information, see [Assigning prefixes to network interfaces](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-prefix-eni.html) in the *Amazon EC2 User Guide*.",
          "type" : "string"
        }
      }
    },
    "EnaSrdSpecification" : {
      "description" : "ENA Express uses AWS Scalable Reliable Datagram (SRD) technology to increase the maximum bandwidth used per stream and minimize tail latency of network traffic between EC2 instances. With ENA Express, you can communicate between two EC2 instances in the same subnet within the same account, or in different accounts. Both sending and receiving instances must have ENA Express enabled.\n To improve the reliability of network packet delivery, ENA Express reorders network packets on the receiving end by default. However, some UDP-based applications are designed to handle network packets that are out of order to reduce the overhead for packet delivery at the network layer. When ENA Express is enabled, you can specify whether UDP network traffic uses it.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "EnaSrdEnabled" : {
          "description" : "Indicates whether ENA Express is enabled for the network interface.",
          "type" : "boolean"
        },
        "EnaSrdUdpSpecification" : {
          "description" : "Configures ENA Express for UDP network traffic.",
          "$ref" : "#/definitions/EnaSrdUdpSpecification"
        }
      }
    },
    "Placement" : {
      "description" : "Specifies the placement of an instance.\n ``Placement`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "GroupName" : {
          "description" : "The name of the placement group for the instance.",
          "type" : "string"
        },
        "Tenancy" : {
          "description" : "The tenancy of the instance. An instance with a tenancy of dedicated runs on single-tenant hardware.",
          "type" : "string"
        },
        "SpreadDomain" : {
          "description" : "Reserved for future use.",
          "type" : "string"
        },
        "PartitionNumber" : {
          "description" : "The number of the partition the instance should launch in. Valid only if the placement group strategy is set to ``partition``.",
          "type" : "integer"
        },
        "AvailabilityZone" : {
          "description" : "The Availability Zone for the instance.\n Either ``AvailabilityZone`` or ``AvailabilityZoneId`` can be specified, but not both",
          "type" : "string"
        },
        "Affinity" : {
          "description" : "The affinity setting for an instance on a Dedicated Host.",
          "type" : "string"
        },
        "HostId" : {
          "description" : "The ID of the Dedicated Host for the instance.",
          "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"
        },
        "GroupId" : {
          "description" : "The Group Id of a placement group. You must specify the Placement Group *Group Id* to launch an instance in a shared placement group.",
          "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"
        }
      }
    },
    "Ebs" : {
      "description" : "Parameters for a block device for an EBS volume in an Amazon EC2 launch template.\n ``Ebs`` is a property of [AWS::EC2::LaunchTemplate BlockDeviceMapping](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html).",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "SnapshotId" : {
          "description" : "The ID of the snapshot.",
          "type" : "string"
        },
        "VolumeType" : {
          "description" : "The volume type. For more information, see [Amazon EBS volume types](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volume-types.html) in the *Amazon EBS User Guide*.",
          "type" : "string"
        },
        "KmsKeyId" : {
          "description" : "Identifier (key ID, key alias, key ARN, or alias ARN) of the customer managed KMS key to use for EBS encryption.",
          "type" : "string"
        },
        "Encrypted" : {
          "description" : "Indicates whether the EBS volume is encrypted. Encrypted volumes can only be attached to instances that support Amazon EBS encryption. If you are creating a volume from a snapshot, you can't specify an encryption value.",
          "type" : "boolean"
        },
        "EbsCardIndex" : {
          "description" : "",
          "type" : "integer"
        },
        "Throughput" : {
          "description" : "The throughput to provision for a ``gp3`` volume, with a maximum of 2,000 MiB/s.\n Valid Range: Minimum value of 125. Maximum value of 2,000.",
          "type" : "integer"
        },
        "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.\n The following are the supported values for each volume type:\n  +  ``gp3``: 3,000 - 80,000 IOPS\n  +  ``io1``: 100 - 64,000 IOPS\n  +  ``io2``: 100 - 256,000 IOPS\n  \n For ``io2`` volumes, you can achieve up to 256,000 IOPS on [instances built on the Nitro System](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html). On other instances, you can achieve performance up to 32,000 IOPS.\n This parameter is supported for ``io1``, ``io2``, and ``gp3`` volumes only.",
          "type" : "integer"
        },
        "VolumeInitializationRate" : {
          "description" : "Specifies the Amazon EBS Provisioned Rate for Volume Initialization (volume initialization rate), in MiB/s, at which to download the snapshot blocks from Amazon S3 to the volume. This is also known as *volume initialization*. Specifying a volume initialization rate ensures that the volume is initialized at a predictable and consistent rate after creation.\n This parameter is supported only for volumes created from snapshots. Omit this parameter if:\n  +  You want to create the volume using fast snapshot restore. You must specify a snapshot that is enabled for fast snapshot restore. In this case, the volume is fully initialized at creation.\n  If you specify a snapshot that is enabled for fast snapshot restore and a volume initialization rate, the volume will be initialized at the specified rate instead of fast snapshot restore.\n   +  You want to create a volume that is initialized at the default rate.\n  \n For more information, see [Initialize Amazon EBS volumes](https://docs.aws.amazon.com/ebs/latest/userguide/initalize-volume.html) in the *Amazon EC2 User Guide*.\n Valid range: 100 - 300 MiB/s",
          "type" : "integer"
        },
        "VolumeSize" : {
          "description" : "The size of the volume, in GiBs. You must specify either a snapshot ID or a volume size. The following are the supported volumes sizes for each volume type:\n  +  ``gp2``: 1 - 16,384 GiB\n  +  ``gp3``: 1 - 65,536 GiB\n  +  ``io1``: 4 - 16,384 GiB\n  +  ``io2``: 4 - 65,536 GiB\n  +  ``st1`` and ``sc1``: 125 - 16,384 GiB\n  +  ``standard``: 1 - 1024 GiB",
          "type" : "integer"
        },
        "DeleteOnTermination" : {
          "description" : "Indicates whether the EBS volume is deleted on instance termination.",
          "type" : "boolean"
        }
      }
    },
    "BlockDeviceMapping" : {
      "description" : "Specifies a block device mapping for a launch template. You must specify ``DeviceName`` plus exactly one of the following properties: ``Ebs``, ``NoDevice``, or ``VirtualName``.\n ``BlockDeviceMapping`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Ebs" : {
          "description" : "Parameters used to automatically set up EBS volumes when the instance is launched.",
          "$ref" : "#/definitions/Ebs"
        },
        "NoDevice" : {
          "description" : "To omit the device from the block device mapping, specify an empty string.",
          "type" : "string"
        },
        "VirtualName" : {
          "description" : "The virtual device name (ephemeralN). Instance store volumes are numbered starting from 0. An instance type with 2 available instance store volumes can specify mappings for ephemeral0 and ephemeral1. The number of available instance store volumes depends on the instance type. After you connect to the instance, you must mount the volume.",
          "type" : "string"
        },
        "DeviceName" : {
          "description" : "The device name (for example, /dev/sdh or xvdh).",
          "type" : "string"
        }
      }
    },
    "Monitoring" : {
      "description" : "Specifies whether detailed monitoring is enabled for an instance. For more information about detailed monitoring, see [Enable or turn off detailed monitoring for your instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cloudwatch-new.html) in the *User Guide*.\n ``Monitoring`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Enabled" : {
          "description" : "Specify ``true`` to enable detailed monitoring. Otherwise, basic monitoring is enabled.",
          "type" : "boolean"
        }
      }
    },
    "MemoryMiB" : {
      "description" : "The minimum and maximum amount of memory, in MiB.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Min" : {
          "description" : "The minimum amount of memory, in MiB. To specify no minimum limit, specify ``0``.",
          "type" : "integer"
        },
        "Max" : {
          "description" : "The maximum amount of memory, in MiB. To specify no maximum limit, omit this parameter.",
          "type" : "integer"
        }
      }
    },
    "HibernationOptions" : {
      "description" : "Specifies whether your instance is configured for hibernation. This parameter is valid only if the instance meets the [hibernation prerequisites](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites). For more information, see [Hibernate Your Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html) in the *Amazon EC2 User Guide*.\n ``HibernationOptions`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Configured" : {
          "description" : "If you set this parameter to ``true``, the instance is enabled for hibernation.\n Default: ``false``",
          "type" : "boolean"
        }
      }
    },
    "MetadataOptions" : {
      "description" : "The metadata options for the instance. For more information, see [Instance metadata and user data](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) in the *Amazon EC2 User Guide*.\n ``MetadataOptions`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "HttpPutResponseHopLimit" : {
          "description" : "The desired HTTP PUT response hop limit for instance metadata requests. The larger the number, the further instance metadata requests can travel.\n Default: ``1``\n Possible values: Integers from 1 to 64",
          "type" : "integer"
        },
        "HttpTokens" : {
          "description" : "Indicates whether IMDSv2 is required.\n  +  ``optional`` - IMDSv2 is optional. You can choose whether to send a session token in your instance metadata retrieval requests. If you retrieve IAM role credentials without a session token, you receive the IMDSv1 role credentials. If you retrieve IAM role credentials using a valid session token, you receive the IMDSv2 role credentials.\n  +  ``required`` - IMDSv2 is required. You must send a session token in your instance metadata retrieval requests. With this option, retrieving the IAM role credentials always returns IMDSv2 credentials; IMDSv1 credentials are not available.\n  \n Default: If the value of ``ImdsSupport`` for the Amazon Machine Image (AMI) for your instance is ``v2.0``, the default is ``required``.",
          "type" : "string"
        },
        "HttpProtocolIpv6" : {
          "description" : "Enables or disables the IPv6 endpoint for the instance metadata service.\n Default: ``disabled``",
          "type" : "string"
        },
        "InstanceMetadataTags" : {
          "description" : "Set to ``enabled`` to allow access to instance tags from the instance metadata. Set to ``disabled`` to turn off access to instance tags from the instance metadata. For more information, see [View tags for your EC2 instances using instance metadata](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/work-with-tags-in-IMDS.html).\n Default: ``disabled``",
          "type" : "string"
        },
        "HttpEndpoint" : {
          "description" : "Enables or disables the HTTP metadata endpoint on your instances. If the parameter is not specified, the default state is ``enabled``.\n  If you specify a value of ``disabled``, you will not be able to access your instance metadata.",
          "type" : "string"
        }
      }
    },
    "NetworkInterfaceCount" : {
      "description" : "The minimum and maximum number of network interfaces.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Min" : {
          "description" : "The minimum number of network interfaces. To specify no minimum limit, omit this parameter.",
          "type" : "integer"
        },
        "Max" : {
          "description" : "The maximum number of network interfaces. To specify no maximum limit, omit this parameter.",
          "type" : "integer"
        }
      }
    },
    "Reference" : {
      "description" : "Specifies an instance family to use as the baseline reference for CPU performance.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "InstanceFamily" : {
          "description" : "The instance family to use as a baseline reference.\n  Ensure that you specify the correct value for the instance family. The instance family is everything before the period (``.``) in the instance type name. For example, in the instance type ``c6i.large``, the instance family is ``c6i``, not ``c6``. For more information, see [Amazon EC2 instance type naming conventions](https://docs.aws.amazon.com/ec2/latest/instancetypes/instance-type-names.html) in *Amazon EC2 Instance Types*.\n  The following instance families are *not supported* for performance protection:\n  +   ``c1`` \n  +  ``g3`` | ``g3s``\n  +   ``hpc7g`` \n  +  ``m1`` | ``m2``\n  +  ``mac1`` | ``mac2`` | ``mac2-m1ultra`` | ``mac2-m2`` | ``mac2-m2pro``\n  +  ``p3dn`` | ``p4d`` | ``p5``\n  +   ``t1`` \n  +  ``u-12tb1`` | ``u-18tb1`` | ``u-24tb1`` | ``u-3tb1`` | ``u-6tb1`` | ``u-9tb1`` | ``u7i-12tb`` | ``u7in-16tb`` | ``u7in-24tb`` | ``u7in-32tb``\n  \n If you enable performance protection by specifying a supported instance family, the returned instance types will exclude the above unsupported instance families.",
          "type" : "string"
        }
      }
    },
    "CpuOptions" : {
      "description" : "Specifies the CPU options for an instance. For more information, see [Optimize CPU options](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html) in the *User Guide*.\n ``CpuOptions`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "ThreadsPerCore" : {
          "description" : "The number of threads per CPU core. To disable multithreading for the instance, specify a value of ``1``. Otherwise, specify the default value of ``2``.",
          "type" : "integer"
        },
        "AmdSevSnp" : {
          "description" : "Indicates whether to enable the instance for AMD SEV-SNP. AMD SEV-SNP is supported with M6a, R6a, and C6a instance types only. For more information, see [AMD SEV-SNP for Amazon EC2 instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sev-snp.html).",
          "type" : "string",
          "enum" : [ "enabled", "disabled" ]
        },
        "NestedVirtualization" : {
          "description" : "Indicates whether the instance is enabled for nested virtualization.",
          "type" : "string",
          "enum" : [ "enabled", "disabled" ]
        },
        "CoreCount" : {
          "description" : "The number of CPU cores for the instance.",
          "type" : "integer"
        }
      }
    },
    "SpotOptions" : {
      "description" : "Specifies options for Spot Instances.\n ``SpotOptions`` is a property of [AWS::EC2::LaunchTemplate InstanceMarketOptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-instancemarketoptions.html).",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "SpotInstanceType" : {
          "description" : "The Spot Instance request type.\n If you are using Spot Instances with an Auto Scaling group, use ``one-time`` requests, as the ASlong service handles requesting new Spot Instances whenever the group is below its desired capacity.",
          "type" : "string"
        },
        "InstanceInterruptionBehavior" : {
          "description" : "The behavior when a Spot Instance is interrupted. The default is ``terminate``.",
          "type" : "string"
        },
        "MaxPrice" : {
          "description" : "The maximum hourly price you're willing to pay for a Spot Instance. We do not recommend using this parameter because it can lead to increased interruptions. If you do not specify this parameter, you will pay the current Spot price. If you do specify this parameter, it must be more than USD $0.001. Specifying a value below USD $0.001 will result in an ``InvalidParameterValue`` error message when the launch template is used to launch an instance.\n  If you specify a maximum price, your Spot Instances will be interrupted more frequently than if you do not specify this parameter.",
          "type" : "string"
        },
        "BlockDurationMinutes" : {
          "description" : "Deprecated.",
          "type" : "integer"
        },
        "ValidUntil" : {
          "description" : "The end date of the request, in UTC format (*YYYY-MM-DD*T*HH:MM:SS*Z). Supported only for persistent requests.\n  +  For a persistent request, the request remains active until the ``ValidUntil`` date and time is reached. Otherwise, the request remains active until you cancel it.\n  +  For a one-time request, ``ValidUntil`` is not supported. The request remains active until all instances launch or you cancel the request.\n  \n Default: 7 days from the current date",
          "type" : "string"
        }
      }
    },
    "NetworkInterface" : {
      "description" : "Specifies the parameters for a network interface.\n ``NetworkInterface`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Description" : {
          "description" : "A description for the network interface.",
          "type" : "string"
        },
        "PrivateIpAddress" : {
          "description" : "The primary private IPv4 address of the network interface.",
          "type" : "string"
        },
        "PrivateIpAddresses" : {
          "uniqueItems" : false,
          "description" : "One or more private IPv4 addresses.",
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/PrivateIpAdd"
          }
        },
        "SecondaryPrivateIpAddressCount" : {
          "description" : "The number of secondary private IPv4 addresses to assign to a network interface.",
          "type" : "integer"
        },
        "Ipv6PrefixCount" : {
          "description" : "The number of IPv6 prefixes to be automatically assigned to the network interface. You cannot use this option if you use the ``Ipv6Prefix`` option.",
          "type" : "integer"
        },
        "Ipv4Prefixes" : {
          "uniqueItems" : false,
          "description" : "One or more IPv4 prefixes to be assigned to the network interface. You cannot use this option if you use the ``Ipv4PrefixCount`` option.",
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/Ipv4PrefixSpecification"
          }
        },
        "DeviceIndex" : {
          "description" : "The device index for the network interface attachment. The primary network interface has a device index of 0. If the network interface is of type ``interface``, you must specify a device index.\n If you create a launch template that includes secondary network interfaces but no primary network interface, and you specify it using the ``LaunchTemplate`` property of ``AWS::EC2::Instance``, then you must include a primary network interface using the ``NetworkInterfaces`` property of ``AWS::EC2::Instance``.",
          "type" : "integer"
        },
        "PrimaryIpv6" : {
          "description" : "The primary IPv6 address of the network interface. When you enable an IPv6 GUA address to be a primary IPv6, the first IPv6 GUA will be made the primary IPv6 address until the instance is terminated or the network interface is detached. For more information about primary IPv6 addresses, see [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html).",
          "type" : "boolean"
        },
        "Ipv4PrefixCount" : {
          "description" : "The number of IPv4 prefixes to be automatically assigned to the network interface. You cannot use this option if you use the ``Ipv4Prefix`` option.",
          "type" : "integer"
        },
        "EnaQueueCount" : {
          "description" : "The number of ENA queues to be created with the instance.",
          "type" : "integer"
        },
        "Ipv6Prefixes" : {
          "uniqueItems" : false,
          "description" : "One or more IPv6 prefixes to be assigned to the network interface. You cannot use this option if you use the ``Ipv6PrefixCount`` option.",
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/Ipv6PrefixSpecification"
          }
        },
        "SubnetId" : {
          "description" : "The ID of the subnet for the network interface.",
          "type" : "string"
        },
        "Ipv6Addresses" : {
          "uniqueItems" : false,
          "description" : "One or more specific IPv6 addresses from the IPv6 CIDR block range of your subnet. You can't use this option if you're specifying a number of IPv6 addresses.",
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/Ipv6Add"
          }
        },
        "AssociatePublicIpAddress" : {
          "description" : "Associates a public IPv4 address with eth0 for a new network interface.\n AWS charges for all public IPv4 addresses, including public IPv4 addresses associated with running instances and Elastic IP addresses. For more information, see the *Public IPv4 Address* tab on the [Amazon VPC pricing page](https://docs.aws.amazon.com/vpc/pricing/).",
          "type" : "boolean"
        },
        "NetworkInterfaceId" : {
          "description" : "The ID of the network interface.",
          "type" : "string"
        },
        "NetworkCardIndex" : {
          "description" : "The index of the network card. Some instance types support multiple network cards. The primary network interface must be assigned to network card index 0. The default is network card index 0.",
          "type" : "integer"
        },
        "InterfaceType" : {
          "description" : "The type of network interface. To create an Elastic Fabric Adapter (EFA), specify ``efa`` or ``efa``. For more information, see [Elastic Fabric Adapter for AI/ML and HPC workloads on Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html) in the *Amazon EC2 User Guide*.\n If you are not creating an EFA, specify ``interface`` or omit this parameter.\n If you specify ``efa-only``, do not assign any IP addresses to the network interface. EFA-only network interfaces do not support IP addresses.\n Valid values: ``interface`` | ``efa`` | ``efa-only``",
          "type" : "string"
        },
        "AssociateCarrierIpAddress" : {
          "description" : "Associates a Carrier IP address with eth0 for a new network interface.\n Use this option when you launch an instance in a Wavelength Zone and want to associate a Carrier IP address with the network interface. For more information about Carrier IP addresses, see [Carrier IP addresses](https://docs.aws.amazon.com/wavelength/latest/developerguide/how-wavelengths-work.html#provider-owned-ip) in the *Developer Guide*.",
          "type" : "boolean"
        },
        "EnaSrdSpecification" : {
          "description" : "The ENA Express configuration for the network interface.",
          "$ref" : "#/definitions/EnaSrdSpecification"
        },
        "Ipv6AddressCount" : {
          "description" : "The number of IPv6 addresses to assign to a network interface. Amazon EC2 automatically selects the IPv6 addresses from the subnet range. You can't use this option if specifying specific IPv6 addresses.",
          "type" : "integer"
        },
        "Groups" : {
          "uniqueItems" : false,
          "description" : "The IDs of one or more security groups.",
          "type" : "array",
          "items" : {
            "type" : "string"
          }
        },
        "DeleteOnTermination" : {
          "description" : "Indicates whether the network interface is deleted when the instance is terminated.",
          "type" : "boolean"
        },
        "ConnectionTrackingSpecification" : {
          "description" : "A connection tracking specification for the network interface.",
          "$ref" : "#/definitions/ConnectionTrackingSpecification"
        }
      }
    },
    "PrivateDnsNameOptions" : {
      "description" : "The hostname type for EC2 instances launched into this subnet and how DNS A and AAAA record queries should be handled. For more information, see [Amazon EC2 instance hostname types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) in the *User Guide*.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "EnableResourceNameDnsARecord" : {
          "description" : "Indicates whether to respond to DNS queries for instance hostnames with DNS A records.",
          "type" : "boolean"
        },
        "HostnameType" : {
          "description" : "The type of hostname for EC2 instances. 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](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) in the *User Guide*.",
          "type" : "string"
        },
        "EnableResourceNameDnsAAAARecord" : {
          "description" : "Indicates whether to respond to DNS queries for instance hostnames with DNS AAAA records.",
          "type" : "boolean"
        }
      }
    },
    "PrivateIpAdd" : {
      "description" : "Specifies a secondary private IPv4 address for a network interface.\n ``PrivateIpAdd`` is a property of [AWS::EC2::LaunchTemplate NetworkInterface](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html).",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "PrivateIpAddress" : {
          "description" : "The private IPv4 address.",
          "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"
        }
      }
    },
    "Ipv6PrefixSpecification" : {
      "description" : "Specifies an IPv6 prefix for a network interface.\n ``Ipv6PrefixSpecification`` is a property of [AWS::EC2::LaunchTemplate NetworkInterface](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-networkinterface.html).",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Ipv6Prefix" : {
          "description" : "The IPv6 prefix.",
          "type" : "string"
        }
      }
    },
    "LaunchTemplateTagSpecification" : {
      "description" : "Specifies the tags to apply to the launch template during creation.\n To specify the tags for the resources that are created during instance launch, use [AWS::EC2::LaunchTemplate TagSpecification](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-tagspecification.html).\n ``LaunchTemplateTagSpecification`` is a property of [AWS::EC2::LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html).",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "ResourceType" : {
          "description" : "The type of resource. To tag a launch template, ``ResourceType`` must be ``launch-template``.",
          "type" : "string"
        },
        "Tags" : {
          "uniqueItems" : false,
          "description" : "The tags for the resource.",
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/Tag"
          }
        }
      }
    },
    "TagSpecification" : {
      "description" : "Specifies the tags to apply to resources that are created during instance launch.\n ``TagSpecification`` is a property type of [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-tagspecifications). [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-tagspecifications) is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "ResourceType" : {
          "description" : "The type of resource to tag. You can specify tags for the following resource types only: ``instance`` | ``volume`` | ``network-interface`` | ``spot-instances-request``. If the instance does not include the resource type that you specify, the instance launch fails. For example, not all instance types include a volume.\n To tag a resource after it has been created, see [CreateTags](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html).",
          "type" : "string"
        },
        "Tags" : {
          "uniqueItems" : false,
          "description" : "The tags to apply to the resource.",
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/Tag"
          }
        }
      }
    },
    "EnaSrdUdpSpecification" : {
      "description" : "ENA Express is compatible with both TCP and UDP transport protocols. When it's enabled, TCP traffic automatically uses it. However, some UDP-based applications are designed to handle network packets that are out of order, without a need for retransmission, such as live video broadcasting or other near-real-time applications. For UDP traffic, you can specify whether to use ENA Express, based on your application environment needs.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "EnaSrdUdpEnabled" : {
          "description" : "Indicates whether UDP traffic to and from the instance uses ENA Express. To specify this setting, you must first enable ENA Express.",
          "type" : "boolean"
        }
      }
    },
    "NetworkBandwidthGbps" : {
      "description" : "The minimum and maximum amount of network bandwidth, in gigabits per second (Gbps).\n  Setting the minimum bandwidth does not guarantee that your instance will achieve the minimum bandwidth. Amazon EC2 will identify instance types that support the specified minimum bandwidth, but the actual bandwidth of your instance might go below the specified minimum at times. For more information, see [Available instance bandwidth](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-network-bandwidth.html#available-instance-bandwidth) in the *Amazon EC2 User Guide*.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Min" : {
          "description" : "The minimum amount of network bandwidth, in Gbps. If this parameter is not specified, there is no minimum limit.",
          "type" : "number"
        },
        "Max" : {
          "description" : "The maximum amount of network bandwidth, in Gbps. To specify no maximum limit, omit this parameter.",
          "type" : "number"
        }
      }
    },
    "AcceleratorCount" : {
      "description" : "The minimum and maximum number of accelerators (GPUs, FPGAs, or AWS Inferentia chips) on an instance.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Min" : {
          "description" : "The minimum number of accelerators. To specify no minimum limit, omit this parameter.",
          "type" : "integer"
        },
        "Max" : {
          "description" : "The maximum number of accelerators. To specify no maximum limit, omit this parameter. To exclude accelerator-enabled instance types, set ``Max`` to ``0``.",
          "type" : "integer"
        }
      }
    },
    "InstanceMarketOptions" : {
      "description" : "Specifies the market (purchasing) option for an instance.\n ``InstanceMarketOptions`` is a property of the [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "SpotOptions" : {
          "description" : "The options for Spot Instances.",
          "$ref" : "#/definitions/SpotOptions"
        },
        "MarketType" : {
          "description" : "The market type.",
          "type" : "string"
        }
      }
    },
    "References" : {
      "uniqueItems" : true,
      "description" : "A list of references to be used as baseline for the CPU performance. Currently, you can only specify a single reference across different instance type variations such as CPU manufacturers, architectures etc.",
      "insertionOrder" : true,
      "type" : "array",
      "items" : {
        "$ref" : "#/definitions/Reference"
      }
    },
    "BaselinePerformanceFactors" : {
      "description" : "The baseline performance to consider, using an instance family as a baseline reference. The instance family establishes the lowest acceptable level of performance. Amazon EC2 uses this baseline to guide instance type selection, but there is no guarantee that the selected instance types will always exceed the baseline for every application.\n Currently, this parameter only supports CPU performance as a baseline performance factor. For example, specifying ``c6i`` would use the CPU performance of the ``c6i`` family as the baseline reference.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Cpu" : {
          "description" : "The CPU performance to consider, using an instance family as the baseline reference.",
          "$ref" : "#/definitions/Cpu"
        }
      }
    },
    "BaselineEbsBandwidthMbps" : {
      "description" : "The minimum and maximum baseline bandwidth to Amazon EBS, in Mbps. For more information, see [Amazon EBS–optimized instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html) in the *Amazon EC2 User Guide*.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Min" : {
          "description" : "The minimum baseline bandwidth, in Mbps. To specify no minimum limit, omit this parameter.",
          "type" : "integer"
        },
        "Max" : {
          "description" : "The maximum baseline bandwidth, in Mbps. To specify no maximum limit, omit this parameter.",
          "type" : "integer"
        }
      }
    },
    "InstanceRequirements" : {
      "description" : "The attributes for the instance types. When you specify instance attributes, Amazon EC2 will identify instance types with these attributes.\n You must specify ``VCpuCount`` and ``MemoryMiB``. All other attributes are optional. Any unspecified optional attribute is set to its default.\n When you specify multiple attributes, you get instance types that satisfy all of the specified attributes. If you specify multiple values for an attribute, you get instance types that satisfy any of the specified values.\n To limit the list of instance types from which Amazon EC2 can identify matching instance types, you can use one of the following parameters, but not both in the same request:\n  +  ``AllowedInstanceTypes`` - The instance types to include in the list. All other instance types are ignored, even if they match your specified attributes.\n  +  ``ExcludedInstanceTypes`` - The instance types to exclude from the list, even if they match your specified attributes.\n  \n  If you specify ``InstanceRequirements``, you can't specify ``InstanceType``.\n Attribute-based instance type selection is only supported when using Auto Scaling groups, EC2 Fleet, and Spot Fleet to launch instances. If you plan to use the launch template in the [launch instance wizard](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html), or with the [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) API or [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html)AWS CloudFormation resource, you can't specify ``InstanceRequirements``.\n  For more information, see [Specify attributes for instance type selection for EC2 Fleet or Spot Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html) and [Spot placement score](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-placement-score.html) in the *Amazon EC2 User Guide*.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "InstanceGenerations" : {
          "uniqueItems" : false,
          "description" : "Indicates whether current or previous generation instance types are included. The current generation instance types are recommended for use. Current generation instance types are typically the latest two to three generations in each instance family. For more information, see [Instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) in the *Amazon EC2 User Guide*.\n For current generation instance types, specify ``current``.\n For previous generation instance types, specify ``previous``.\n Default: Current and previous generation instance types",
          "type" : "array",
          "items" : {
            "type" : "string"
          }
        },
        "MemoryGiBPerVCpu" : {
          "description" : "The minimum and maximum amount of memory per vCPU, in GiB.\n Default: No minimum or maximum limits",
          "$ref" : "#/definitions/MemoryGiBPerVCpu"
        },
        "AcceleratorTypes" : {
          "uniqueItems" : false,
          "description" : "The accelerator types that must be on the instance type.\n  +  For instance types with FPGA accelerators, specify ``fpga``.\n  +  For instance types with GPU accelerators, specify ``gpu``.\n  +  For instance types with Inference accelerators, specify ``inference``.\n  +  For instance types with Media accelerators, specify ``media``.\n  \n Default: Any accelerator type",
          "type" : "array",
          "items" : {
            "type" : "string"
          }
        },
        "VCpuCount" : {
          "description" : "The minimum and maximum number of vCPUs.",
          "$ref" : "#/definitions/VCpuCount"
        },
        "AcceleratorManufacturers" : {
          "uniqueItems" : false,
          "description" : "Indicates whether instance types must have accelerators by specific manufacturers.\n  +  For instance types with AWS devices, specify ``amazon-web-services``.\n  +  For instance types with AMD devices, specify ``amd``.\n  +  For instance types with Habana devices, specify ``habana``.\n  +  For instance types with NVIDIA devices, specify ``nvidia``.\n  +  For instance types with Xilinx devices, specify ``xilinx``.\n  \n Default: Any manufacturer",
          "type" : "array",
          "items" : {
            "type" : "string"
          }
        },
        "LocalStorage" : {
          "description" : "Indicates whether instance types with instance store volumes are included, excluded, or required. For more information, [Amazon EC2 instance store](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html) in the *Amazon EC2 User Guide*.\n  +  To include instance types with instance store volumes, specify ``included``.\n  +  To require only instance types with instance store volumes, specify ``required``.\n  +  To exclude instance types with instance store volumes, specify ``excluded``.\n  \n Default: ``included``",
          "type" : "string"
        },
        "CpuManufacturers" : {
          "uniqueItems" : false,
          "description" : "The CPU manufacturers to include.\n  +  For instance types with Intel CPUs, specify ``intel``.\n  +  For instance types with AMD CPUs, specify ``amd``.\n  +  For instance types with AWS CPUs, specify ``amazon-web-services``.\n  +  For instance types with Apple CPUs, specify ``apple``.\n  \n  Don't confuse the CPU manufacturer with the CPU architecture. Instances will be launched with a compatible CPU architecture based on the Amazon Machine Image (AMI) that you specify in your launch template.\n  Default: Any manufacturer",
          "type" : "array",
          "items" : {
            "type" : "string"
          }
        },
        "BareMetal" : {
          "description" : "Indicates whether bare metal instance types must be included, excluded, or required.\n  +  To include bare metal instance types, specify ``included``.\n  +  To require only bare metal instance types, specify ``required``.\n  +  To exclude bare metal instance types, specify ``excluded``.\n  \n Default: ``excluded``",
          "type" : "string"
        },
        "RequireHibernateSupport" : {
          "description" : "Indicates whether instance types must support hibernation for On-Demand Instances.\n This parameter is not supported for [GetSpotPlacementScores](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetSpotPlacementScores.html).\n Default: ``false``",
          "type" : "boolean"
        },
        "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice" : {
          "description" : "[Price protection] The price protection threshold for Spot Instances, as a percentage of an identified On-Demand price. The identified On-Demand price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified price is from the lowest priced current generation instance types, and failing that, from the lowest priced previous generation instance types that match your attributes. When Amazon EC2 selects instance types with your attributes, it will exclude instance types whose price exceeds your specified threshold.\n The parameter accepts an integer, which Amazon EC2 interprets as a percentage.\n If you set ``TargetCapacityUnitType`` to ``vcpu`` or ``memory-mib``, the price protection threshold is based on the per vCPU or per memory price instead of the per instance price.\n  Only one of ``SpotMaxPricePercentageOverLowestPrice`` or ``MaxSpotPriceAsPercentageOfOptimalOnDemandPrice`` can be specified. If you don't specify either, Amazon EC2 will automatically apply optimal price protection to consistently select from a wide range of instance types. To indicate no price protection threshold for Spot Instances, meaning you want to consider all instance types that match your attributes, include one of these parameters and specify a high value, such as ``999999``.",
          "type" : "integer"
        },
        "OnDemandMaxPricePercentageOverLowestPrice" : {
          "description" : "[Price protection] The price protection threshold for On-Demand Instances, as a percentage higher than an identified On-Demand price. The identified On-Demand price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. When Amazon EC2 selects instance types with your attributes, it will exclude instance types whose price exceeds your specified threshold.\n The parameter accepts an integer, which Amazon EC2 interprets as a percentage.\n To turn off price protection, specify a high value, such as ``999999``.\n This parameter is not supported for [GetSpotPlacementScores](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetSpotPlacementScores.html) and [GetInstanceTypesFromInstanceRequirements](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetInstanceTypesFromInstanceRequirements.html).\n  If you set ``TargetCapacityUnitType`` to ``vcpu`` or ``memory-mib``, the price protection threshold is applied based on the per-vCPU or per-memory price instead of the per-instance price.\n  Default: ``20``",
          "type" : "integer"
        },
        "MemoryMiB" : {
          "description" : "The minimum and maximum amount of memory, in MiB.",
          "$ref" : "#/definitions/MemoryMiB"
        },
        "LocalStorageTypes" : {
          "uniqueItems" : false,
          "description" : "The type of local storage that is required.\n  +  For instance types with hard disk drive (HDD) storage, specify ``hdd``.\n  +  For instance types with solid state drive (SSD) storage, specify ``ssd``.\n  \n Default: ``hdd`` and ``ssd``",
          "type" : "array",
          "items" : {
            "type" : "string"
          }
        },
        "NetworkInterfaceCount" : {
          "description" : "The minimum and maximum number of network interfaces.\n Default: No minimum or maximum limits",
          "$ref" : "#/definitions/NetworkInterfaceCount"
        },
        "ExcludedInstanceTypes" : {
          "uniqueItems" : false,
          "description" : "The instance types to exclude.\n You can use strings with one or more wild cards, represented by an asterisk (``*``), to exclude an instance type, size, or generation. The following are examples: ``m5.8xlarge``, ``c5*.*``, ``m5a.*``, ``r*``, ``*3*``.\n For example, if you specify ``c5*``,Amazon EC2 will exclude the entire C5 instance family, which includes all C5a and C5n instance types. If you specify ``m5a.*``, Amazon EC2 will exclude all the M5a instance types, but not the M5n instance types.\n  If you specify ``ExcludedInstanceTypes``, you can't specify ``AllowedInstanceTypes``.\n  Default: No excluded instance types",
          "type" : "array",
          "items" : {
            "description" : "The user data to make available to the instance.",
            "type" : "string"
          }
        },
        "AllowedInstanceTypes" : {
          "uniqueItems" : false,
          "description" : "The instance types to apply your specified attributes against. All other instance types are ignored, even if they match your specified attributes.\n You can use strings with one or more wild cards, represented by an asterisk (``*``), to allow an instance type, size, or generation. The following are examples: ``m5.8xlarge``, ``c5*.*``, ``m5a.*``, ``r*``, ``*3*``.\n For example, if you specify ``c5*``,Amazon EC2 will allow the entire C5 instance family, which includes all C5a and C5n instance types. If you specify ``m5a.*``, Amazon EC2 will allow all the M5a instance types, but not the M5n instance types.\n  If you specify ``AllowedInstanceTypes``, you can't specify ``ExcludedInstanceTypes``.\n  Default: All instance types",
          "type" : "array",
          "items" : {
            "type" : "string"
          }
        },
        "AcceleratorCount" : {
          "description" : "The minimum and maximum number of accelerators (GPUs, FPGAs, or AWS Inferentia chips) on an instance.\n To exclude accelerator-enabled instance types, set ``Max`` to ``0``.\n Default: No minimum or maximum limits",
          "$ref" : "#/definitions/AcceleratorCount"
        },
        "NetworkBandwidthGbps" : {
          "description" : "The minimum and maximum amount of network bandwidth, in gigabits per second (Gbps).\n Default: No minimum or maximum limits",
          "$ref" : "#/definitions/NetworkBandwidthGbps"
        },
        "BaselinePerformanceFactors" : {
          "description" : "The baseline performance to consider, using an instance family as a baseline reference. The instance family establishes the lowest acceptable level of performance. Amazon EC2 uses this baseline to guide instance type selection, but there is no guarantee that the selected instance types will always exceed the baseline for every application. Currently, this parameter only supports CPU performance as a baseline performance factor. For more information, see [Performance protection](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html#ec2fleet-abis-performance-protection) in the *Amazon EC2 User Guide*.",
          "$ref" : "#/definitions/BaselinePerformanceFactors"
        },
        "SpotMaxPricePercentageOverLowestPrice" : {
          "description" : "[Price protection] The price protection threshold for Spot Instances, as a percentage higher than an identified Spot price. The identified Spot price is the Spot price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified Spot price is from the lowest priced current generation instance types, and failing that, from the lowest priced previous generation instance types that match your attributes. When Amazon EC2 selects instance types with your attributes, it will exclude instance types whose Spot price exceeds your specified threshold.\n The parameter accepts an integer, which Amazon EC2 interprets as a percentage.\n If you set ``TargetCapacityUnitType`` to ``vcpu`` or ``memory-mib``, the price protection threshold is applied based on the per-vCPU or per-memory price instead of the per-instance price.\n This parameter is not supported for [GetSpotPlacementScores](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetSpotPlacementScores.html) and [GetInstanceTypesFromInstanceRequirements](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetInstanceTypesFromInstanceRequirements.html).\n  Only one of ``SpotMaxPricePercentageOverLowestPrice`` or ``MaxSpotPriceAsPercentageOfOptimalOnDemandPrice`` can be specified. If you don't specify either, Amazon EC2 will automatically apply optimal price protection to consistently select from a wide range of instance types. To indicate no price protection threshold for Spot Instances, meaning you want to consider all instance types that match your attributes, include one of these parameters and specify a high value, such as ``999999``.\n  Default: ``100``",
          "type" : "integer"
        },
        "BaselineEbsBandwidthMbps" : {
          "description" : "The minimum and maximum baseline bandwidth to Amazon EBS, in Mbps. For more information, see [Amazon EBS–optimized instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html) in the *Amazon EC2 User Guide*.\n Default: No minimum or maximum limits",
          "$ref" : "#/definitions/BaselineEbsBandwidthMbps"
        },
        "AcceleratorNames" : {
          "uniqueItems" : false,
          "description" : "The accelerators that must be on the instance type.\n  +  For instance types with NVIDIA A10G GPUs, specify ``a10g``.\n  +  For instance types with NVIDIA A100 GPUs, specify ``a100``.\n  +  For instance types with NVIDIA H100 GPUs, specify ``h100``.\n  +  For instance types with AWS Inferentia chips, specify ``inferentia``.\n  +  For instance types with AWS Inferentia2 chips, specify ``inferentia2``.\n  +  For instance types with Habana Gaudi HL-205 GPUs, specify ``gaudi-hl-205``.\n  +  For instance types with NVIDIA GRID K520 GPUs, specify ``k520``.\n  +  For instance types with NVIDIA K80 GPUs, specify ``k80``.\n  +  For instance types with NVIDIA L4 GPUs, specify ``l4``.\n  +  For instance types with NVIDIA L40S GPUs, specify ``l40s``.\n  +  For instance types with NVIDIA M60 GPUs, specify ``m60``.\n  +  For instance types with AMD Radeon Pro V520 GPUs, specify ``radeon-pro-v520``.\n  +  For instance types with AWS Trainium chips, specify ``trainium``.\n  +  For instance types with AWS Trainium2 chips, specify ``trainium2``.\n  +  For instance types with NVIDIA T4 GPUs, specify ``t4``.\n  +  For instance types with NVIDIA T4G GPUs, specify ``t4g``.\n  +  For instance types with Xilinx U30 cards, specify ``u30``.\n  +  For instance types with Xilinx VU9P FPGAs, specify ``vu9p``.\n  +  For instance types with NVIDIA V100 GPUs, specify ``v100``.\n  \n Default: Any accelerator",
          "type" : "array",
          "items" : {
            "type" : "string"
          }
        },
        "AcceleratorTotalMemoryMiB" : {
          "description" : "The minimum and maximum amount of total accelerator memory, in MiB.\n Default: No minimum or maximum limits",
          "$ref" : "#/definitions/AcceleratorTotalMemoryMiB"
        },
        "BurstablePerformance" : {
          "description" : "Indicates whether burstable performance T instance types are included, excluded, or required. For more information, see [Burstable performance instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html).\n  +  To include burstable performance instance types, specify ``included``.\n  +  To require only burstable performance instance types, specify ``required``.\n  +  To exclude burstable performance instance types, specify ``excluded``.\n  \n Default: ``excluded``",
          "type" : "string"
        },
        "TotalLocalStorageGB" : {
          "description" : "The minimum and maximum amount of total local storage, in GB.\n Default: No minimum or maximum limits",
          "$ref" : "#/definitions/TotalLocalStorageGB"
        }
      }
    },
    "Tag" : {
      "description" : "Specifies a tag. For more information, see [Resource tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Value" : {
          "description" : "The tag value.",
          "type" : "string"
        },
        "Key" : {
          "description" : "The tag key.",
          "type" : "string"
        }
      },
      "required" : [ "Value", "Key" ]
    },
    "AcceleratorTotalMemoryMiB" : {
      "description" : "The minimum and maximum amount of total accelerator memory, in MiB.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Min" : {
          "description" : "The minimum amount of accelerator memory, in MiB. To specify no minimum limit, omit this parameter.",
          "type" : "integer"
        },
        "Max" : {
          "description" : "The maximum amount of accelerator memory, in MiB. To specify no maximum limit, omit this parameter.",
          "type" : "integer"
        }
      }
    },
    "CapacityReservationTarget" : {
      "description" : "Specifies a target Capacity Reservation.\n ``CapacityReservationTarget`` is a property of the [Amazon EC2 LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html) property type.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "CapacityReservationResourceGroupArn" : {
          "description" : "The ARN of the Capacity Reservation resource group in which to run the instance.",
          "type" : "string"
        },
        "CapacityReservationId" : {
          "description" : "The ID of the Capacity Reservation in which to run the instance.",
          "type" : "string"
        }
      }
    },
    "CapacityReservationSpecification" : {
      "description" : "Specifies an instance's Capacity Reservation targeting option. You can specify only one option at a time.\n ``CapacityReservationSpecification`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "CapacityReservationPreference" : {
          "description" : "Indicates the instance's Capacity Reservation preferences. Possible preferences include:\n  +  ``capacity-reservations-only`` - The instance will only run in a Capacity Reservation or Capacity Reservation group. If capacity isn't available, the instance will fail to launch.\n  +  ``open`` - The instance can run in any ``open`` Capacity Reservation that has matching attributes (instance type, platform, Availability Zone, tenancy).\n  +  ``none`` - The instance avoids running in a Capacity Reservation even if one is available. The instance runs in On-Demand capacity.",
          "type" : "string"
        },
        "CapacityReservationTarget" : {
          "description" : "Information about the target Capacity Reservation or Capacity Reservation group.",
          "$ref" : "#/definitions/CapacityReservationTarget"
        }
      }
    },
    "CreditSpecification" : {
      "description" : "Specifies the credit option for CPU usage of a T2, T3, or T3a instance.\n ``CreditSpecification`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "CpuCredits" : {
          "description" : "The credit option for CPU usage of a T instance.\n Valid values: ``standard`` | ``unlimited``",
          "type" : "string"
        }
      }
    },
    "TotalLocalStorageGB" : {
      "description" : "The minimum and maximum amount of total local storage, in GB.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Min" : {
          "description" : "The minimum amount of total local storage, in GB. To specify no minimum limit, omit this parameter.",
          "type" : "number"
        },
        "Max" : {
          "description" : "The maximum amount of total local storage, in GB. To specify no maximum limit, omit this parameter.",
          "type" : "number"
        }
      }
    },
    "ConnectionTrackingSpecification" : {
      "description" : "A security group connection tracking specification that enables you to set the idle timeout for connection tracking on an Elastic network interface. For more information, see [Connection tracking timeouts](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-connection-tracking.html#connection-tracking-timeouts) in the *Amazon EC2 User Guide*.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "UdpTimeout" : {
          "description" : "Timeout (in seconds) for idle UDP flows that have seen traffic only in a single direction or a single request-response transaction. Min: 30 seconds. Max: 60 seconds. Default: 30 seconds.",
          "type" : "integer"
        },
        "TcpEstablishedTimeout" : {
          "description" : "Timeout (in seconds) for idle TCP connections in an established state. Min: 60 seconds. Max: 432000 seconds (5 days). Default: 350 seconds for Nitro v6 instance types (excluding P6e-GB200); 432000 seconds for all other instance types (including P6e-GB200). Recommended: Less than 432000 seconds.",
          "type" : "integer"
        },
        "UdpStreamTimeout" : {
          "description" : "Timeout (in seconds) for idle UDP flows classified as streams which have seen more than one request-response transaction. Min: 60 seconds. Max: 180 seconds (3 minutes). Default: 180 seconds.",
          "type" : "integer"
        }
      }
    }
  },
  "required" : [ "LaunchTemplateData" ],
  "properties" : {
    "LaunchTemplateName" : {
      "description" : "A name for the launch template.",
      "type" : "string"
    },
    "LaunchTemplateData" : {
      "description" : "The information for the launch template.",
      "$ref" : "#/definitions/LaunchTemplateData"
    },
    "VersionDescription" : {
      "description" : "A description for the first version of the launch template.",
      "type" : "string"
    },
    "TagSpecifications" : {
      "uniqueItems" : false,
      "description" : "The tags to apply to the launch template on creation. To tag the launch template, the resource type must be ``launch-template``.\n To specify the tags for resources that are created during instance launch, use [TagSpecifications](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-tagspecifications).",
      "type" : "array",
      "items" : {
        "$ref" : "#/definitions/LaunchTemplateTagSpecification"
      }
    },
    "LatestVersionNumber" : {
      "description" : "",
      "type" : "string"
    },
    "LaunchTemplateId" : {
      "description" : "",
      "type" : "string"
    },
    "DefaultVersionNumber" : {
      "description" : "",
      "type" : "string"
    }
  }
}