{ "$schema": "{{{draft}}}", "type": "object", "definitions": { "Transform": { "type": "object", "oneOf": [ { "$comment": "You can use the AWS::Include transform anywhere within the AWS CloudFormation template except in the template parameters section or the template version field. For example, you can use AWS::Include in the mappings section.", "properties": { "Name": { "type": "string", "enum": [ "AWS::Include" ] }, "Parameters": { "type": "object", "properties": { "Location": { "$comment": "The location is an Amazon S3 URI, with a specific file name in an S3 bucket. For example, s3://MyBucketName/MyFile.yaml.", "type": "string", "format": "uri" } }, "additionalProperties": false } }, "additionalProperties": false }, { "$comment": "Use a transform to simplify template authoring for serverless applications. ", "type": "string", "enum": [ "AWS::CodeDeployBlueGreen", "AWS::CodeStar", "AWS::SecretsManager-2020-07-23", "AWS::Serverless-2016-10-31" ] } ] }, "Attribute": { "$comment": "Attribute defines the content of a Mapping", "type": "object", "patternProperties": { "^[a-zA-Z0-9._-]{1,255}$": { "type": [ "boolean", "integer", "number", "string" ] } }, "minProperties": 1, "additionalProperties": false }, "Mapping": { "type": "object", "patternProperties": { "^[a-zA-Z0-9._-]{1,255}$": { "$ref": "#/definitions/Attribute" } }, "minProperties": 1, "additionalProperties": false }, "CommonParams": { "properties": { "Description": { "type": "string", "maxLength": 4000 }, "NoEcho": { "type": "boolean" }, "ConstraintDescription": { "type": "string", "maxLength": 4000 } } }, "StringParamCommon": { "allOf": [ { "properties": { "Default": { "type": "string" }, "AllowedValues": { "type": "array", "items": { "type": "string" }, "minItems": 1 } } }, { "$ref": "#/definitions/CommonParams" } ] }, "StringParam": { "allOf": [ { "type": "object", "properties": { "Type": { "enum": [ "String" ] }, "AllowedPattern": { "type": "string" }, "MaxLength": { "type": "integer", "minimum": 1 }, "MinLength": { "type": "integer", "minimum": 1 } }, "required": [ "Type" ] }, { "$ref": "#/definitions/StringParamCommon" } ] }, "StringLikeParam": { "allOf": [ { "type": "object", "properties": { "Type": { "enum": [ "AWS::EC2::AvailabilityZone::Name", "AWS::EC2::Image::Id", "AWS::EC2::Instance::Id", "AWS::EC2::SecurityGroup::GroupName", "AWS::EC2::SecurityGroup::Id", "AWS::EC2::Subnet::Id", "AWS::EC2::Volume::Id", "AWS::EC2::VPC::Id", "AWS::Route53::HostedZone::Id", "AWS::EC2::KeyPair::KeyName", "AWS::SSM::Parameter::Value", "AWS::SSM::Parameter::Value", "AWS::SSM::Parameter::Value", "AWS::SSM::Parameter::Value", "AWS::SSM::Parameter::Value", "AWS::SSM::Parameter::Value", "AWS::SSM::Parameter::Value", "AWS::SSM::Parameter::Value", "AWS::SSM::Parameter::Value", "AWS::SSM::Parameter::Value" ] } }, "required": [ "Type" ] }, { "$ref": "#/definitions/StringParamCommon" } ] }, "NumberParam": { "allOf": [ { "type": "object", "properties": { "Type": { "enum": [ "Number" ] }, "Default": { "type": "integer" }, "AllowedValues": { "type": "array", "items": { "type": "integer" }, "minItems": 1 } }, "required": [ "Type" ] }, { "$ref": "#/definitions/CommonParams" } ] }, "CommaDelimitedList": { "allOf": [ { "type": "object", "properties": { "Type": { "enum": [ "CommaDelimitedList", "AWS::SSM::Parameter::Value" ] }, "Default": { "type": "string" } }, "required": [ "Type" ] }, { "$ref": "#/definitions/CommonParams" } ] }, "StringLikeList": { "allOf": [ { "type": "object", "properties": { "Type": { "enum": [ "List", "List", "List", "List", "List", "List", "List", "List", "List", "AWS::SSM::Parameter::Value>", "AWS::SSM::Parameter::Value>", "AWS::SSM::Parameter::Value>", "AWS::SSM::Parameter::Value>", "AWS::SSM::Parameter::Value>", "AWS::SSM::Parameter::Value>", "AWS::SSM::Parameter::Value>", "AWS::SSM::Parameter::Value>", "AWS::SSM::Parameter::Value>", "AWS::SSM::Parameter::Value>" ] }, "Default": { "type": "array", "items": { "type": "string" }, "minItems": 1 } } }, { "$ref": "#/definitions/CommonParams" } ] }, "NumberList": { "allOf": [ { "type": "object", "properties": { "Type": { "enum": [ "List", "AWS::SSM::Parameter::Value>" ] }, "Default": { "type": "array", "items": { "type": "integer" }, "minItems": 1 } }, "required": [ "Type" ] }, { "$ref": "#/definitions/CommonParams" } ] }, "parameters": { "type": "object", "additionalProperties": { "oneOf": [ { "$ref": "#/definitions/StringParam" }, { "$ref": "#/definitions/StringLikeParam" }, { "$ref": "#/definitions/NumberParam" }, { "$ref": "#/definitions/CommaDelimitedList" }, { "$ref": "#/definitions/StringLikeList" }, { "$ref": "#/definitions/NumberList" } ] } }, {{{intrinsics}}} {{{resources}}} }, "additionalProperties": false, "properties": { "AWSTemplateFormatVersion": { "description": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/format-version-structure.html", "type": "string", "enum": [ "2010-09-09" ] }, "Description": { "description": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-description-structure.html", "type": "string", "maxLength": 1024 }, "Metadata": { "description": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html", "type": "object" }, "Parameters": { "description": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html", "$ref": "#/definitions/parameters" }, "Mappings": { "description": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/mappings-section-structure.html", "type": "object", "patternProperties": { "^[a-zA-Z0-9._-]{1,255}$": { "$ref": "#/definitions/Mapping" } }, "additionalProperties": false }, "Conditions": { "description": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/conditions-section-structure.html", "type": "object" }, "Transform": { "description": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-section-structure.html", "$ref": "#/definitions/Transform" }, "Outputs": { "description": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/outputs-section-structure.html", "type": "object" }, "Resources": { "description": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resources-section-structure.html", "$ref": "#/definitions/resources" }, "Hooks": { "description": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/blue-green.html", "type": "object" }, "Rules": { "description": "https://docs.aws.amazon.com/servicecatalog/latest/adminguide/reference-template_constraint_rules.html", "type": "object" } }, "description": "{{description}}", "required": [ "Resources" ] }