cfndsl 0.17.5 → 1.0.0.pre.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +4 -4
  4. data/.travis.yml +6 -1
  5. data/CHANGELOG.md +32 -34
  6. data/README.md +68 -21
  7. data/Rakefile +25 -3
  8. data/TODO.md +18 -0
  9. data/UPGRADING.md +22 -0
  10. data/cfndsl.gemspec +3 -3
  11. data/exe/cfndsl +5 -0
  12. data/lib/cfndsl.rb +2 -116
  13. data/lib/cfndsl/aws/cloud_formation_template.rb +8 -1
  14. data/lib/cfndsl/aws/patches/000_sam.spec.json +574 -0
  15. data/lib/cfndsl/aws/patches/100_sam.spec_DeploymentPreference_patch.json +64 -0
  16. data/lib/cfndsl/aws/patches/500_Cognito_IdentityPoolRoleAttachment_patches.json +25 -0
  17. data/lib/cfndsl/aws/patches/500_IoT1Click_patch_PlacementTemplate_DeviceTemplates.json +20 -0
  18. data/lib/cfndsl/aws/patches/500_SAM_Serverless_Function_S3Event_Events_patch.json +16 -0
  19. data/lib/cfndsl/aws/patches/500_SAM_Serverless_Function_S3Location_Version_patch.json +16 -0
  20. data/lib/cfndsl/aws/patches/500_SSM_AssociationName_patch.json +16 -0
  21. data/lib/cfndsl/aws/patches/500_VPCEndpoint_patch.json +17 -0
  22. data/lib/cfndsl/aws/patches/510_ElasticSearch_Domain_patches.json +15 -0
  23. data/lib/cfndsl/aws/patches/600_RefKinds_patch.json +3654 -0
  24. data/lib/cfndsl/aws/patches/700_SAM_Serverless_Function_InlineCode_patch.json +20 -0
  25. data/lib/cfndsl/aws/patches/800_List_types_patch.json +115 -0
  26. data/lib/cfndsl/aws/resource_specification.json +35809 -11627
  27. data/lib/cfndsl/aws/types.rb +3 -3
  28. data/lib/cfndsl/cfnlego.rb +34 -0
  29. data/lib/{cfnlego → cfndsl/cfnlego}/cloudformation.erb +0 -0
  30. data/lib/{cfnlego → cfndsl/cfnlego}/cloudformation.rb +0 -0
  31. data/lib/{cfnlego → cfndsl/cfnlego}/resource.rb +3 -8
  32. data/lib/cfndsl/cloudformation.rb +107 -0
  33. data/lib/cfndsl/conditions.rb +11 -1
  34. data/lib/cfndsl/creation_policy.rb +1 -1
  35. data/lib/cfndsl/deep_merge.rb +4 -0
  36. data/lib/cfndsl/external_parameters.rb +4 -13
  37. data/lib/cfndsl/globals.rb +48 -9
  38. data/lib/cfndsl/jsonable.rb +22 -60
  39. data/lib/cfndsl/mappings.rb +1 -1
  40. data/lib/cfndsl/module.rb +16 -5
  41. data/lib/cfndsl/orchestration_template.rb +185 -83
  42. data/lib/cfndsl/outputs.rb +5 -1
  43. data/lib/cfndsl/parameters.rb +1 -1
  44. data/lib/cfndsl/plurals.rb +12 -1
  45. data/lib/cfndsl/properties.rb +1 -1
  46. data/lib/cfndsl/rake_task.rb +206 -12
  47. data/lib/cfndsl/ref_check.rb +19 -11
  48. data/lib/cfndsl/resources.rb +6 -19
  49. data/lib/cfndsl/rules.rb +1 -1
  50. data/lib/cfndsl/runner.rb +143 -0
  51. data/lib/cfndsl/specification.rb +80 -95
  52. data/lib/cfndsl/types.rb +205 -91
  53. data/lib/cfndsl/update_policy.rb +1 -1
  54. data/lib/cfndsl/version.rb +1 -1
  55. data/sample/autoscale.rb +0 -1
  56. data/sample/autoscale2.rb +0 -1
  57. data/sample/config_service.rb +2 -2
  58. data/sample/t1.rb +1 -1
  59. data/sample/vpc_example.rb +1 -1
  60. data/sample/vpc_with_vpn_example.rb +1 -1
  61. data/spec/aws/list_type_patches_spec.rb +35 -0
  62. data/spec/aws/nested_arrays_spec.rb +155 -3
  63. data/spec/aws/serverless_spec.rb +0 -2
  64. data/spec/cfndsl_spec.rb +94 -78
  65. data/spec/cli_spec.rb +16 -54
  66. data/spec/cloud_formation_template_spec.rb +233 -0
  67. data/spec/condition_spec.rb +24 -0
  68. data/spec/direct_ruby_spec.rb +19 -0
  69. data/spec/external_parameters_spec.rb +2 -15
  70. data/spec/fixtures/condition-assertion.json +1 -0
  71. data/spec/fixtures/test.rb +2 -1
  72. data/spec/generate_spec.rb +4 -2
  73. data/spec/resources_spec.rb +0 -7
  74. data/spec/spec_helper.rb +2 -7
  75. data/spec/support/shared_examples/orchestration_template.rb +15 -2
  76. data/spec/types_definition_spec.rb +3 -6
  77. metadata +52 -23
  78. data/bin/cfndsl +0 -160
  79. data/lib/cfndsl/errors.rb +0 -31
  80. data/lib/cfndsl/os/heat_template.rb +0 -18
  81. data/lib/cfndsl/os/types.rb +0 -14
  82. data/lib/cfndsl/os/types.yaml +0 -2423
  83. data/lib/cfndsl/patches.rb +0 -226
  84. data/lib/cfnlego.rb +0 -44
  85. data/spec/fixtures/heattest.rb +0 -24
  86. data/spec/heat_template_spec.rb +0 -7
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'cfndsl/orchestration_template'
3
+ require_relative '../orchestration_template'
4
+ require_relative 'types'
4
5
 
