{
  "typeName" : "AWS::EC2::LaunchTemplate",
  "description" : "Resource Type definition for AWS::EC2::LaunchTemplate",
  "additionalProperties" : false,
  "properties" : {
    "LaunchTemplateName" : {
      "type" : "string"
    },
    "LaunchTemplateData" : {
      "$ref" : "#/definitions/LaunchTemplateData"
    },
    "VersionDescription" : {
      "type" : "string"
    },
    "TagSpecifications" : {
      "type" : "array",
      "uniqueItems" : false,
      "items" : {
        "$ref" : "#/definitions/LaunchTemplateTagSpecification"
      }
    },
    "LatestVersionNumber" : {
      "type" : "string"
    },
    "Id" : {
      "type" : "string"
    },
    "DefaultVersionNumber" : {
      "type" : "string"
    }
  },
  "definitions" : {
    "LaunchTemplateData" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "SecurityGroups" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "type" : "string"
          }
        },
        "TagSpecifications" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "$ref" : "#/definitions/TagSpecification"
          }
        },
        "UserData" : {
          "type" : "string"
        },
        "BlockDeviceMappings" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "$ref" : "#/definitions/BlockDeviceMapping"
          }
        },
        "MaintenanceOptions" : {
          "$ref" : "#/definitions/MaintenanceOptions"
        },
        "IamInstanceProfile" : {
          "$ref" : "#/definitions/IamInstanceProfile"
        },
        "KernelId" : {
          "type" : "string"
        },
        "EbsOptimized" : {
          "type" : "boolean"
        },
        "ElasticGpuSpecifications" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "$ref" : "#/definitions/ElasticGpuSpecification"
          }
        },
        "ElasticInferenceAccelerators" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "$ref" : "#/definitions/LaunchTemplateElasticInferenceAccelerator"
          }
        },
        "Placement" : {
          "$ref" : "#/definitions/Placement"
        },
        "NetworkInterfaces" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "$ref" : "#/definitions/NetworkInterface"
          }
        },
        "EnclaveOptions" : {
          "$ref" : "#/definitions/EnclaveOptions"
        },
        "ImageId" : {
          "type" : "string"
        },
        "InstanceType" : {
          "type" : "string"
        },
        "Monitoring" : {
          "$ref" : "#/definitions/Monitoring"
        },
        "HibernationOptions" : {
          "$ref" : "#/definitions/HibernationOptions"
        },
        "MetadataOptions" : {
          "$ref" : "#/definitions/MetadataOptions"
        },
        "LicenseSpecifications" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "$ref" : "#/definitions/LicenseSpecification"
          }
        },
        "InstanceInitiatedShutdownBehavior" : {
          "type" : "string"
        },
        "DisableApiStop" : {
          "type" : "boolean"
        },
        "CpuOptions" : {
          "$ref" : "#/definitions/CpuOptions"
        },
        "PrivateDnsNameOptions" : {
          "$ref" : "#/definitions/PrivateDnsNameOptions"
        },
        "SecurityGroupIds" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "type" : "string"
          }
        },
        "KeyName" : {
          "type" : "string"
        },
        "DisableApiTermination" : {
          "type" : "boolean"
        },
        "InstanceMarketOptions" : {
          "$ref" : "#/definitions/InstanceMarketOptions"
        },
        "InstanceRequirements" : {
          "$ref" : "#/definitions/InstanceRequirements"
        },
        "RamDiskId" : {
          "type" : "string"
        },
        "CapacityReservationSpecification" : {
          "$ref" : "#/definitions/CapacityReservationSpecification"
        },
        "CreditSpecification" : {
          "$ref" : "#/definitions/CreditSpecification"
        }
      }
    },
    "Ipv6Add" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Ipv6Address" : {
          "type" : "string"
        }
      }
    },
    "LicenseSpecification" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "LicenseConfigurationArn" : {
          "type" : "string"
        }
      }
    },
    "MaintenanceOptions" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "AutoRecovery" : {
          "type" : "string"
        }
      }
    },
    "ElasticGpuSpecification" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Type" : {
          "type" : "string"
        }
      }
    },
    "IamInstanceProfile" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Arn" : {
          "type" : "string"
        },
        "Name" : {
          "type" : "string"
        }
      }
    },
    "MemoryGiBPerVCpu" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Max" : {
          "type" : "number"
        },
        "Min" : {
          "type" : "number"
        }
      }
    },
    "VCpuCount" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Max" : {
          "type" : "integer"
        },
        "Min" : {
          "type" : "integer"
        }
      }
    },
    "Ipv4PrefixSpecification" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Ipv4Prefix" : {
          "type" : "string"
        }
      }
    },
    "Placement" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "GroupName" : {
          "type" : "string"
        },
        "Tenancy" : {
          "type" : "string"
        },
        "SpreadDomain" : {
          "type" : "string"
        },
        "PartitionNumber" : {
          "type" : "integer"
        },
        "AvailabilityZone" : {
          "type" : "string"
        },
        "Affinity" : {
          "type" : "string"
        },
        "HostId" : {
          "type" : "string"
        },
        "HostResourceGroupArn" : {
          "type" : "string"
        },
        "GroupId" : {
          "type" : "string"
        }
      }
    },
    "EnclaveOptions" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Enabled" : {
          "type" : "boolean"
        }
      }
    },
    "Ebs" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "SnapshotId" : {
          "type" : "string"
        },
        "VolumeType" : {
          "type" : "string"
        },
        "KmsKeyId" : {
          "type" : "string"
        },
        "Encrypted" : {
          "type" : "boolean"
        },
        "Throughput" : {
          "type" : "integer"
        },
        "Iops" : {
          "type" : "integer"
        },
        "VolumeSize" : {
          "type" : "integer"
        },
        "DeleteOnTermination" : {
          "type" : "boolean"
        }
      }
    },
    "BlockDeviceMapping" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "NoDevice" : {
          "type" : "string"
        },
        "VirtualName" : {
          "type" : "string"
        },
        "Ebs" : {
          "$ref" : "#/definitions/Ebs"
        },
        "DeviceName" : {
          "type" : "string"
        }
      }
    },
    "Monitoring" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Enabled" : {
          "type" : "boolean"
        }
      }
    },
    "MemoryMiB" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Max" : {
          "type" : "integer"
        },
        "Min" : {
          "type" : "integer"
        }
      }
    },
    "HibernationOptions" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Configured" : {
          "type" : "boolean"
        }
      }
    },
    "MetadataOptions" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "HttpPutResponseHopLimit" : {
          "type" : "integer"
        },
        "HttpTokens" : {
          "type" : "string"
        },
        "HttpProtocolIpv6" : {
          "type" : "string"
        },
        "InstanceMetadataTags" : {
          "type" : "string"
        },
        "HttpEndpoint" : {
          "type" : "string"
        }
      }
    },
    "NetworkInterfaceCount" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Max" : {
          "type" : "integer"
        },
        "Min" : {
          "type" : "integer"
        }
      }
    },
    "CpuOptions" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "ThreadsPerCore" : {
          "type" : "integer"
        },
        "CoreCount" : {
          "type" : "integer"
        }
      }
    },
    "SpotOptions" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "InstanceInterruptionBehavior" : {
          "type" : "string"
        },
        "MaxPrice" : {
          "type" : "string"
        },
        "SpotInstanceType" : {
          "type" : "string"
        },
        "BlockDurationMinutes" : {
          "type" : "integer"
        },
        "ValidUntil" : {
          "type" : "string"
        }
      }
    },
    "NetworkInterface" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Description" : {
          "type" : "string"
        },
        "PrivateIpAddress" : {
          "type" : "string"
        },
        "PrivateIpAddresses" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "$ref" : "#/definitions/PrivateIpAdd"
          }
        },
        "SecondaryPrivateIpAddressCount" : {
          "type" : "integer"
        },
        "Ipv6PrefixCount" : {
          "type" : "integer"
        },
        "Ipv4Prefixes" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "$ref" : "#/definitions/Ipv4PrefixSpecification"
          }
        },
        "DeviceIndex" : {
          "type" : "integer"
        },
        "Ipv4PrefixCount" : {
          "type" : "integer"
        },
        "Ipv6Prefixes" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "$ref" : "#/definitions/Ipv6PrefixSpecification"
          }
        },
        "SubnetId" : {
          "type" : "string"
        },
        "Ipv6Addresses" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "$ref" : "#/definitions/Ipv6Add"
          }
        },
        "AssociatePublicIpAddress" : {
          "type" : "boolean"
        },
        "NetworkInterfaceId" : {
          "type" : "string"
        },
        "NetworkCardIndex" : {
          "type" : "integer"
        },
        "InterfaceType" : {
          "type" : "string"
        },
        "AssociateCarrierIpAddress" : {
          "type" : "boolean"
        },
        "Ipv6AddressCount" : {
          "type" : "integer"
        },
        "Groups" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "type" : "string"
          }
        },
        "DeleteOnTermination" : {
          "type" : "boolean"
        }
      }
    },
    "PrivateDnsNameOptions" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "HostnameType" : {
          "type" : "string"
        },
        "EnableResourceNameDnsAAAARecord" : {
          "type" : "boolean"
        },
        "EnableResourceNameDnsARecord" : {
          "type" : "boolean"
        }
      }
    },
    "PrivateIpAdd" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "PrivateIpAddress" : {
          "type" : "string"
        },
        "Primary" : {
          "type" : "boolean"
        }
      }
    },
    "Ipv6PrefixSpecification" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Ipv6Prefix" : {
          "type" : "string"
        }
      }
    },
    "LaunchTemplateTagSpecification" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "ResourceType" : {
          "type" : "string"
        },
        "Tags" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "$ref" : "#/definitions/Tag"
          }
        }
      }
    },
    "TagSpecification" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "ResourceType" : {
          "type" : "string"
        },
        "Tags" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "$ref" : "#/definitions/Tag"
          }
        }
      }
    },
    "NetworkBandwidthGbps" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Max" : {
          "type" : "number"
        },
        "Min" : {
          "type" : "number"
        }
      }
    },
    "AcceleratorCount" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Max" : {
          "type" : "integer"
        },
        "Min" : {
          "type" : "integer"
        }
      }
    },
    "InstanceMarketOptions" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "SpotOptions" : {
          "$ref" : "#/definitions/SpotOptions"
        },
        "MarketType" : {
          "type" : "string"
        }
      }
    },
    "LaunchTemplateElasticInferenceAccelerator" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Type" : {
          "type" : "string"
        },
        "Count" : {
          "type" : "integer"
        }
      }
    },
    "BaselineEbsBandwidthMbps" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Max" : {
          "type" : "integer"
        },
        "Min" : {
          "type" : "integer"
        }
      }
    },
    "InstanceRequirements" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "LocalStorageTypes" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "type" : "string"
          }
        },
        "InstanceGenerations" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "type" : "string"
          }
        },
        "NetworkInterfaceCount" : {
          "$ref" : "#/definitions/NetworkInterfaceCount"
        },
        "MemoryGiBPerVCpu" : {
          "$ref" : "#/definitions/MemoryGiBPerVCpu"
        },
        "AcceleratorTypes" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "type" : "string"
          }
        },
        "VCpuCount" : {
          "$ref" : "#/definitions/VCpuCount"
        },
        "ExcludedInstanceTypes" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "type" : "string"
          }
        },
        "AcceleratorManufacturers" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "type" : "string"
          }
        },
        "AllowedInstanceTypes" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "type" : "string"
          }
        },
        "LocalStorage" : {
          "type" : "string"
        },
        "CpuManufacturers" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "type" : "string"
          }
        },
        "AcceleratorCount" : {
          "$ref" : "#/definitions/AcceleratorCount"
        },
        "NetworkBandwidthGbps" : {
          "$ref" : "#/definitions/NetworkBandwidthGbps"
        },
        "BareMetal" : {
          "type" : "string"
        },
        "RequireHibernateSupport" : {
          "type" : "boolean"
        },
        "SpotMaxPricePercentageOverLowestPrice" : {
          "type" : "integer"
        },
        "BaselineEbsBandwidthMbps" : {
          "$ref" : "#/definitions/BaselineEbsBandwidthMbps"
        },
        "OnDemandMaxPricePercentageOverLowestPrice" : {
          "type" : "integer"
        },
        "AcceleratorNames" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "type" : "string"
          }
        },
        "AcceleratorTotalMemoryMiB" : {
          "$ref" : "#/definitions/AcceleratorTotalMemoryMiB"
        },
        "BurstablePerformance" : {
          "type" : "string"
        },
        "MemoryMiB" : {
          "$ref" : "#/definitions/MemoryMiB"
        },
        "TotalLocalStorageGB" : {
          "$ref" : "#/definitions/TotalLocalStorageGB"
        }
      }
    },
    "Tag" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Value" : {
          "type" : "string"
        },
        "Key" : {
          "type" : "string"
        }
      },
      "required" : [ "Value", "Key" ]
    },
    "AcceleratorTotalMemoryMiB" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Max" : {
          "type" : "integer"
        },
        "Min" : {
          "type" : "integer"
        }
      }
    },
    "CapacityReservationTarget" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "CapacityReservationResourceGroupArn" : {
          "type" : "string"
        },
        "CapacityReservationId" : {
          "type" : "string"
        }
      }
    },
    "CapacityReservationSpecification" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "CapacityReservationTarget" : {
          "$ref" : "#/definitions/CapacityReservationTarget"
        },
        "CapacityReservationPreference" : {
          "type" : "string"
        }
      }
    },
    "CreditSpecification" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "CpuCredits" : {
          "type" : "string"
        }
      }
    },
    "TotalLocalStorageGB" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Max" : {
          "type" : "number"
        },
        "Min" : {
          "type" : "number"
        }
      }
    }
  },
  "required" : [ "LaunchTemplateData" ],
  "createOnlyProperties" : [ "/properties/LaunchTemplateName" ],
  "primaryIdentifier" : [ "/properties/Id" ],
  "readOnlyProperties" : [ "/properties/DefaultVersionNumber", "/properties/Id", "/properties/LatestVersionNumber" ]
}