{
  "description": "LaunchTemplate is the Schema for the LaunchTemplates API",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": "string"
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "LaunchTemplateSpec defines the desired state of LaunchTemplate.\n\nDescribes a launch template.",
      "properties": {
        "data": {
          "description": "The information for the launch template.",
          "properties": {
            "blockDeviceMappings": {
              "items": {
                "description": "Describes a block device mapping.",
                "properties": {
                  "deviceName": {
                    "type": "string"
                  },
                  "ebs": {
                    "description": "The parameters for a block device for an EBS volume.",
                    "properties": {
                      "deleteOnTermination": {
                        "type": "boolean"
                      },
                      "encrypted": {
                        "type": "boolean"
                      },
                      "iops": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "kmsKeyID": {
                        "type": "string"
                      },
                      "snapshotID": {
                        "type": "string"
                      },
                      "throughput": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "volumeSize": {
                        "format": "int64",
                        "type": "integer"
                      },
                      "volumeType": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "noDevice": {
                    "type": "string"
                  },
                  "virtualName": {
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "capacityReservationSpecification": {
              "description": "Describes an instance's Capacity Reservation targeting option. You can specify\nonly one option at a time. Use the CapacityReservationPreference parameter\nto configure the instance to run in On-Demand capacity or to run in any open\nCapacity Reservation that has matching attributes (instance type, platform,\nAvailability Zone). Use the CapacityReservationTarget parameter to explicitly\ntarget a specific Capacity Reservation or a Capacity Reservation group.",
              "properties": {
                "capacityReservationPreference": {
                  "type": "string"
                },
                "capacityReservationTarget": {
                  "description": "Describes a target Capacity Reservation or Capacity Reservation group.",
                  "properties": {
                    "capacityReservationID": {
                      "type": "string"
                    },
                    "capacityReservationResourceGroupARN": {
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "cpuOptions": {
              "description": "The CPU options for the instance. Both the core count and threads per core\nmust be specified in the request.",
              "properties": {
                "amdSevSnp": {
                  "type": "string"
                },
                "coreCount": {
                  "format": "int64",
                  "type": "integer"
                },
                "threadsPerCore": {
                  "format": "int64",
                  "type": "integer"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "creditSpecification": {
              "description": "The credit option for CPU usage of a T instance.",
              "properties": {
                "cpuCredits": {
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "disableAPIStop": {
              "type": "boolean"
            },
            "disableAPITermination": {
              "type": "boolean"
            },
            "ebsOptimized": {
              "type": "boolean"
            },
            "elasticGPUSpecifications": {
              "items": {
                "description": "Amazon Elastic Graphics reached end of life on January 8, 2024.\n\nA specification for an Elastic Graphics accelerator.",
                "properties": {
                  "type": {
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "elasticInferenceAccelerators": {
              "items": {
                "description": "Amazon Elastic Inference is no longer available.\n\nDescribes an elastic inference accelerator.",
                "properties": {
                  "count": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "type": {
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "enclaveOptions": {
              "description": "Indicates whether the instance is enabled for Amazon Web Services Nitro Enclaves.\nFor more information, see What is Amazon Web Services Nitro Enclaves? (https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave.html)\nin the Amazon Web Services Nitro Enclaves User Guide.",
              "properties": {
                "enabled": {
                  "type": "boolean"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "hibernationOptions": {
              "description": "Indicates whether the instance is configured for hibernation. This parameter\nis valid only if the instance meets the hibernation prerequisites (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/hibernating-prerequisites.html).",
              "properties": {
                "configured": {
                  "type": "boolean"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "iamInstanceProfile": {
              "description": "An IAM instance profile.",
              "properties": {
                "arn": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "imageID": {
              "type": "string"
            },
            "instanceInitiatedShutdownBehavior": {
              "type": "string"
            },
            "instanceMarketOptions": {
              "description": "The market (purchasing) option for the instances.",
              "properties": {
                "marketType": {
                  "type": "string"
                },
                "spotOptions": {
                  "description": "The options for Spot Instances.",
                  "properties": {
                    "blockDurationMinutes": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "instanceInterruptionBehavior": {
                      "type": "string"
                    },
                    "maxPrice": {
                      "type": "string"
                    },
                    "spotInstanceType": {
                      "type": "string"
                    },
                    "validUntil": {
                      "format": "date-time",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "instanceRequirements": {
              "description": "The attributes for the instance types. When you specify instance attributes,\nAmazon EC2 will identify instance types with these attributes.\n\nYou must specify VCpuCount and MemoryMiB. All other attributes are optional.\nAny unspecified optional attribute is set to its default.\n\nWhen you specify multiple attributes, you get instance types that satisfy\nall of the specified attributes. If you specify multiple values for an attribute,\nyou get instance types that satisfy any of the specified values.\n\nTo limit the list of instance types from which Amazon EC2 can identify matching\ninstance types, you can use one of the following parameters, but not both\nin the same request:\n\n   * AllowedInstanceTypes - The instance types to include in the list. All\n   other instance types are ignored, even if they match your specified attributes.\n\n   * ExcludedInstanceTypes - The instance types to exclude from the list,\n   even if they match your specified attributes.\n\nIf you specify InstanceRequirements, you can't specify InstanceType.\n\nAttribute-based instance type selection is only supported when using Auto\nScaling groups, EC2 Fleet, and Spot Fleet to launch instances. If you plan\nto use the launch template in the launch instance wizard (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html),\nor with the RunInstances (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html)\nAPI or AWS::EC2::Instance (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html)\nAmazon Web Services CloudFormation resource, you can't specify InstanceRequirements.\n\nFor more information, see Specify attributes for instance type selection\nfor EC2 Fleet or Spot Fleet (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html)\nand Spot placement score (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-placement-score.html)\nin the Amazon EC2 User Guide.",
              "properties": {
                "acceleratorCount": {
                  "description": "The minimum and maximum number of accelerators (GPUs, FPGAs, or Amazon Web\nServices Inferentia chips) on an instance. To exclude accelerator-enabled\ninstance types, set Max to 0.",
                  "properties": {
                    "max": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "min": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "acceleratorManufacturers": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "acceleratorNames": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "acceleratorTotalMemoryMiB": {
                  "description": "The minimum and maximum amount of total accelerator memory, in MiB.",
                  "properties": {
                    "max": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "min": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "acceleratorTypes": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "allowedInstanceTypes": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "bareMetal": {
                  "type": "string"
                },
                "baselineEBSBandwidthMbps": {
                  "description": "The minimum and maximum baseline bandwidth to Amazon EBS, in Mbps. For more\ninformation, see Amazon EBS\u2013optimized instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html)\nin the Amazon EC2 User Guide.",
                  "properties": {
                    "max": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "min": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "baselinePerformanceFactors": {
                  "description": "The baseline performance to consider, using an instance family as a baseline\nreference. The instance family establishes the lowest acceptable level of\nperformance. Amazon EC2 uses this baseline to guide instance type selection,\nbut there is no guarantee that the selected instance types will always exceed\nthe baseline for every application.\n\nCurrently, this parameter only supports CPU performance as a baseline performance\nfactor. For example, specifying c6i would use the CPU performance of the\nc6i family as the baseline reference.",
                  "properties": {
                    "cpu": {
                      "description": "The CPU performance to consider, using an instance family as the baseline\nreference.",
                      "properties": {
                        "references": {
                          "items": {
                            "description": "Specify an instance family to use as the baseline reference for CPU performance.\nAll instance types that match your specified attributes will be compared\nagainst the CPU performance of the referenced instance family, regardless\nof CPU manufacturer or architecture.\n\nCurrently, only one instance family can be specified in the list.",
                            "properties": {
                              "instanceFamily": {
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "burstablePerformance": {
                  "type": "string"
                },
                "cpuManufacturers": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "excludedInstanceTypes": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "instanceGenerations": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "localStorage": {
                  "type": "string"
                },
                "localStorageTypes": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "maxSpotPriceAsPercentageOfOptimalOnDemandPrice": {
                  "format": "int64",
                  "type": "integer"
                },
                "memoryGiBPerVCPU": {
                  "description": "The minimum and maximum amount of memory per vCPU, in GiB.",
                  "properties": {
                    "max": {
                      "type": "number"
                    },
                    "min": {
                      "type": "number"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "memoryMiB": {
                  "description": "The minimum and maximum amount of memory, in MiB.",
                  "properties": {
                    "max": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "min": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "networkBandwidthGbps": {
                  "description": "The minimum and maximum amount of network bandwidth, in gigabits per second\n(Gbps).\n\nSetting the minimum bandwidth does not guarantee that your instance will\nachieve the minimum bandwidth. Amazon EC2 will identify instance types that\nsupport the specified minimum bandwidth, but the actual bandwidth of your\ninstance might go below the specified minimum at times. For more information,\nsee Available instance bandwidth (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-network-bandwidth.html#available-instance-bandwidth)\nin the Amazon EC2 User Guide.",
                  "properties": {
                    "max": {
                      "type": "number"
                    },
                    "min": {
                      "type": "number"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "networkInterfaceCount": {
                  "description": "The minimum and maximum number of network interfaces.",
                  "properties": {
                    "max": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "min": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "onDemandMaxPricePercentageOverLowestPrice": {
                  "format": "int64",
                  "type": "integer"
                },
                "requireHibernateSupport": {
                  "type": "boolean"
                },
                "spotMaxPricePercentageOverLowestPrice": {
                  "format": "int64",
                  "type": "integer"
                },
                "totalLocalStorageGB": {
                  "description": "The minimum and maximum amount of total local storage, in GB.",
                  "properties": {
                    "max": {
                      "type": "number"
                    },
                    "min": {
                      "type": "number"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "vCPUCount": {
                  "description": "The minimum and maximum number of vCPUs.",
                  "properties": {
                    "max": {
                      "format": "int64",
                      "type": "integer"
                    },
                    "min": {
                      "format": "int64",
                      "type": "integer"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "instanceType": {
              "type": "string"
            },
            "kernelID": {
              "type": "string"
            },
            "keyName": {
              "type": "string"
            },
            "licenseSpecifications": {
              "items": {
                "description": "Describes a license configuration.",
                "properties": {
                  "licenseConfigurationARN": {
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "maintenanceOptions": {
              "description": "The maintenance options of your instance.",
              "properties": {
                "autoRecovery": {
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "metadataOptions": {
              "description": "The metadata options for the instance. For more information, see Instance\nmetadata and user data (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)\nin the Amazon EC2 User Guide.",
              "properties": {
                "httpEndpoint": {
                  "type": "string"
                },
                "httpProtocolIPv6": {
                  "type": "string"
                },
                "httpPutResponseHopLimit": {
                  "format": "int64",
                  "type": "integer"
                },
                "httpTokens": {
                  "type": "string"
                },
                "instanceMetadataTags": {
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "monitoring": {
              "description": "Describes the monitoring for the instance.",
              "properties": {
                "enabled": {
                  "type": "boolean"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "networkInterfaces": {
              "items": {
                "description": "The parameters for a network interface.",
                "properties": {
                  "associateCarrierIPAddress": {
                    "type": "boolean"
                  },
                  "associatePublicIPAddress": {
                    "type": "boolean"
                  },
                  "deleteOnTermination": {
                    "type": "boolean"
                  },
                  "description": {
                    "type": "string"
                  },
                  "deviceIndex": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "groups": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "interfaceType": {
                    "type": "string"
                  },
                  "ipv4PrefixCount": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "ipv4Prefixes": {
                    "items": {
                      "description": "Describes the IPv4 prefix option for a network interface.",
                      "properties": {
                        "ipv4Prefix": {
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array"
                  },
                  "ipv6AddressCount": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "ipv6Addresses": {
                    "items": {
                      "description": "Describes an IPv6 address.",
                      "properties": {
                        "ipv6Address": {
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array"
                  },
                  "ipv6PrefixCount": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "ipv6Prefixes": {
                    "items": {
                      "description": "Describes the IPv4 prefix option for a network interface.",
                      "properties": {
                        "ipv6Prefix": {
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array"
                  },
                  "networkCardIndex": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "networkInterfaceID": {
                    "type": "string"
                  },
                  "primaryIPv6": {
                    "type": "boolean"
                  },
                  "privateIPAddress": {
                    "type": "string"
                  },
                  "privateIPAddresses": {
                    "items": {
                      "description": "Describes a secondary private IPv4 address for a network interface.",
                      "properties": {
                        "primary": {
                          "type": "boolean"
                        },
                        "privateIPAddress": {
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array"
                  },
                  "secondaryPrivateIPAddressCount": {
                    "format": "int64",
                    "type": "integer"
                  },
                  "subnetID": {
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "placement": {
              "description": "Describes the placement of an instance.",
              "properties": {
                "affinity": {
                  "type": "string"
                },
                "availabilityZone": {
                  "type": "string"
                },
                "groupID": {
                  "type": "string"
                },
                "groupName": {
                  "type": "string"
                },
                "hostID": {
                  "type": "string"
                },
                "hostResourceGroupARN": {
                  "type": "string"
                },
                "partitionNumber": {
                  "format": "int64",
                  "type": "integer"
                },
                "spreadDomain": {
                  "type": "string"
                },
                "tenancy": {
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "privateDNSNameOptions": {
              "description": "Describes the options for instance hostnames.",
              "properties": {
                "enableResourceNameDNSAAAARecord": {
                  "type": "boolean"
                },
                "enableResourceNameDNSARecord": {
                  "type": "boolean"
                },
                "hostnameType": {
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "ramDiskID": {
              "type": "string"
            },
            "securityGroupIDs": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "securityGroups": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "userData": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "defaultVersion": {
          "description": "The version number of the default version of the launch template.",
          "format": "int64",
          "type": "integer"
        },
        "name": {
          "description": "A name for the launch template.",
          "type": "string"
        },
        "tags": {
          "description": "The tags. The value parameter is required, but if you don't want the tag\nto have a value, specify the parameter with no value, and we set the value\nto an empty string.",
          "items": {
            "description": "Describes a tag.",
            "properties": {
              "key": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "versionDescription": {
          "description": "A description for the first version of the launch template.",
          "type": "string"
        }
      },
      "required": [
        "data",
        "name"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "LaunchTemplateStatus defines the observed state of LaunchTemplate",
      "properties": {
        "ackResourceMetadata": {
          "description": "All CRs managed by ACK have a common `Status.ACKResourceMetadata` member\nthat is used to contain resource sync state, account ownership,\nconstructed ARN for the resource",
          "properties": {
            "arn": {
              "description": "ARN is the Amazon Resource Name for the resource. This is a\nglobally-unique identifier and is set only by the ACK service controller\nonce the controller has orchestrated the creation of the resource OR\nwhen it has verified that an \"adopted\" resource (a resource where the\nARN annotation was set by the Kubernetes user on the CR) exists and\nmatches the supplied CR's Spec field values.\nhttps://github.com/aws/aws-controllers-k8s/issues/270",
              "type": "string"
            },
            "ownerAccountID": {
              "description": "OwnerAccountID is the AWS Account ID of the account that owns the\nbackend AWS service API resource.",
              "type": "string"
            },
            "region": {
              "description": "Region is the AWS region in which the resource exists or will exist.",
              "type": "string"
            }
          },
          "required": [
            "ownerAccountID",
            "region"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "conditions": {
          "description": "All CRs managed by ACK have a common `Status.Conditions` member that\ncontains a collection of `ackv1alpha1.Condition` objects that describe\nthe various terminal states of the CR and its backend AWS service API\nresource",
          "items": {
            "description": "Condition is the common struct used by all CRDs managed by ACK service\ncontrollers to indicate terminal states  of the CR and its backend AWS\nservice API resource",
            "properties": {
              "lastTransitionTime": {
                "description": "Last time the condition transitioned from one status to another.",
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "description": "A human readable message indicating details about the transition.",
                "type": "string"
              },
              "reason": {
                "description": "The reason for the condition's last transition.",
                "type": "string"
              },
              "status": {
                "description": "Status of the condition, one of True, False, Unknown.",
                "type": "string"
              },
              "type": {
                "description": "Type is the type of the Condition",
                "type": "string"
              }
            },
            "required": [
              "status",
              "type"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "createTime": {
          "description": "The time launch template was created.",
          "format": "date-time",
          "type": "string"
        },
        "createdBy": {
          "description": "The principal that created the launch template.",
          "type": "string"
        },
        "id": {
          "description": "The ID of the launch template.",
          "type": "string"
        },
        "latestVersion": {
          "description": "The version number of the latest version of the launch template.",
          "format": "int64",
          "type": "integer"
        },
        "operator": {
          "description": "The entity that manages the launch template.",
          "properties": {
            "managed": {
              "type": "boolean"
            },
            "principal": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