5
6
  module CfnDsl
6
7
  # Cloud Formation Templates
@@ -13,6 +14,12 @@ module CfnDsl
13
14
  CfnDsl::AWS::Types
14
15
  end
15
16
 
17
+ def self.check_types(file: nil, version: nil)
18
+ version = Gem::Version.new(version || '0.0.0') unless version.is_a?(Gem::Version)
19
+ raise Error, "CfnDsl Types and Resources loaded from #{template_types['File']}, expected #{file}" if file && file != template_types['File']
20
+ raise Error, "CfnDsl Types and Resources version #{template_types['Version']}, expected at least #{version}" if template_types['Version'] < version
21
+ end
22
+
16
23
  create_types
17
24
  end
18
25
  end
@@ -0,0 +1,574 @@
1
+ {
2
+ "PropertyTypes": {
3
+ "AWS::Serverless::Api.S3Location": {
4
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#s3-location-object",
5
+ "Properties": {
6
+ "Bucket": {
7
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction",
8
+ "PrimitiveType": "String",
9
+ "Required": true,
10
+ "UpdateType": "Immutable"
11
+ },
12
+ "Key": {
13
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction",
14
+ "PrimitiveType": "String",
15
+ "Required": true,
16
+ "UpdateType": "Immutable"
17
+ },
18
+ "Version": {
19
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction",
20
+ "PrimitiveType": "Integer",
21
+ "Required": true,
22
+ "UpdateType": "Immutable"
23
+ }
24
+ }
25
+ },
26
+ "AWS::Serverless::Function.AlexaSkillEvent": {
27
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#alexaskill",
28
+ "Properties": {
29
+ "Variables": {
30
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#alexaskill",
31
+ "PrimitiveItemType": "String",
32
+ "Required": false,
33
+ "Type": "Map",
34
+ "UpdateType": "Immutable"
35
+ }
36
+ }
37
+ },
38
+ "AWS::Serverless::Function.ApiEvent": {
39
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api",
40
+ "Properties": {
41
+ "Method": {
42
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api",
43
+ "PrimitiveType": "String",
44
+ "Required": true,
45
+ "UpdateType": "Immutable"
46
+ },
47
+ "Path": {
48
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api",
49
+ "PrimitiveType": "String",
50
+ "Required": true,
51
+ "UpdateType": "Immutable"
52
+ },
53
+ "RestApiId": {
54
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api",
55
+ "PrimitiveType": "String",
56
+ "Required": false,
57
+ "UpdateType": "Immutable"
58
+ }
59
+ }
60
+ },
61
+ "AWS::Serverless::Function.CloudWatchEventEvent": {
62
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#cloudwatchevent",
63
+ "Properties": {
64
+ "Input": {
65
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#cloudwatchevent",
66
+ "PrimitiveType": "String",
67
+ "Required": false,
68
+ "UpdateType": "Immutable"
69
+ },
70
+ "InputPath": {
71
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#cloudwatchevent",
72
+ "PrimitiveType": "String",
73
+ "Required": false,
74
+ "UpdateType": "Immutable"
75
+ },
76
+ "Pattern": {
77
+ "Documentation": "http://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatchEventsandEventPatterns.html",
78
+ "PrimitiveType": "Json",
79
+ "Required": true,
80
+ "UpdateType": "Immutable"
81
+ }
82
+ }
83
+ },
84
+ "AWS::Serverless::Function.DeadLetterQueue": {
85
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#deadletterqueue-object",
86
+ "Properties": {
87
+ "TargetArn": {
88
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction",
89
+ "PrimitiveType": "String",
90
+ "Required": true,
91
+ "UpdateType": "Immutable"
92
+ },
93
+ "Type": {
94
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction",
95
+ "PrimitiveType": "String",
96
+ "Required": true,
97
+ "UpdateType": "Immutable"
98
+ }
99
+ }
100
+ },
101
+ "AWS::Serverless::Function.DynamoDBEvent": {
102
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#dynamodb",
103
+ "Properties": {
104
+ "BatchSize": {
105
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#dynamodb",
106
+ "PrimitiveType": "Integer",
107
+ "Required": true,
108
+ "UpdateType": "Immutable"
109
+ },
110
+ "StartingPosition": {
111
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#dynamodb",
112
+ "PrimitiveType": "String",
113
+ "Required": true,
114
+ "UpdateType": "Immutable"
115
+ },
116
+ "Stream": {
117
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#dynamodb",
118
+ "PrimitiveType": "String",
119
+ "Required": true,
120
+ "UpdateType": "Immutable"
121
+ }
122
+ }
123
+ },
124
+ "AWS::Serverless::Function.EventSource": {
125
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#event-source-object",
126
+ "Properties": {
127
+ "Properties": {
128
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#event-source-types",
129
+ "Required": true,
130
+ "Types": [
131
+ "S3Event",
132
+ "SNSEvent",
133
+ "SQSEvent",
134
+ "KinesisEvent",
135
+ "DynamoDBEvent",
136
+ "ApiEvent",
137
+ "ScheduleEvent",
138
+ "CloudWatchEventEvent",
139
+ "IoTRuleEvent",
140
+ "AlexaSkillEvent"
141
+ ],
142
+ "UpdateType": "Immutable"
143
+ },
144
+ "Type": {
145
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#event-source-object",
146
+ "PrimitiveType": "String",
147
+ "Required": true,
148
+ "UpdateType": "Immutable"
149
+ }
150
+ }
151
+ },
152
+ "AWS::Serverless::Function.FunctionEnvironment": {
153
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#environment-object",
154
+ "Properties": {
155
+ "Variables": {
156
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#environment-object",
157
+ "PrimitiveItemType": "String",
158
+ "Required": true,
159
+ "Type": "Map",
160
+ "UpdateType": "Immutable"
161
+ }
162
+ }
163
+ },
164
+ "AWS::Serverless::Function.IAMPolicyDocument": {
165
+ "Documentation": "http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html",
166
+ "Properties": {
167
+ "Statement": {
168
+ "Documentation": "http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html",
169
+ "PrimitiveType": "Json",
170
+ "Required": true,
171
+ "UpdateType": "Immutable"
172
+ }
173
+ }
174
+ },
175
+ "AWS::Serverless::Function.IoTRuleEvent": {
176
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#iotrule",
177
+ "Properties": {
178
+ "AwsIotSqlVersion": {
179
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#iotrule",
180
+ "PrimitiveType": "String",
181
+ "Required": false,
182
+ "UpdateType": "Immutable"
183
+ },
184
+ "Sql": {
185
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#iotrule",
186
+ "PrimitiveType": "String",
187
+ "Required": true,
188
+ "UpdateType": "Immutable"
189
+ }
190
+ }
191
+ },
192
+ "AWS::Serverless::Function.KinesisEvent": {
193
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#kinesis",
194
+ "Properties": {
195
+ "BatchSize": {
196
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#kinesis",
197
+ "PrimitiveType": "Integer",
198
+ "Required": false,
199
+ "UpdateType": "Immutable"
200
+ },
201
+ "StartingPosition": {
202
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#kinesis",
203
+ "PrimitiveType": "String",
204
+ "Required": true,
205
+ "UpdateType": "Immutable"
206
+ },
207
+ "Stream": {
208
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#kinesis",
209
+ "PrimitiveType": "String",
210
+ "Required": true,
211
+ "UpdateType": "Immutable"
212
+ }
213
+ }
214
+ },
215
+ "AWS::Serverless::Function.S3Event": {
216
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#s3",
217
+ "Properties": {
218
+ "Bucket": {
219
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#s3",
220
+ "PrimitiveType": "String",
221
+ "Required": true,
222
+ "UpdateType": "Immutable"
223
+ },
224
+ "Events": {
225
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#s3",
226
+ "PrimitiveItemTypes": [
227
+ "String"
228
+ ],
229
+ "PrimitiveTypes": [
230
+ "String"
231
+ ],
232
+ "Required": true
233
+ },
234
+ "Filter": {
235
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#s3",
236
+ "Required": false,
237
+ "Type": "S3NotificationFilter",
238
+ "UpdateType": "Immutable"
239
+ }
240
+ }
241
+ },
242
+ "AWS::Serverless::Function.S3Location": {
243
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#s3-location-object",
244
+ "Properties": {
245
+ "Bucket": {
246
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction",
247
+ "PrimitiveType": "String",
248
+ "Required": true,
249
+ "UpdateType": "Immutable"
250
+ },
251
+ "Key": {
252
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction",
253
+ "PrimitiveType": "String",
254
+ "Required": true,
255
+ "UpdateType": "Immutable"
256
+ },
257
+ "Version": {
258
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction",
259
+ "PrimitiveType": "Integer",
260
+ "Required": true,
261
+ "UpdateType": "Immutable"
262
+ }
263
+ }
264
+ },
265
+ "AWS::Serverless::Function.S3NotificationFilter": {
266
+ "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfiguration-config-filter.html",
267
+ "Properties": {
268
+ "S3Key": {
269
+ "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfiguration-config-filter.html",
270
+ "PrimitiveType": "String",
271
+ "Required": true,
272
+ "UpdateType": "Immutable"
273
+ }
274
+ }
275
+ },
276
+ "AWS::Serverless::Function.SNSEvent": {
277
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#sns",
278
+ "Properties": {
279
+ "Topic": {
280
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#sns",
281
+ "PrimitiveType": "String",
282
+ "Required": true,
283
+ "UpdateType": "Immutable"
284
+ }
285
+ }
286
+ },
287
+ "AWS::Serverless::Function.SQSEvent": {
288
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#sqs",
289
+ "Properties": {
290
+ "BatchSize": {
291
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#sqs",
292
+ "PrimitiveType": "Integer",
293
+ "Required": false,
294
+ "UpdateType": "Immutable"
295
+ },
296
+ "Queue": {
297
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#sqs",
298
+ "PrimitiveType": "String",
299
+ "Required": true,
300
+ "UpdateType": "Immutable"
301
+ }
302
+ }
303
+ },
304
+ "AWS::Serverless::Function.ScheduleEvent": {
305
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#schedule",
306
+ "Properties": {
307
+ "Input": {
308
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#schedule",
309
+ "PrimitiveType": "String",
310
+ "Required": false,
311
+ "UpdateType": "Immutable"
312
+ },
313
+ "Schedule": {
314
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#schedule",
315
+ "PrimitiveType": "String",
316
+ "Required": true,
317
+ "UpdateType": "Immutable"
318
+ }
319
+ }
320
+ },
321
+ "AWS::Serverless::Function.VpcConfig": {
322
+ "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-vpcconfig.html",
323
+ "Properties": {
324
+ "SecurityGroupIds": {
325
+ "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-vpcconfig.html",
326
+ "PrimitiveItemType": "String",
327
+ "Required": true,
328
+ "Type": "List",
329
+ "UpdateType": "Immutable"
330
+ },
331
+ "SubnetIds": {
332
+ "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-vpcconfig.html",
333
+ "PrimitiveItemType": "String",
334
+ "Required": true,
335
+ "Type": "List",
336
+ "UpdateType": "Immutable"
337
+ }
338
+ }
339
+ },
340
+ "AWS::Serverless::SimpleTable.PrimaryKey": {
341
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#primary-key-object",
342
+ "Properties": {
343
+ "Name": {
344
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#primary-key-object",
345
+ "PrimitiveType": "String",
346
+ "Required": false,
347
+ "UpdateType": "Immutable"
348
+ },
349
+ "Type": {
350
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#primary-key-object",
351
+ "PrimitiveType": "String",
352
+ "Required": true,
353
+ "UpdateType": "Immutable"
354
+ }
355
+ }
356
+ },
357
+ "AWS::Serverless::SimpleTable.ProvisionedThroughput": {
358
+ "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-provisionedthroughput.html",
359
+ "Properties": {
360
+ "ReadCapacityUnits": {
361
+ "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-provisionedthroughput.html",
362
+ "PrimitiveType": "Integer",
363
+ "Required": false,
364
+ "UpdateType": "Immutable"
365
+ },
366
+ "WriteCapacityUnits": {
367
+ "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-provisionedthroughput.html",
368
+ "PrimitiveType": "Integer",
369
+ "Required": true,
370
+ "UpdateType": "Immutable"
371
+ }
372
+ }
373
+ }
374
+ },
375
+ "ResourceSpecificationTransform": "AWS::Serverless-2016-10-31",
376
+ "ResourceSpecificationVersion": "2016-10-31",
377
+ "ResourceTypes": {
378
+ "AWS::Serverless::Api": {
379
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessapi",
380
+ "Properties": {
381
+ "CacheClusterEnabled": {
382
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessapi",
383
+ "PrimitiveType": "Boolean",
384
+ "Required": false,
385
+ "UpdateType": "Immutable"
386
+ },
387
+ "CacheClusterSize": {
388
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessapi",
389
+ "PrimitiveType": "String",
390
+ "Required": false,
391
+ "UpdateType": "Immutable"
392
+ },
393
+ "DefinitionBody": {
394
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessapi",
395
+ "PrimitiveType": "Json",
396
+ "Required": false,
397
+ "UpdateType": "Immutable"
398
+ },
399
+ "DefinitionUri": {
400
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessapi",
401
+ "PrimitiveTypes": [
402
+ "String"
403
+ ],
404
+ "Required": false,
405
+ "Types": [
406
+ "S3Location"
407
+ ],
408
+ "UpdateType": "Immutable"
409
+ },
410
+ "MethodSettings": {
411
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessapi",
412
+ "PrimitiveType": "Json",
413
+ "Required": false,
414
+ "UpdateType": "Immutable"
415
+ },
416
+ "Name": {
417
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessapi",
418
+ "PrimitiveType": "String",
419
+ "Required": false,
420
+ "UpdateType": "Immutable"
421
+ },
422
+ "StageName": {
423
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessapi",
424
+ "PrimitiveType": "String",
425
+ "Required": true,
426
+ "UpdateType": "Immutable"
427
+ },
428
+ "Variables": {
429
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessapi",
430
+ "PrimitiveItemType": "String",
431
+ "Required": false,
432
+ "Type": "Map",
433
+ "UpdateType": "Immutable"
434
+ }
435
+ }
436
+ },
437
+ "AWS::Serverless::Function": {
438
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction",
439
+ "Properties": {
440
+ "CodeUri": {
441
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction",
442
+ "PrimitiveTypes": [
443
+ "String"
444
+ ],
445
+ "Required": true,
446
+ "Types": [
447
+ "S3Location"
448
+ ],
449
+ "UpdateType": "Immutable"
450
+ },
451
+ "DeadLetterQueue": {
452
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction",
453
+ "Required": false,
454
+ "Type": "DeadLetterQueue",
455
+ "UpdateType": "Immutable"
456
+ },
457
+ "Description": {
458
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction",
459
+ "PrimitiveType": "String",
460
+ "Required": false,
461
+ "UpdateType": "Immutable"
462
+ },
463
+ "Environment": {
464
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction",
465
+ "Required": false,
466
+ "Type": "FunctionEnvironment",
467
+ "UpdateType": "Immutable"
468
+ },
469
+ "Events": {
470
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction",
471
+ "ItemType": "EventSource",
472
+ "Required": false,
473
+ "Type": "Map",
474
+ "UpdateType": "Immutable"
475
+ },
476
+ "FunctionName": {
477
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction",
478
+ "PrimitiveType": "String",
479
+ "Required": false,
480
+ "UpdateType": "Immutable"
481
+ },
482
+ "Handler": {
483
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction",
484
+ "PrimitiveType": "String",
485
+ "Required": true,
486
+ "UpdateType": "Immutable"
487
+ },
488
+ "KmsKeyArn": {
489
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction",
490
+ "PrimitiveType": "String",
491
+ "Required": false,
492
+ "UpdateType": "Immutable"
493
+ },
494
+ "MemorySize": {
495
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction",
496
+ "PrimitiveType": "Integer",
497
+ "Required": false,
498
+ "UpdateType": "Immutable"
499
+ },
500
+ "Policies": {
501
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction",
502
+ "ItemTypes": [
503
+ "IAMPolicyDocument"
504
+ ],
505
+ "PrimitiveItemTypes": [
506
+ "String"
507
+ ],
508
+ "PrimitiveTypes": [
509
+ "String"
510
+ ],
511
+ "Required": false,
512
+ "Types": [
513
+ "IAMPolicyDocument"
514
+ ],
515
+ "UpdateType": "Immutable"
516
+ },
517
+ "Role": {
518
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction",
519
+ "PrimitiveType": "String",
520
+ "Required": false,
521
+ "UpdateType": "Immutable"
522
+ },
523
+ "Runtime": {
524
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction",
525
+ "PrimitiveType": "String",
526
+ "Required": true,
527
+ "UpdateType": "Immutable"
528
+ },
529
+ "Tags": {
530
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction",
531
+ "PrimitiveItemType": "String",
532
+ "Required": false,
533
+ "Type": "Map",
534
+ "UpdateType": "Immutable"
535
+ },
536
+ "Timeout": {
537
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction",
538
+ "PrimitiveType": "Integer",
539
+ "Required": false,
540
+ "UpdateType": "Immutable"
541
+ },
542
+ "Tracing": {
543
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction",
544
+ "PrimitiveType": "String",
545
+ "Required": false,
546
+ "UpdateType": "Immutable"
547
+ },
548
+ "VpcConfig": {
549
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction",
550
+ "Required": false,
551
+ "Type": "VpcConfig",
552
+ "UpdateType": "Immutable"
553
+ }
554
+ }
555
+ },
556
+ "AWS::Serverless::SimpleTable": {
557
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlesssimpletable",
558
+ "Properties": {
559
+ "PrimaryKey": {
560
+ "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#primary-key-object",
561
+ "Required": false,
562
+ "Type": "PrimaryKey",
563
+ "UpdateType": "Immutable"
564
+ },
565
+ "ProvisionedThroughput": {
566
+ "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-provisionedthroughput.html",
567
+ "Required": false,
568
+ "Type": "ProvisionedThroughput",
569
+ "UpdateType": "Immutable"
570
+ }
571
+ }
572
+ }
573
+ }
574
+ }