diff --git a/CHANGELOG.md b/CHANGELOG.md index 50050f9..bd98565 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Fixed +- Merge PR #222, fixing AWS::Serverless::Api.MethodSettings ## [1.9.4] - 2018-12-09 ### Changed diff --git a/data/sam_20161031_cfn.json b/data/sam_20161031_cfn.json index 3611748..00b9448 100644 --- a/data/sam_20161031_cfn.json +++ b/data/sam_20161031_cfn.json @@ -1 +1 @@ -{"PropertyTypes":{"AWS::Serverless::Api.S3Location":{"Documentation":"","Properties":{"Bucket":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["S3Location#Bucket","S3Location#Bucket"]},"Key":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["S3Location#Key","S3Location#Key"]},"Version":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["S3Location#Version","S3Location#Version","S3Location#Version"]}}},"AWS::Serverless::Function.AlexaSkillEvent":{"Documentation":"","Properties":{"Variables":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["AlexaSkillEvent#Variables>","AlexaSkillEvent#Variables>"]}}},"AWS::Serverless::Function.ApiEvent":{"Documentation":"","Properties":{"Method":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["ApiEvent#Method","ApiEvent#Method"]},"Path":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["ApiEvent#Path","ApiEvent#Path"]},"RestApiId":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["ApiEvent#RestApiId","ApiEvent#RestApiId","ApiEvent#RestApiId"]}}},"AWS::Serverless::Function.CloudWatchEventEvent":{"Documentation":"","Properties":{"Input":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["CloudWatchEventEvent#Input","CloudWatchEventEvent#Input"]},"InputPath":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["CloudWatchEventEvent#InputPath","CloudWatchEventEvent#InputPath"]},"Pattern":{"Documentation":"","Required":true,"UpdateType":"Mutable","PrimitiveType":"Json"}}},"AWS::Serverless::Function.LogEvent":{"Documentation":"","Properties":{"LogGroupName":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["LogEvent#LogGroupName","LogEvent#LogGroupName"]},"FilterPattern":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["LogEvent#FilterPattern","LogEvent#FilterPattern"]}}},"AWS::Serverless::Function.DeadLetterQueue":{"Documentation":"","Properties":{"TargetArn":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["DeadLetterQueue#TargetArn","DeadLetterQueue#TargetArn"]},"Type":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["DeadLetterQueue#Type","DeadLetterQueue#Type"]}}},"AWS::Serverless::Function.DynamoDBEvent":{"Documentation":"","Properties":{"BatchSize":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["DynamoDBEvent#BatchSize","DynamoDBEvent#BatchSize","DynamoDBEvent#BatchSize"]},"StartingPosition":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["DynamoDBEvent#StartingPosition","DynamoDBEvent#StartingPosition"]},"Stream":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["DynamoDBEvent#Stream","DynamoDBEvent#Stream"]},"Enabled":{"Documentation":"","Required":false,"UpdateType":"Mutable","PrimitiveType":"Boolean"}}},"AWS::Serverless::Function.EventSource":{"Documentation":"","Properties":{"Properties":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["EventSource#Properties","EventSource#Properties","EventSource#Properties","EventSource#Properties","EventSource#Properties","EventSource#Properties","EventSource#Properties","EventSource#Properties","EventSource#Properties","EventSource#Properties","EventSource#Properties"]},"Type":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["EventSource#Type","EventSource#Type"]}}},"AWS::Serverless::Function.FunctionEnvironment":{"Documentation":"","Properties":{"Variables":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["FunctionEnvironment#Variables>","FunctionEnvironment#Variables>"]}}},"AWS::Serverless::Function.IAMPolicyDocument":{"Documentation":"","Properties":{"Statement":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":"List","PrimitiveItemType":"Json"},"Version":{"Required":false,"PrimitiveType":"String","UpdateType":"Mutable"}}},"AWS::Serverless::Function.IoTRuleEvent":{"Documentation":"","Properties":{"AwsIotSqlVersion":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["IoTRuleEvent#AwsIotSqlVersion","IoTRuleEvent#AwsIotSqlVersion"]},"Sql":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["IoTRuleEvent#Sql","IoTRuleEvent#Sql"]}}},"AWS::Serverless::Function.KinesisEvent":{"Documentation":"","Properties":{"BatchSize":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["KinesisEvent#BatchSize","KinesisEvent#BatchSize","KinesisEvent#BatchSize"]},"StartingPosition":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["KinesisEvent#StartingPosition","KinesisEvent#StartingPosition"]},"Stream":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["KinesisEvent#Stream","KinesisEvent#Stream"]},"Enabled":{"Documentation":"","Required":false,"UpdateType":"Mutable","PrimitiveType":"Boolean"}}},"AWS::Serverless::Function.SQSEvent":{"Documentation":"","Properties":{"BatchSize":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["SQSEvent#BatchSize","SQSEvent#BatchSize","SQSEvent#BatchSize"]},"Queue":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["SQSEvent#Queue","SQSEvent#Queue","SQSEvent#Queue"]},"Enabled":{"Documentation":"","Required":false,"UpdateType":"Mutable","PrimitiveType":"Boolean"}}},"AWS::Serverless::Function.S3Event":{"Documentation":"","Properties":{"Bucket":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["S3Event#Bucket","S3Event#Bucket","S3Event#Bucket"]},"Events":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["S3Event#Events","S3Event#Events","S3Event#Events>","S3Event#Events>"]},"Filter":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":"S3NotificationFilter"}}},"AWS::Serverless::Function.S3Location":{"Documentation":"","Properties":{"Bucket":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["S3Location#Bucket","S3Location#Bucket"]},"Key":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["S3Location#Key","S3Location#Key"]},"Version":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["S3Location#Version","S3Location#Version","S3Location#Version"]}}},"AWS::Serverless::Function.S3NotificationFilter":{"Documentation":"","Properties":{"S3Key":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["S3NotificationFilter#S3Key","S3NotificationFilter#S3Key","S3NotificationFilter#S3Key"]}}},"AWS::Serverless::Function.SNSEvent":{"Documentation":"","Properties":{"Topic":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["SNSEvent#Topic","SNSEvent#Topic"]},"FilterPolicy":{"Documentation":"","Required":false,"UpdateType":"Mutable","PrimitiveType":"Json"}}},"AWS::Serverless::Function.ScheduleEvent":{"Documentation":"","Properties":{"Input":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["ScheduleEvent#Input","ScheduleEvent#Input"]},"Schedule":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["ScheduleEvent#Schedule","ScheduleEvent#Schedule"]}}},"AWS::Serverless::Function.VpcConfig":{"Documentation":"","Properties":{"SecurityGroupIds":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["VpcConfig#SecurityGroupIds>","VpcConfig#SecurityGroupIds>"]},"SubnetIds":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["VpcConfig#SubnetIds>","VpcConfig#SubnetIds>"]},"SubnetIdsUsingRef":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":"List","PrimitiveItemType":"Json"}}},"AWS::Serverless::SimpleTable.PrimaryKey":{"Documentation":"","Properties":{"Name":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["PrimaryKey#Name","PrimaryKey#Name"]},"Type":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["PrimaryKey#Type","PrimaryKey#Type"]}}},"AWS::Serverless::SimpleTable.ProvisionedThroughput":{"Documentation":"","Properties":{"ReadCapacityUnits":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["ProvisionedThroughput#ReadCapacityUnits","ProvisionedThroughput#ReadCapacityUnits","ProvisionedThroughput#ReadCapacityUnits"]},"WriteCapacityUnits":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["ProvisionedThroughput#WriteCapacityUnits","ProvisionedThroughput#WriteCapacityUnits","ProvisionedThroughput#WriteCapacityUnits"]}}},"AWS::Serverless::SimpleTable.SSESpecification":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-ssespecification.html","Properties":{"SSEEnabled":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-ssespecification.html#cfn-dynamodb-table-ssespecification-sseenabled","Required":true,"UpdateType":"Mutable","PrimitiveType":"Boolean"}}},"AWS::Serverless::Function.Hooks":{"Documentation":"https://github.com/awslabs/serverless-application-model/blob/develop/docs/safe_lambda_deployments.rst#pretraffic--posttraffic-hooks","Properties":{"PreTraffic":{"Required":false,"PrimitiveType":"String","UpdateType":"Mutable"},"PostTraffic":{"Required":false,"PrimitiveType":"String","UpdateType":"Mutable"}}},"AWS::Serverless::Function.DeploymentPreference":{"Documentation":"https://github.com/awslabs/serverless-application-model/blob/develop/versions/2016-10-31.md#deploymentpreference-object","Properties":{"Enabled":{"Required":false,"PrimitiveType":"Boolean","UpdateType":"Mutable"},"Type":{"Required":false,"PrimitiveType":"String","UpdateType":"Mutable"},"Alarms":{"Required":false,"Type":"List","PrimitiveItemType":"String","UpdateType":"Mutable"},"Hooks":{"Required":false,"Type":"Hooks","UpdateType":"Mutable"}}},"AWS::Serverless::Api.CorsConfiguration":{"Documentation":"https://github.com/awslabs/serverless-application-model/blob/develop/versions/2016-10-31.md#cors-configuration","Properties":{"AllowedHeaders":{"Required":false,"PrimitiveType":"String","UpdateType":"Mutable"},"AllowedMethods":{"Required":false,"PrimitiveType":"String","UpdateType":"Mutable"},"AllowedOrigin":{"Required":false,"PrimitiveType":"String","UpdateType":"Mutable"},"MaxAge":{"PrimitiveType":"Integer","Required":false,"UpdateType":"Mutable"}}},"AWS::Serverless::Api.MethodSetting":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html","Properties":{"CacheDataEncrypted":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-cachedataencrypted","PrimitiveType":"Boolean","Required":false,"UpdateType":"Mutable"},"CacheTtlInSeconds":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-cachettlinseconds","PrimitiveType":"Integer","Required":false,"UpdateType":"Mutable"},"CachingEnabled":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-cachingenabled","PrimitiveType":"Boolean","Required":false,"UpdateType":"Mutable"},"DataTraceEnabled":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-datatraceenabled","PrimitiveType":"Boolean","Required":false,"UpdateType":"Mutable"},"HttpMethod":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-httpmethod","PrimitiveType":"String","Required":false,"UpdateType":"Mutable"},"LoggingLevel":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-logginglevel","PrimitiveType":"String","Required":false,"UpdateType":"Mutable"},"MetricsEnabled":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-metricsenabled","PrimitiveType":"Boolean","Required":false,"UpdateType":"Mutable"},"ResourcePath":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-resourcepath","PrimitiveType":"String","Required":false,"UpdateType":"Mutable"},"ThrottlingBurstLimit":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-throttlingburstlimit","PrimitiveType":"Integer","Required":false,"UpdateType":"Mutable"},"ThrottlingRateLimit":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-throttlingratelimit","PrimitiveType":"Double","Required":false,"UpdateType":"Mutable"}}}},"ResourceTypes":{"AWS::Serverless::Api":{"Documentation":"https://github.com/awslabs/serverless-application-model/blob/develop/versions/2016-10-31.md#awsserverlessapi","AdditionalProperties":false,"Properties":{"CacheClusterEnabled":{"Documentation":"","Required":false,"UpdateType":"Mutable","PrimitiveType":"Boolean"},"CacheClusterSize":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#CacheClusterSize","#CacheClusterSize"]},"DefinitionBody":{"Documentation":"","Required":false,"UpdateType":"Mutable","PrimitiveType":"Json"},"DefinitionUri":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#DefinitionUri","#DefinitionUri","#DefinitionUri"]},"Name":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#Name","#Name"]},"StageName":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["#StageName","#StageName","#StageName"]},"TracingEnabled":{"Documentation":"","Required":false,"UpdateType":"Mutable","PrimitiveType":"Boolean"},"Variables":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#Variables>","#Variables>","#Variables>"]},"BinaryMediaTypes":{"Required":false,"Type":"List","PrimitiveItemType":"String","UpdateType":"Mutable"},"Cors":{"Required":false,"Type":["#Cors","#Cors"],"UpdateType":"Mutable"},"EndpointConfiguration":{"Required":false,"PrimitiveType":"String","UpdateType":"Mutable"},"MethodSettings":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-methodsettings","DuplicatesAllowed":false,"Required":false,"Type":"MethodSetting","UpdateType":"Mutable"}}},"AWS::Serverless::Function":{"Documentation":"https://github.com/awslabs/serverless-application-model/blob/develop/versions/2016-10-31.md#awsserverlessfunction","AdditionalProperties":false,"Properties":{"InlineCode":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#InlineCode","#InlineCode"]},"CodeUri":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#CodeUri","#CodeUri","#CodeUri"]},"DeadLetterQueue":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":"DeadLetterQueue"},"Description":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#Description","#Description"]},"Environment":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":"FunctionEnvironment"},"Events":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":"Map","ItemType":"EventSource"},"FunctionName":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#FunctionName","#FunctionName"]},"Handler":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#Handler","#Handler"]},"KmsKeyArn":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#KmsKeyArn","#KmsKeyArn"]},"MemorySize":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#MemorySize","#MemorySize","#MemorySize"]},"Policies":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#Policies","#Policies","#Policies","#Policies>"]},"Role":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#Role","#Role","#Role"]},"Runtime":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#Runtime","#Runtime"]},"Tags":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#Tags>","#Tags>"]},"Timeout":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#Timeout","#Timeout","#Timeout"]},"Tracing":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#Tracing","#Tracing"]},"VpcConfig":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":"VpcConfig"},"AutoPublishAlias":{"Required":false,"PrimitiveType":"String","UpdateType":"Mutable"},"DeploymentPreference":{"Required":false,"Type":"DeploymentPreference","UpdateType":"Mutable"},"ReservedConcurrentExecutions":{"Required":false,"PrimitiveType":"Integer","UpdateType":"Mutable"}}},"AWS::Serverless::SimpleTable":{"Documentation":"https://github.com/awslabs/serverless-application-model/blob/develop/versions/2016-10-31.md#awsserverlesssimpletable","AdditionalProperties":false,"Properties":{"PrimaryKey":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":"PrimaryKey"},"ProvisionedThroughput":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":"ProvisionedThroughput"},"SSESpecification":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":"SSESpecification"},"Tags":{"DuplicatesAllowed":false,"Required":false,"Type":"Map","ItemType":"String","UpdateType":"Mutable"},"TableName":{"Required":false,"PrimitiveType":"String","UpdateType":"Mutable"}}}}} \ No newline at end of file +{"PropertyTypes":{"AWS::Serverless::Api.S3Location":{"Documentation":"","Properties":{"Bucket":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["S3Location#Bucket","S3Location#Bucket"]},"Key":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["S3Location#Key","S3Location#Key"]},"Version":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["S3Location#Version","S3Location#Version","S3Location#Version"]}}},"AWS::Serverless::Function.AlexaSkillEvent":{"Documentation":"","Properties":{"Variables":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["AlexaSkillEvent#Variables>","AlexaSkillEvent#Variables>"]}}},"AWS::Serverless::Function.ApiEvent":{"Documentation":"","Properties":{"Method":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["ApiEvent#Method","ApiEvent#Method"]},"Path":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["ApiEvent#Path","ApiEvent#Path"]},"RestApiId":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["ApiEvent#RestApiId","ApiEvent#RestApiId","ApiEvent#RestApiId"]}}},"AWS::Serverless::Function.CloudWatchEventEvent":{"Documentation":"","Properties":{"Input":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["CloudWatchEventEvent#Input","CloudWatchEventEvent#Input"]},"InputPath":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["CloudWatchEventEvent#InputPath","CloudWatchEventEvent#InputPath"]},"Pattern":{"Documentation":"","Required":true,"UpdateType":"Mutable","PrimitiveType":"Json"}}},"AWS::Serverless::Function.LogEvent":{"Documentation":"","Properties":{"LogGroupName":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["LogEvent#LogGroupName","LogEvent#LogGroupName"]},"FilterPattern":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["LogEvent#FilterPattern","LogEvent#FilterPattern"]}}},"AWS::Serverless::Function.DeadLetterQueue":{"Documentation":"","Properties":{"TargetArn":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["DeadLetterQueue#TargetArn","DeadLetterQueue#TargetArn"]},"Type":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["DeadLetterQueue#Type","DeadLetterQueue#Type"]}}},"AWS::Serverless::Function.DynamoDBEvent":{"Documentation":"","Properties":{"BatchSize":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["DynamoDBEvent#BatchSize","DynamoDBEvent#BatchSize","DynamoDBEvent#BatchSize"]},"StartingPosition":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["DynamoDBEvent#StartingPosition","DynamoDBEvent#StartingPosition"]},"Stream":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["DynamoDBEvent#Stream","DynamoDBEvent#Stream"]},"Enabled":{"Documentation":"","Required":false,"UpdateType":"Mutable","PrimitiveType":"Boolean"}}},"AWS::Serverless::Function.EventSource":{"Documentation":"","Properties":{"Properties":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["EventSource#Properties","EventSource#Properties","EventSource#Properties","EventSource#Properties","EventSource#Properties","EventSource#Properties","EventSource#Properties","EventSource#Properties","EventSource#Properties","EventSource#Properties","EventSource#Properties"]},"Type":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["EventSource#Type","EventSource#Type"]}}},"AWS::Serverless::Function.FunctionEnvironment":{"Documentation":"","Properties":{"Variables":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["FunctionEnvironment#Variables>","FunctionEnvironment#Variables>"]}}},"AWS::Serverless::Function.IAMPolicyDocument":{"Documentation":"","Properties":{"Statement":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":"List","PrimitiveItemType":"Json"},"Version":{"Required":false,"PrimitiveType":"String","UpdateType":"Mutable"}}},"AWS::Serverless::Function.IoTRuleEvent":{"Documentation":"","Properties":{"AwsIotSqlVersion":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["IoTRuleEvent#AwsIotSqlVersion","IoTRuleEvent#AwsIotSqlVersion"]},"Sql":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["IoTRuleEvent#Sql","IoTRuleEvent#Sql"]}}},"AWS::Serverless::Function.KinesisEvent":{"Documentation":"","Properties":{"BatchSize":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["KinesisEvent#BatchSize","KinesisEvent#BatchSize","KinesisEvent#BatchSize"]},"StartingPosition":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["KinesisEvent#StartingPosition","KinesisEvent#StartingPosition"]},"Stream":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["KinesisEvent#Stream","KinesisEvent#Stream"]},"Enabled":{"Documentation":"","Required":false,"UpdateType":"Mutable","PrimitiveType":"Boolean"}}},"AWS::Serverless::Function.SQSEvent":{"Documentation":"","Properties":{"BatchSize":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["SQSEvent#BatchSize","SQSEvent#BatchSize","SQSEvent#BatchSize"]},"Queue":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["SQSEvent#Queue","SQSEvent#Queue","SQSEvent#Queue"]},"Enabled":{"Documentation":"","Required":false,"UpdateType":"Mutable","PrimitiveType":"Boolean"}}},"AWS::Serverless::Function.S3Event":{"Documentation":"","Properties":{"Bucket":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["S3Event#Bucket","S3Event#Bucket","S3Event#Bucket"]},"Events":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["S3Event#Events","S3Event#Events","S3Event#Events>","S3Event#Events>"]},"Filter":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":"S3NotificationFilter"}}},"AWS::Serverless::Function.S3Location":{"Documentation":"","Properties":{"Bucket":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["S3Location#Bucket","S3Location#Bucket"]},"Key":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["S3Location#Key","S3Location#Key"]},"Version":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["S3Location#Version","S3Location#Version","S3Location#Version"]}}},"AWS::Serverless::Function.S3NotificationFilter":{"Documentation":"","Properties":{"S3Key":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["S3NotificationFilter#S3Key","S3NotificationFilter#S3Key","S3NotificationFilter#S3Key"]}}},"AWS::Serverless::Function.SNSEvent":{"Documentation":"","Properties":{"Topic":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["SNSEvent#Topic","SNSEvent#Topic"]},"FilterPolicy":{"Documentation":"","Required":false,"UpdateType":"Mutable","PrimitiveType":"Json"}}},"AWS::Serverless::Function.ScheduleEvent":{"Documentation":"","Properties":{"Input":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["ScheduleEvent#Input","ScheduleEvent#Input"]},"Schedule":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["ScheduleEvent#Schedule","ScheduleEvent#Schedule"]}}},"AWS::Serverless::Function.VpcConfig":{"Documentation":"","Properties":{"SecurityGroupIds":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["VpcConfig#SecurityGroupIds>","VpcConfig#SecurityGroupIds>"]},"SubnetIds":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["VpcConfig#SubnetIds>","VpcConfig#SubnetIds>"]},"SubnetIdsUsingRef":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":"List","PrimitiveItemType":"Json"}}},"AWS::Serverless::SimpleTable.PrimaryKey":{"Documentation":"","Properties":{"Name":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["PrimaryKey#Name","PrimaryKey#Name"]},"Type":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["PrimaryKey#Type","PrimaryKey#Type"]}}},"AWS::Serverless::SimpleTable.ProvisionedThroughput":{"Documentation":"","Properties":{"ReadCapacityUnits":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["ProvisionedThroughput#ReadCapacityUnits","ProvisionedThroughput#ReadCapacityUnits","ProvisionedThroughput#ReadCapacityUnits"]},"WriteCapacityUnits":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["ProvisionedThroughput#WriteCapacityUnits","ProvisionedThroughput#WriteCapacityUnits","ProvisionedThroughput#WriteCapacityUnits"]}}},"AWS::Serverless::SimpleTable.SSESpecification":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-ssespecification.html","Properties":{"SSEEnabled":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-ssespecification.html#cfn-dynamodb-table-ssespecification-sseenabled","Required":true,"UpdateType":"Mutable","PrimitiveType":"Boolean"}}},"AWS::Serverless::Function.Hooks":{"Documentation":"https://github.com/awslabs/serverless-application-model/blob/develop/docs/safe_lambda_deployments.rst#pretraffic--posttraffic-hooks","Properties":{"PreTraffic":{"Required":false,"PrimitiveType":"String","UpdateType":"Mutable"},"PostTraffic":{"Required":false,"PrimitiveType":"String","UpdateType":"Mutable"}}},"AWS::Serverless::Function.DeploymentPreference":{"Documentation":"https://github.com/awslabs/serverless-application-model/blob/develop/versions/2016-10-31.md#deploymentpreference-object","Properties":{"Enabled":{"Required":false,"PrimitiveType":"Boolean","UpdateType":"Mutable"},"Type":{"Required":false,"PrimitiveType":"String","UpdateType":"Mutable"},"Alarms":{"Required":false,"Type":"List","PrimitiveItemType":"String","UpdateType":"Mutable"},"Hooks":{"Required":false,"Type":"Hooks","UpdateType":"Mutable"}}},"AWS::Serverless::Api.CorsConfiguration":{"Documentation":"https://github.com/awslabs/serverless-application-model/blob/develop/versions/2016-10-31.md#cors-configuration","Properties":{"AllowedHeaders":{"Required":false,"PrimitiveType":"String","UpdateType":"Mutable"},"AllowedMethods":{"Required":false,"PrimitiveType":"String","UpdateType":"Mutable"},"AllowedOrigin":{"Required":false,"PrimitiveType":"String","UpdateType":"Mutable"},"MaxAge":{"PrimitiveType":"Integer","Required":false,"UpdateType":"Mutable"}}},"AWS::Serverless::Api.MethodSetting":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html","Properties":{"CacheDataEncrypted":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-cachedataencrypted","PrimitiveType":"Boolean","Required":false,"UpdateType":"Mutable"},"CacheTtlInSeconds":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-cachettlinseconds","PrimitiveType":"Integer","Required":false,"UpdateType":"Mutable"},"CachingEnabled":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-cachingenabled","PrimitiveType":"Boolean","Required":false,"UpdateType":"Mutable"},"DataTraceEnabled":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-datatraceenabled","PrimitiveType":"Boolean","Required":false,"UpdateType":"Mutable"},"HttpMethod":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-httpmethod","PrimitiveType":"String","Required":true,"UpdateType":"Mutable"},"LoggingLevel":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-logginglevel","PrimitiveType":"String","Required":false,"UpdateType":"Mutable"},"MetricsEnabled":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-metricsenabled","PrimitiveType":"Boolean","Required":false,"UpdateType":"Mutable"},"ResourcePath":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-resourcepath","PrimitiveType":"String","Required":true,"UpdateType":"Mutable"},"ThrottlingBurstLimit":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-throttlingburstlimit","PrimitiveType":"Integer","Required":false,"UpdateType":"Mutable"},"ThrottlingRateLimit":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-throttlingratelimit","PrimitiveType":"Double","Required":false,"UpdateType":"Mutable"}}}},"ResourceTypes":{"AWS::Serverless::Api":{"Documentation":"https://github.com/awslabs/serverless-application-model/blob/develop/versions/2016-10-31.md#awsserverlessapi","AdditionalProperties":false,"Properties":{"CacheClusterEnabled":{"Documentation":"","Required":false,"UpdateType":"Mutable","PrimitiveType":"Boolean"},"CacheClusterSize":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#CacheClusterSize","#CacheClusterSize"]},"DefinitionBody":{"Documentation":"","Required":false,"UpdateType":"Mutable","PrimitiveType":"Json"},"DefinitionUri":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#DefinitionUri","#DefinitionUri","#DefinitionUri"]},"Name":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#Name","#Name"]},"StageName":{"Documentation":"","Required":true,"UpdateType":"Mutable","Type":["#StageName","#StageName","#StageName"]},"TracingEnabled":{"Documentation":"","Required":false,"UpdateType":"Mutable","PrimitiveType":"Boolean"},"Variables":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#Variables>","#Variables>","#Variables>"]},"BinaryMediaTypes":{"Required":false,"Type":"List","PrimitiveItemType":"String","UpdateType":"Mutable"},"Cors":{"Required":false,"Type":["#Cors","#Cors"],"UpdateType":"Mutable"},"EndpointConfiguration":{"Required":false,"PrimitiveType":"String","UpdateType":"Mutable"},"MethodSettings":{"Documentation":"http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-methodsettings","DuplicatesAllowed":false,"Required":false,"Type":"List","ItemType":"MethodSetting","UpdateType":"Mutable"}}},"AWS::Serverless::Function":{"Documentation":"https://github.com/awslabs/serverless-application-model/blob/develop/versions/2016-10-31.md#awsserverlessfunction","AdditionalProperties":false,"Properties":{"InlineCode":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#InlineCode","#InlineCode"]},"CodeUri":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#CodeUri","#CodeUri","#CodeUri"]},"DeadLetterQueue":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":"DeadLetterQueue"},"Description":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#Description","#Description"]},"Environment":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":"FunctionEnvironment"},"Events":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":"Map","ItemType":"EventSource"},"FunctionName":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#FunctionName","#FunctionName"]},"Handler":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#Handler","#Handler"]},"KmsKeyArn":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#KmsKeyArn","#KmsKeyArn"]},"MemorySize":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#MemorySize","#MemorySize","#MemorySize"]},"Policies":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#Policies","#Policies","#Policies","#Policies>"]},"Role":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#Role","#Role","#Role"]},"Runtime":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#Runtime","#Runtime"]},"Tags":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#Tags>","#Tags>"]},"Timeout":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#Timeout","#Timeout","#Timeout"]},"Tracing":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":["#Tracing","#Tracing"]},"VpcConfig":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":"VpcConfig"},"AutoPublishAlias":{"Required":false,"PrimitiveType":"String","UpdateType":"Mutable"},"DeploymentPreference":{"Required":false,"Type":"DeploymentPreference","UpdateType":"Mutable"},"ReservedConcurrentExecutions":{"Required":false,"PrimitiveType":"Integer","UpdateType":"Mutable"}}},"AWS::Serverless::SimpleTable":{"Documentation":"https://github.com/awslabs/serverless-application-model/blob/develop/versions/2016-10-31.md#awsserverlesssimpletable","AdditionalProperties":false,"Properties":{"PrimaryKey":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":"PrimaryKey"},"ProvisionedThroughput":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":"ProvisionedThroughput"},"SSESpecification":{"Documentation":"","Required":false,"UpdateType":"Mutable","Type":"SSESpecification"},"Tags":{"DuplicatesAllowed":false,"Required":false,"Type":"Map","ItemType":"String","UpdateType":"Mutable"},"TableName":{"Required":false,"PrimitiveType":"String","UpdateType":"Mutable"}}}}} \ No newline at end of file diff --git a/data/sam_20161031_custom_specification.json b/data/sam_20161031_custom_specification.json index 71fd0c6..f0a81cc 100644 --- a/data/sam_20161031_custom_specification.json +++ b/data/sam_20161031_custom_specification.json @@ -113,7 +113,7 @@ "HttpMethod": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-httpmethod", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, "LoggingLevel": { @@ -131,7 +131,7 @@ "ResourcePath": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-stage-methodsetting.html#cfn-apigateway-stage-methodsetting-resourcepath", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, "ThrottlingBurstLimit": { @@ -220,7 +220,8 @@ "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-methodsettings", "DuplicatesAllowed": false, "Required": false, - "Type": "MethodSetting", + "Type": "List", + "ItemType": "MethodSetting", "UpdateType": "Mutable" } } diff --git a/package.json b/package.json index c0e7190..b4c3865 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "@types/clone": "^0.1.30", "@types/colors": "~1.1.3", "@types/commander": "^2.11.0", - "@types/js-yaml": "^3.9.1", + "@types/js-yaml": "^3.12.0", "@types/mocha": "^2.2.44", "@types/node": "^8.0.50", "@types/opn": "^3.0.28", diff --git a/src/fixes.d.ts b/src/fixes.d.ts deleted file mode 100644 index acaea2a..0000000 --- a/src/fixes.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import yaml = require('js-yaml') - -declare module 'js-yaml' { - export interface LoadOptions { - onWarning?: (warning: string) => void; - } -} \ No newline at end of file diff --git a/src/test/validatorTest.ts b/src/test/validatorTest.ts index 69f5f6e..7460618 100644 --- a/src/test/validatorTest.ts +++ b/src/test/validatorTest.ts @@ -1910,5 +1910,19 @@ describe('validator', () => { expect(result).to.have.deep.property('templateValid', true); expect(result['errors']['crit']).to.have.lengthOf(0); }); + + it('a invalid APIGateway::Stage.MethodSettings type (sam_20161031_api_methodsettings_not_a_list.yaml) should invalidate successfully', () => { + const input = 'testData/invalid/yaml/sam_20161031_api_methodsettings_not_a_list.yaml'; + let result = validator.validateFile(input); + expect(result).to.have.deep.property('templateValid', false); + expect(result['errors']['crit']).to.have.lengthOf(1); + }); + + it('a valid APIGateway::Stage.MethodSettings containing incomplete APIGateway::Stage.MethodSetting (sam_20161031_api_methodsettings_missing_required.yaml) should invalidate successfully', () => { + const input = 'testData/invalid/yaml/sam_20161031_api_methodsettings_missing_required.yaml'; + let result = validator.validateFile(input); + expect(result).to.have.deep.property('templateValid', false); + expect(result['errors']['crit']).to.have.lengthOf(2); + }); }); }); diff --git a/testData/invalid/yaml/sam_20161031_api_methodsettings_missing_required.yaml b/testData/invalid/yaml/sam_20161031_api_methodsettings_missing_required.yaml new file mode 100644 index 0000000..3ad2ac0 --- /dev/null +++ b/testData/invalid/yaml/sam_20161031_api_methodsettings_missing_required.yaml @@ -0,0 +1,81 @@ +AWSTemplateFormatVersion : '2010-09-09' +Transform: AWS::Serverless-2016-10-31 +Description: A hello world application. + +Globals: + Function: + Handler: index.handler + Runtime: nodejs6.10 + CodeUri: src/ + DeadLetterQueue: + Type: SNS + TargetArn: arn:aws:sns:us-east-1:84969EXAMPLE:DeadLetterQueue + Description: somethingCool + MemorySize: 512 + Timeout: 10 + VpcConfig: + SecurityGroupIds: + - SGID0 + SubnetIds: + - SID0 + Environment: + Variables: + VAR0: 0 + Tags: + TAG0: tag0 + Tracing: PassThrough + KmsKeyArn: arn:aws:sns:us-east-1:84969EXAMPLE:KmsKeyArn + AutoPublishAlias: live + DeploymentPreference: + Type: Linear10PercentEvery10Minutes + + Api: + Name: ServerlessRestApi + DefinitionUri: s3://s3-eu-west-1.amazonaws.com/s3test.example.com + CacheClusterEnabled: True + CacheClusterSize: 1024M + Variables: + VAR1: 1 + EndpointConfiguration: EDGE + MethodSettings: + - CacheDataEncrypted: True + BinaryMediaTypes: + - image~1gif + - image~1png + Cors: example.com + + SimpleTable: + SSESpecification: + SSEEnabled: True + + +Resources: + HelloWorldFunction: + Type: AWS::Serverless::Function + Properties: + VpcConfig: + SecurityGroupIds: + - SGID1 + SubnetIds: + - SID1 + Tags: + TAG1: tag1 + Environment: + Variables: + VAR2: shouldBe2 + + HelloWorldAPI: + Type: AWS::Serverless::Api + Properties: + StageName: Prod + EndpointConfiguration: REGIONAL + BinaryMediaTypes: + - image~1exe + Variables: + VAR2: 2 + VAR3: 3 + + HelloWorldTable: + Type: AWS::Serverless::SimpleTable + Properties: + TableName: example-table diff --git a/testData/invalid/yaml/sam_20161031_api_methodsettings_not_a_list.yaml b/testData/invalid/yaml/sam_20161031_api_methodsettings_not_a_list.yaml new file mode 100644 index 0000000..5bcc14f --- /dev/null +++ b/testData/invalid/yaml/sam_20161031_api_methodsettings_not_a_list.yaml @@ -0,0 +1,83 @@ +AWSTemplateFormatVersion : '2010-09-09' +Transform: AWS::Serverless-2016-10-31 +Description: A hello world application. + +Globals: + Function: + Handler: index.handler + Runtime: nodejs6.10 + CodeUri: src/ + DeadLetterQueue: + Type: SNS + TargetArn: arn:aws:sns:us-east-1:84969EXAMPLE:DeadLetterQueue + Description: somethingCool + MemorySize: 512 + Timeout: 10 + VpcConfig: + SecurityGroupIds: + - SGID0 + SubnetIds: + - SID0 + Environment: + Variables: + VAR0: 0 + Tags: + TAG0: tag0 + Tracing: PassThrough + KmsKeyArn: arn:aws:sns:us-east-1:84969EXAMPLE:KmsKeyArn + AutoPublishAlias: live + DeploymentPreference: + Type: Linear10PercentEvery10Minutes + + Api: + Name: ServerlessRestApi + DefinitionUri: s3://s3-eu-west-1.amazonaws.com/s3test.example.com + CacheClusterEnabled: True + CacheClusterSize: 1024M + Variables: + VAR1: 1 + EndpointConfiguration: EDGE + MethodSettings: + HttpMethod: GET + ResourcePath: /* + CacheDataEncrypted: True + BinaryMediaTypes: + - image~1gif + - image~1png + Cors: example.com + + SimpleTable: + SSESpecification: + SSEEnabled: True + + +Resources: + HelloWorldFunction: + Type: AWS::Serverless::Function + Properties: + VpcConfig: + SecurityGroupIds: + - SGID1 + SubnetIds: + - SID1 + Tags: + TAG1: tag1 + Environment: + Variables: + VAR2: shouldBe2 + + HelloWorldAPI: + Type: AWS::Serverless::Api + Properties: + StageName: Prod + EndpointConfiguration: REGIONAL + BinaryMediaTypes: + - image~1exe + Variables: + VAR2: 2 + VAR3: 3 + + HelloWorldTable: + Type: AWS::Serverless::SimpleTable + Properties: + TableName: example-table diff --git a/testData/valid/yaml/sam_20161031_globals.yaml b/testData/valid/yaml/sam_20161031_globals.yaml index 0b0cded..6ee3a35 100644 --- a/testData/valid/yaml/sam_20161031_globals.yaml +++ b/testData/valid/yaml/sam_20161031_globals.yaml @@ -39,7 +39,10 @@ Globals: VAR1: 1 EndpointConfiguration: EDGE MethodSettings: - CacheDataEncrypted: True + - HttpMethod: GET + ResourcePath: /* + MetricsEnabled: 'true' + DataTraceEnabled: 'true' BinaryMediaTypes: - image~1gif - image~1png