{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--aws-autoscaling-launchconfiguration.json",
  "title": "AWSAutoScalingLaunchConfigurationProperties",
  "description": "The AWS::AutoScaling::LaunchConfiguration resource specifies the launch configuration that can be used by an Auto Scaling group to configure Amazon EC2 instances.. Source:- <https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-autoscaling.git>",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/lalcebo/json-schema/master/serverless/resources/cloudformation-modified/aws-autoscaling-launchconfiguration.json",
    "sourceSha256": "2d721aaf8a1771df20dae506f534d92c94e0057b1490e8eebc4cb31061c3a382"
  },
  "type": "object",
  "properties": {
    "AssociatePublicIpAddress": {
      "description": "For Auto Scaling groups that are running in a virtual private cloud (VPC), specifies whether to assign a public IP address to the group's instances.",
      "type": "boolean"
    },
    "BlockDeviceMappings": {
      "description": "Specifies how block devices are exposed to the instance. You can specify virtual devices and EBS volumes.",
      "type": "array",
      "uniqueItems": true,
      "insertionOrder": false,
      "items": {
        "$ref": "#/$defs/BlockDeviceMapping"
      }
    },
    "ClassicLinkVPCId": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The ID of a ClassicLink-enabled VPC to link your EC2-Classic instances to."
    },
    "ClassicLinkVPCSecurityGroups": {
      "description": "The IDs of one or more security groups for the VPC that you specified in the ClassicLinkVPCId property.",
      "type": "array",
      "insertionOrder": false,
      "items": {
        "type": "string"
      }
    },
    "EbsOptimized": {
      "description": "Specifies whether the launch configuration is optimized for EBS I/O (true) or not (false).",
      "type": "boolean"
    },
    "IamInstanceProfile": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "Provides the name or the Amazon Resource Name (ARN) of the instance profile associated with the IAM role for the instance. The instance profile contains the IAM role."
    },
    "ImageId": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "Provides the unique ID of the Amazon Machine Image (AMI) that was assigned during registration."
    },
    "InstanceId": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The ID of the Amazon EC2 instance you want to use to create the launch configuration."
    },
    "InstanceMonitoring": {
      "description": "Controls whether instances in this group are launched with detailed (true) or basic (false) monitoring.",
      "type": "boolean"
    },
    "InstanceType": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "Specifies the instance type of the EC2 instance."
    },
    "KernelId": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "Provides the ID of the kernel associated with the EC2 AMI."
    },
    "KeyName": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "Provides the name of the EC2 key pair."
    },
    "LaunchConfigurationName": {
      "oneOf": [
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 255
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The name of the launch configuration. This name must be unique per Region per account."
    },
    "MetadataOptions": {
      "description": "The metadata options for the instances.",
      "$ref": "#/$defs/MetadataOptions"
    },
    "PlacementTenancy": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The tenancy of the instance, either default or dedicated."
    },
    "RamDiskId": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The ID of the RAM disk to select."
    },
    "SecurityGroups": {
      "description": "A list that contains the security groups to assign to the instances in the Auto Scaling group.",
      "type": "array",
      "insertionOrder": false,
      "items": {
        "type": "string"
      }
    },
    "SpotPrice": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The maximum hourly price you are willing to pay for any Spot Instances launched to fulfill the request."
    },
    "UserData": {
      "oneOf": [
        {
          "type": "string",
          "maxLength": 21847
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The Base64-encoded user data to make available to the launched EC2 instances."
    }
  },
  "typeName": "AWS::AutoScaling::LaunchConfiguration",
  "writeOnlyProperties": [
    "/properties/InstanceId"
  ],
  "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-autoscaling.git",
  "additionalProperties": false,
  "primaryIdentifier": [
    "/properties/LaunchConfigurationName"
  ],
  "$defs": {
    "MetadataOptions": {
      "description": "MetadataOptions is a property of AWS::AutoScaling::LaunchConfiguration that describes metadata options for the instances.",
      "type": "object",
      "title": "AWSAutoScalingLaunchConfigurationMetadataOptionsDefinition",
      "properties": {
        "HttpPutResponseHopLimit": {
          "description": "The desired HTTP PUT response hop limit for instance metadata requests.",
          "type": "integer"
        },
        "HttpTokens": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The state of token usage for your instance metadata requests."
        },
        "HttpEndpoint": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "This parameter enables or disables the HTTP metadata endpoint on your instances."
        }
      },
      "additionalProperties": false
    },
    "BlockDeviceMapping": {
      "description": "BlockDeviceMapping is a property of AWS::AutoScaling::LaunchConfiguration that describes a block device mapping for an Auto Scaling group.",
      "type": "object",
      "title": "AWSAutoScalingLaunchConfigurationBlockDeviceMappingDefinition",
      "properties": {
        "NoDevice": {
          "description": "Setting this value to true suppresses the specified device included in the block device mapping of the AMI.",
          "type": "boolean"
        },
        "VirtualName": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The name of the virtual device."
        },
        "Ebs": {
          "description": "Parameters used to automatically set up EBS volumes when an instance is launched.",
          "$ref": "#/$defs/BlockDevice"
        },
        "DeviceName": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The device name exposed to the EC2 instance (for example, /dev/sdh or xvdh). "
        }
      },
      "required": [
        "DeviceName"
      ],
      "additionalProperties": false
    },
    "BlockDevice": {
      "description": "BlockDevice is a subproperty of BlockDeviceMapping that describes an Amazon EBS volume.",
      "type": "object",
      "title": "AWSAutoScalingLaunchConfigurationBlockDeviceDefinition",
      "properties": {
        "SnapshotId": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The snapshot ID of the volume to use."
        },
        "VolumeType": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "description": "The volume type."
        },
        "Encrypted": {
          "description": "Specifies whether the volume should be encrypted. ",
          "type": "boolean"
        },
        "Iops": {
          "description": "The number of input/output (I/O) operations per second (IOPS) to provision for the volume. ",
          "type": "integer"
        },
        "VolumeSize": {
          "description": "The volume size, in GiBs.",
          "type": "integer"
        },
        "DeleteOnTermination": {
          "description": "Indicates whether the volume is deleted on instance termination. ",
          "type": "boolean"
        },
        "Throughput": {
          "description": "The throughput (MiBps) to provision for a gp3 volume.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    }
  },
  "required": [
    "ImageId",
    "InstanceType"
  ],
  "createOnlyProperties": [
    "/properties/AssociatePublicIpAddress",
    "/properties/BlockDeviceMappings",
    "/properties/ClassicLinkVPCId",
    "/properties/ClassicLinkVPCSecurityGroups",
    "/properties/EbsOptimized",
    "/properties/IamInstanceProfile",
    "/properties/ImageId",
    "/properties/InstanceId",
    "/properties/InstanceMonitoring",
    "/properties/InstanceType",
    "/properties/KernelId",
    "/properties/KeyName",
    "/properties/LaunchConfigurationName",
    "/properties/MetadataOptions",
    "/properties/PlacementTenancy",
    "/properties/RamDiskId",
    "/properties/SecurityGroups",
    "/properties/SpotPrice",
    "/properties/UserData"
  ],
  "tagging": {
    "taggable": false
  }
}
