{ "$schema": "http://json-schema.org/draft-04/schema#", "additionalProperties": false, "definitions": { "AWS::Serverless::Api": { "additionalProperties": false, "properties": { "DeletionPolicy": { "type": "string" }, "UpdateReplacePolicy": { "type": "string" }, "Condition": { "type": "string" }, "DependsOn": { "anyOf": [ { "pattern": "^[a-zA-Z0-9]+$", "type": "string" }, { "items": { "pattern": "^[a-zA-Z0-9]+$", "type": "string" }, "type": "array" } ] }, "Metadata": { "type": "object" }, "Properties": { "additionalProperties": false, "properties": { "CacheClusterEnabled": { "type": "boolean" }, "CacheClusterSize": { "type": "string" }, "DefinitionBody": { "type": "object" }, "DefinitionUri": { "anyOf": [ { "type": [ "string" ] }, { "$ref": "#/definitions/AWS::Serverless::Api.S3Location" } ] }, "Description": { "type": "string" }, "Name": { "type": "string" }, "StageName": { "anyOf": [ { "type": "string" }, { "type": "object" } ] }, "TracingEnabled": { "type": "boolean" }, "Variables": { "additionalProperties": false, "patternProperties": { "^[a-zA-Z0-9]+$": { "anyOf": [ { "type": "string" }, { "type": "object" } ] } }, "type": "object" } }, "required": [ "StageName" ], "type": "object" }, "Type": { "enum": [ "AWS::Serverless::Api" ], "type": "string" } }, "required": [ "Type", "Properties" ], "type": "object" }, "AWS::Serverless::Api.S3Location": { "additionalProperties": false, "properties": { "Bucket": { "type": "string" }, "Key": { "type": "string" }, "Version": { "type": "number" } }, "required": [ "Bucket", "Key" ], "type": "object" }, "AWS::Serverless::Function": { "additionalProperties": false, "properties": { "DeletionPolicy": { "type": "string" }, "UpdateReplacePolicy": { "type": "string" }, "Condition": { "type": "string" }, "DependsOn": { "anyOf": [ { "pattern": "^[a-zA-Z0-9]+$", "type": "string" }, { "items": { "pattern": "^[a-zA-Z0-9]+$", "type": "string" }, "type": "array" } ] }, "Metadata": { "type": "object" }, "Properties": { "allOf": [ { "anyOf": [ { "properties": { "InlineCode": { "type": "string" } } }, { "properties": { "CodeUri": { "anyOf": [ { "type": [ "string" ] }, { "$ref": "#/definitions/AWS::Serverless::Function.S3Location" } ] } } } ] }, { "properties": { "DeadLetterQueue": { "$ref": "#/definitions/AWS::Serverless::Function.DeadLetterQueue" }, "Description": { "type": "string" }, "Environment": { "$ref": "#/definitions/AWS::Serverless::Function.FunctionEnvironment" }, "Events": { "additionalProperties": false, "patternProperties": { "^[a-zA-Z0-9]+$": { "$ref": "#/definitions/AWS::Serverless::Function.EventSource" } }, "type": "object" }, "FunctionName": { "type": "string" }, "Handler": { "type": "string" }, "KmsKeyArn": { "type": "string" }, "MemorySize": { "type": "number" }, "Policies": { "anyOf": [ { "type": [ "string" ] }, { "items": { "type": "string" }, "type": "array" }, { "$ref": "#/definitions/AWS::Serverless::Function.IAMPolicyDocument" }, { "items": { "$ref": "#/definitions/AWS::Serverless::Function.IAMPolicyDocument" }, "type": "array" } ] }, "Role": { "anyOf": [ { "type": "string" }, { "type": "object" } ] }, "Runtime": { "type": "string" }, "Tags": { "additionalProperties": false, "patternProperties": { "^[a-zA-Z0-9]+$": { "type": "string" } }, "type": "object" }, "Timeout": { "type": "number" }, "Tracing": { "type": "string" }, "VpcConfig": { "$ref": "#/definitions/AWS::Serverless::Function.VpcConfig" } }, "required": [ "Handler", "Runtime" ], "type": "object" } ] }, "Type": { "enum": [ "AWS::Serverless::Function" ], "type": "string" } }, "required": [ "Type", "Properties" ], "type": "object" }, "AWS::Serverless::Function.AlexaSkillEvent": { "additionalProperties": false, "properties": { "Variables": { "additionalProperties": false, "patternProperties": { "^[a-zA-Z0-9]+$": { "type": "string" } }, "type": "object" } }, "type": "object" }, "AWS::Serverless::Function.ApiEvent": { "additionalProperties": false, "properties": { "Method": { "type": "string" }, "Path": { "type": "string" }, "RestApiId": { "anyOf": [ { "type": "string" }, { "type": "object" } ] } }, "required": [ "Method", "Path" ], "type": "object" }, "AWS::Serverless::Function.CloudWatchEventEvent": { "additionalProperties": false, "properties": { "EventBusName": { "type": "string" }, "Input": { "type": "string" }, "InputPath": { "type": "string" }, "Pattern": { "type": "object" } }, "required": [ "Pattern" ], "type": "object" }, "AWS::Serverless::Function.EventBridgeRule": { "additionalProperties": false, "properties": { "Input": { "type": "string" }, "InputPath": { "type": "string" }, "Pattern": { "type": "object" }, "DeadLetterConfig": { "additionalProperties": false, "properties": { "Arn": { "type": "string" }, "Type": { "type": "string" }, "QueueLogicalId": { "type": "string" } }, "type": "object" }, "RetryPolicy": { "additionalProperties": false, "minProperties": 1, "properties": { "MaximumEventAgeInSeconds": { "type": "number" }, "MaximumRetryAttempts": { "type": "number" } }, "type": "object" } }, "required": [ "Pattern" ], "type": "object" }, "AWS::Serverless::Function.LogEvent": { "additionalProperties": false, "properties": { "LogGroupName": { "type": "string" }, "FilterPattern": { "type": "string" } }, "required": [ "LogGroupName", "FilterPattern" ], "type": "object" }, "AWS::Serverless::Function.DeadLetterQueue": { "additionalProperties": false, "properties": { "TargetArn": { "type": "string" }, "Type": { "type": "string" } }, "required": [ "TargetArn", "Type" ], "type": "object" }, "AWS::Serverless::Function.CognitoEvent": { "additionalProperties": false, "properties": { "UserPool": { "anyOf": [ { "type": "string" }, { "type": "object" } ] }, "Trigger": { "anyOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] } }, "required": [ "UserPool", "Trigger" ], "type": "object" }, "AWS::Serverless::Function.DynamoDBEvent": { "additionalProperties": false, "properties": { "BatchSize": { "type": "number" }, "StartingPosition": { "type": "string" }, "Stream": { "type": "string" }, "Enabled": { "type": "boolean" } }, "required": [ "BatchSize", "StartingPosition", "Stream" ], "type": "object" }, "AWS::Serverless::Function.EventSource": { "additionalProperties": false, "properties": { "Properties": { "anyOf": [ { "$ref": "#/definitions/AWS::Serverless::Function.S3Event" }, { "$ref": "#/definitions/AWS::Serverless::Function.SNSEvent" }, { "$ref": "#/definitions/AWS::Serverless::Function.KinesisEvent" }, { "$ref": "#/definitions/AWS::Serverless::Function.MSKEvent" }, { "$ref": "#/definitions/AWS::Serverless::Function.MQEvent" }, { "$ref": "#/definitions/AWS::Serverless::Function.SQSEvent" }, { "$ref": "#/definitions/AWS::Serverless::Function.DynamoDBEvent" }, { "$ref": "#/definitions/AWS::Serverless::Function.ApiEvent" }, { "$ref": "#/definitions/AWS::Serverless::Function.ScheduleEvent" }, { "$ref": "#/definitions/AWS::Serverless::Function.CloudWatchEventEvent" }, { "$ref": "#/definitions/AWS::Serverless::Function.EventBridgeRule" }, { "$ref": "#/definitions/AWS::Serverless::Function.LogEvent" }, { "$ref": "#/definitions/AWS::Serverless::Function.IoTRuleEvent" }, { "$ref": "#/definitions/AWS::Serverless::Function.AlexaSkillEvent" }, { "$ref": "#/definitions/AWS::Serverless::Function.CognitoEvent" } ] }, "Type": { "type": "string" } }, "required": [ "Properties", "Type" ], "type": "object" }, "AWS::Serverless::Function.FunctionEnvironment": { "additionalProperties": false, "properties": { "Variables": { "additionalProperties": false, "patternProperties": { "^[a-zA-Z0-9]+$": { "type": "string" } }, "type": "object" } }, "required": [ "Variables" ], "type": "object" }, "AWS::Serverless::Function.IAMPolicyDocument": { "additionalProperties": false, "properties": { "Statement": { "items": { "type": "object" }, "type": "array" } }, "required": [ "Statement" ], "type": "object" }, "AWS::Serverless::Function.IoTRuleEvent": { "additionalProperties": false, "properties": { "AwsIotSqlVersion": { "type": "string" }, "Sql": { "type": "string" } }, "required": [ "Sql" ], "type": "object" }, "AWS::Serverless::Function.KinesisEvent": { "additionalProperties": false, "properties": { "BatchSize": { "type": "number" }, "StartingPosition": { "type": "string" }, "Stream": { "type": "string" }, "Enabled": { "type": "boolean" } }, "required": [ "StartingPosition", "Stream" ], "type": "object" }, "AWS::Serverless::Function.MSKEvent": { "additionalProperties": false, "properties": { "StartingPosition": { "type": "string" }, "Stream": { "type": "string" }, "Topics": { "type": "array" } }, "required": [ "StartingPosition", "Stream", "Topics" ], "type": "object" }, "AWS::Serverless::Function.MQEvent": { "additionalProperties": false, "properties": { "Broker": { "type": "string" }, "Queues": { "type": "array" }, "SourceAccessConfigurations": { "type": "array" } }, "required": [ "Broker", "Queues", "SourceAccessConfigurations" ], "type": "object" }, "AWS::Serverless::Function.SQSEvent": { "additionalProperties": false, "properties": { "BatchSize": { "type": "number" }, "Queue": { "anyOf": [{ "type": "string" }, { "type": "object" } ] }, "Enabled": { "type": "boolean" } }, "required": [ "Queue" ], "type": "object" }, "AWS::Serverless::Function.S3Event": { "additionalProperties": false, "properties": { "Bucket": { "anyOf": [ { "type": "string" }, { "type": "object" } ] }, "Events": { "anyOf": [ { "type": [ "string" ] }, { "items": { "type": "string" }, "type": "array" } ] }, "Filter": { "$ref": "#/definitions/AWS::Serverless::Function.S3NotificationFilter" } }, "required": [ "Bucket", "Events" ], "type": "object" }, "AWS::Serverless::Function.S3Location": { "additionalProperties": false, "properties": { "Bucket": { "type": "string" }, "Key": { "type": "string" }, "Version": { "type": "number" } }, "required": [ "Bucket", "Key" ], "type": "object" }, "AWS::Serverless::Function.S3NotificationFilter": { "additionalProperties": false, "properties": { "S3Key": { "anyOf": [ { "type": "string" }, { "type": "object" } ] } }, "required": [ "S3Key" ], "type": "object" }, "AWS::Serverless::Function.SNSEvent": { "additionalProperties": false, "properties": { "Topic": { "type": "string" }, "Region": { "type": "string" }, "FilterPolicy": { "type": "object" } }, "required": [ "Topic" ], "type": "object" }, "AWS::Serverless::Function.ScheduleEvent": { "additionalProperties": false, "properties": { "Input": { "type": "string" }, "Schedule": { "type": "string" }, "Name": { "type": "string" }, "Description": { "type": "string" }, "Enabled": { "type": "boolean" } }, "required": [ "Schedule" ], "type": "object" }, "AWS::Serverless::Function.VpcConfig": { "additionalProperties": false, "properties": { "SecurityGroupIds": { "items": { "type": "string" }, "type": "array" }, "SubnetIds": { "items": { "type": "string" }, "type": "array" }, "SubnetIdsUsingRef": { "items": { "type": "object" }, "type": "array" } }, "required": [ "SecurityGroupIds", "SubnetIds" ], "type": "object" }, "AWS::Serverless::SimpleTable": { "additionalProperties": false, "properties": { "DeletionPolicy": { "type": "string" }, "UpdateReplacePolicy": { "type": "string" }, "Condition": { "type": "string" }, "DependsOn": { "anyOf": [ { "pattern": "^[a-zA-Z0-9]+$", "type": "string" }, { "items": { "pattern": "^[a-zA-Z0-9]+$", "type": "string" }, "type": "array" } ] }, "Metadata": { "type": "object" }, "Properties": { "additionalProperties": false, "properties": { "PrimaryKey": { "$ref": "#/definitions/AWS::Serverless::SimpleTable.PrimaryKey" }, "ProvisionedThroughput": { "$ref": "#/definitions/AWS::Serverless::SimpleTable.ProvisionedThroughput" }, "SSESpecification": { "$ref": "#/definitions/AWS::Serverless::SimpleTable.SSESpecification" } }, "type": "object" }, "Type": { "enum": [ "AWS::Serverless::SimpleTable" ], "type": "string" } }, "required": [ "Type" ], "type": "object" }, "AWS::Serverless::SimpleTable.PrimaryKey": { "additionalProperties": false, "properties": { "Name": { "type": "string" }, "Type": { "type": "string" } }, "required": [ "Type" ], "type": "object" }, "AWS::Serverless::SimpleTable.ProvisionedThroughput": { "additionalProperties": false, "properties": { "ReadCapacityUnits": { "type": "number" }, "WriteCapacityUnits": { "type": "number" } }, "required": [ "WriteCapacityUnits" ], "type": "object" }, "AWS::Serverless::SimpleTable.SSESpecification": { "additionalProperties": false, "properties": { "SSEEnabled": { "type": "boolean" } }, "required": [ "SSEEnabled" ], "type": "object" }, "CloudFormationResource": { "additionalProperties": true, "properties": { "Type": { "pattern": "^(?!^AWS::Serverless).*", "type": "string" } }, "required": [ "Type" ], "type": "object" }, "Parameter": { "additionalProperties": false, "properties": { "AllowedPattern": { "type": "string" }, "AllowedValues": { "type": "array" }, "ConstraintDescription": { "type": "string" }, "Default": { "type": "string" }, "Description": { "type": "string" }, "MaxLength": { "type": "string" }, "MaxValue": { "type": "string" }, "MinLength": { "type": "string" }, "MinValue": { "type": "string" }, "NoEcho": { "type": [ "string", "boolean" ] }, "Type": { "enum": [ "String", "Number", "List", "CommaDelimitedList", "AWS::EC2::AvailabilityZone::Name", "AWS::EC2::Image::Id", "AWS::EC2::Instance::Id", "AWS::EC2::KeyPair::KeyName", "AWS::EC2::SecurityGroup::GroupName", "AWS::EC2::SecurityGroup::Id", "AWS::EC2::Subnet::Id", "AWS::EC2::Volume::Id", "AWS::EC2::VPC::Id", "AWS::Route53::HostedZone::Id", "List", "List", "List", "List", "List", "List", "List", "List", "List", "List" ], "type": "string" } }, "required": [ "Type" ], "type": "object" }, "Tag": { "additionalProperties": false, "properties": { "Key": { "type": "string" }, "Value": { "anyOf": [ { "type": "string" }, { "type": "object" } ] } }, "type": "object" } }, "properties": { "AWSTemplateFormatVersion": { "enum": [ "2010-09-09" ], "type": "string" }, "Conditions": { "additionalProperties": false, "patternProperties": { "^[a-zA-Z0-9]+$": { "type": "object" } }, "type": "object" }, "Description": { "description": "Template description", "maxLength": 1024, "type": "string" }, "Mappings": { "additionalProperties": false, "patternProperties": { "^[a-zA-Z0-9]+$": { "type": "object" } }, "type": "object" }, "Metadata": { "type": "object" }, "Outputs": { "additionalProperties": false, "maxProperties": 60, "minProperties": 1, "patternProperties": { "^[a-zA-Z0-9]+$": { "type": "object" } }, "type": "object" }, "Parameters": { "additionalProperties": false, "maxProperties": 50, "patternProperties": { "^[a-zA-Z0-9]+$": { "$ref": "#/definitions/Parameter" } }, "type": "object" }, "Resources": { "additionalProperties": false, "patternProperties": { "^[a-zA-Z0-9]+$": { "anyOf": [ { "$ref": "#/definitions/AWS::Serverless::Api" }, { "$ref": "#/definitions/AWS::Serverless::Function" }, { "$ref": "#/definitions/AWS::Serverless::SimpleTable" }, { "$ref": "#/definitions/CloudFormationResource" } ] } }, "type": "object" }, "Transform": { "enum": [ "AWS::Serverless-2016-10-31" ], "type": "string" }, "Globals": { "type": "object" }, "Properties": { "type": "object" } }, "required": [ "Resources" ], "type": "object" }