cfn-model 0.6.0 → 0.6.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/cfn-model/schema/AWS_Lambda_Function.yml +2 -2
- data/lib/cfn-model/transforms/serverless.rb +27 -17
- metadata +51 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 819df60d0212456c46c1fe5ae95b97bf33c8cb223a0d4f836e4d2f7e35a9d28e
|
4
|
+
data.tar.gz: 9e29152b3a2988ad4dc31ef0bb40307ae5fcb23dc5752ee13998280ee1b6e660
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 60dff3853250130a0d39e7a4844e1e84f11be354c88600e3b127387e71afbfd6f5aac4f90b8192c7b19559dfd263ef127d7eb0070e016c79347579d3d8efae42
|
7
|
+
data.tar.gz: ec6b71a0376167b1a52857c4570a8e1c199ccf40901d1cff5d31cf26da32d6c01dccd035f0504e712eb344ca62e90b70408277223eff5de8dc85c7c4ef9a2f71
|
@@ -3,7 +3,7 @@
|
|
3
3
|
class CfnModel
|
4
4
|
class Transforms
|
5
5
|
# Handle transformation of model elements performed by the
|
6
|
-
# Serverless
|
6
|
+
# Serverless transform, see
|
7
7
|
# https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-aws-serverless.html
|
8
8
|
class Serverless
|
9
9
|
def perform_transform(cfn_hash)
|
@@ -93,6 +93,7 @@ class CfnModel
|
|
93
93
|
handler: serverless_function_property(serverless_function, cfn_hash, 'Handler'),
|
94
94
|
role: format_function_role(serverless_function, fn_name),
|
95
95
|
runtime: serverless_function_property(serverless_function, cfn_hash, 'Runtime'),
|
96
|
+
reserved_concurrent_executions: serverless_function_property(serverless_function, cfn_hash, 'ReservedConcurrentExecutions'),
|
96
97
|
with_line_numbers: with_line_numbers
|
97
98
|
}
|
98
99
|
|
@@ -107,6 +108,8 @@ class CfnModel
|
|
107
108
|
def replace_serverless_function(cfn_hash, resource_name, with_line_numbers)
|
108
109
|
serverless_function = cfn_hash['Resources'][resource_name]
|
109
110
|
|
111
|
+
original_line_number = serverless_function['Type']['line']
|
112
|
+
|
110
113
|
lambda_fn_params = serverless_function_properties(cfn_hash,
|
111
114
|
serverless_function,
|
112
115
|
resource_name,
|
@@ -118,15 +121,18 @@ class CfnModel
|
|
118
121
|
code_key: lambda_fn_params[:code_key],
|
119
122
|
role: lambda_fn_params[:role],
|
120
123
|
runtime: lambda_fn_params[:runtime],
|
124
|
+
reserved_concurrent_executions: lambda_fn_params[:reserved_concurrent_executions],
|
125
|
+
line_number: original_line_number,
|
121
126
|
with_line_numbers: lambda_fn_params[:with_line_numbers]
|
122
127
|
)
|
123
128
|
unless serverless_function['Properties']['Role']
|
124
129
|
cfn_hash['Resources'][resource_name + 'Role'] = function_role(serverless_function,
|
125
130
|
resource_name,
|
131
|
+
original_line_number,
|
126
132
|
with_line_numbers)
|
127
133
|
end
|
128
134
|
|
129
|
-
transform_function_events(cfn_hash, serverless_function, resource_name, with_line_numbers) if \
|
135
|
+
transform_function_events(cfn_hash, serverless_function, resource_name, original_line_number, with_line_numbers) if \
|
130
136
|
serverless_function['Properties']['Events']
|
131
137
|
|
132
138
|
# Handle passing along cfn-nag specific metadata. SAM itself does not support metadata during transformation.
|
@@ -154,9 +160,9 @@ class CfnModel
|
|
154
160
|
|
155
161
|
# Return the hash structure of the '<function_name>Role'
|
156
162
|
# AWS::IAM::Role resource as created by Serverless transform
|
157
|
-
def function_role(serverless_function, function_name, with_line_numbers)
|
163
|
+
def function_role(serverless_function, function_name, line_number, with_line_numbers)
|
158
164
|
fn_role = {
|
159
|
-
'Type' => format_resource_type('AWS::IAM::Role',
|
165
|
+
'Type' => format_resource_type('AWS::IAM::Role', line_number, with_line_numbers),
|
160
166
|
'Properties' => {
|
161
167
|
'ManagedPolicyArns' => function_role_managed_policies(serverless_function['Properties']),
|
162
168
|
'AssumeRolePolicyDocument' => lambda_service_can_assume_role
|
@@ -223,30 +229,34 @@ class CfnModel
|
|
223
229
|
code_key: nil,
|
224
230
|
role:,
|
225
231
|
runtime:,
|
232
|
+
reserved_concurrent_executions:,
|
233
|
+
line_number:,
|
226
234
|
with_line_numbers: false)
|
227
235
|
fn_resource = {
|
228
|
-
'Type' => format_resource_type('AWS::Lambda::Function',
|
236
|
+
'Type' => format_resource_type('AWS::Lambda::Function', line_number, with_line_numbers),
|
229
237
|
'Properties' => {
|
230
238
|
'Handler' => handler,
|
231
239
|
'Role' => role,
|
232
240
|
'Runtime' => runtime
|
233
241
|
}
|
234
242
|
}
|
243
|
+
fn_resource['Properties']['ReservedConcurrentExecutions'] = reserved_concurrent_executions unless reserved_concurrent_executions.nil?
|
244
|
+
|
235
245
|
lambda_function_code(fn_resource, code_bucket, code_key)
|
236
246
|
end
|
237
247
|
|
238
248
|
# Return the Event structure of a AWS::Lambda::Function as created
|
239
249
|
# by Serverless transform
|
240
|
-
def transform_function_events(cfn_hash, serverless_function, function_name, with_line_numbers)
|
250
|
+
def transform_function_events(cfn_hash, serverless_function, function_name, line_number, with_line_numbers)
|
241
251
|
serverless_function['Properties']['Events'].each do |_, event|
|
242
|
-
serverlessrestapi_resources(cfn_hash, event, function_name, with_line_numbers) if \
|
252
|
+
serverlessrestapi_resources(cfn_hash, event, function_name, line_number, with_line_numbers) if \
|
243
253
|
matching_resource_type?(event['Type'], 'Api')
|
244
254
|
end
|
245
255
|
end
|
246
256
|
|
247
|
-
def serverlessrestapi_resources(cfn_hash, event, func_name, with_line_numbers)
|
257
|
+
def serverlessrestapi_resources(cfn_hash, event, func_name, line_number, with_line_numbers)
|
248
258
|
# ServerlessRestApi
|
249
|
-
cfn_hash['Resources']['ServerlessRestApi'] ||= serverlessrestapi_base with_line_numbers
|
259
|
+
cfn_hash['Resources']['ServerlessRestApi'] ||= serverlessrestapi_base line_number, with_line_numbers
|
250
260
|
add_serverlessrestapi_event(
|
251
261
|
cfn_hash['Resources']['ServerlessRestApi']['Properties']['Body']['paths'],
|
252
262
|
event,
|
@@ -254,15 +264,15 @@ class CfnModel
|
|
254
264
|
)
|
255
265
|
|
256
266
|
# ServerlessRestApiDeployment
|
257
|
-
cfn_hash['Resources']['ServerlessRestApiDeployment']
|
267
|
+
cfn_hash['Resources']['ServerlessRestApiDeployment'] ||= serverlessrestapi_deployment line_number, with_line_numbers
|
258
268
|
|
259
269
|
# ServerlessRestApiProdStage
|
260
|
-
cfn_hash['Resources']['ServerlessRestApiProdStage']
|
270
|
+
cfn_hash['Resources']['ServerlessRestApiProdStage'] ||= serverlessrestapi_stage line_number, with_line_numbers
|
261
271
|
end
|
262
272
|
|
263
|
-
def serverlessrestapi_base(
|
273
|
+
def serverlessrestapi_base(line_number, with_line_numbers)
|
264
274
|
{
|
265
|
-
'Type' => format_resource_type('AWS::ApiGateway::RestApi',
|
275
|
+
'Type' => format_resource_type('AWS::ApiGateway::RestApi', line_number, with_line_numbers),
|
266
276
|
'Properties' => {
|
267
277
|
'Body' => {
|
268
278
|
'info' => {
|
@@ -289,9 +299,9 @@ class CfnModel
|
|
289
299
|
}
|
290
300
|
end
|
291
301
|
|
292
|
-
def serverlessrestapi_deployment(
|
302
|
+
def serverlessrestapi_deployment(line_number, with_line_numbers)
|
293
303
|
{
|
294
|
-
'Type' => format_resource_type('AWS::ApiGateway::Deployment',
|
304
|
+
'Type' => format_resource_type('AWS::ApiGateway::Deployment', line_number, with_line_numbers),
|
295
305
|
'Properties' => {
|
296
306
|
'Description' => 'Generated by cfn-model',
|
297
307
|
'RestApiId' => { 'Ref' => 'ServerlessRestApi' },
|
@@ -306,9 +316,9 @@ class CfnModel
|
|
306
316
|
}
|
307
317
|
end
|
308
318
|
|
309
|
-
def serverlessrestapi_stage(
|
319
|
+
def serverlessrestapi_stage(line_number, with_line_numbers)
|
310
320
|
{
|
311
|
-
'Type' => format_resource_type('AWS::ApiGateway::Stage',
|
321
|
+
'Type' => format_resource_type('AWS::ApiGateway::Stage', line_number, with_line_numbers),
|
312
322
|
'Properties' => {
|
313
323
|
'DeploymentId' => { 'Ref' => 'ServerlessRestApiDeployment' },
|
314
324
|
'RestApiId' => { 'Ref' => 'ServerlessRestApi' },
|
metadata
CHANGED
@@ -1,15 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cfn-model
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Kascic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.4'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.4'
|
13
41
|
- !ruby/object:Gem::Dependency
|
14
42
|
name: rubocop
|
15
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -24,6 +52,20 @@ dependencies:
|
|
24
52
|
- - ">="
|
25
53
|
- !ruby/object:Gem::Version
|
26
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: simplecov
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.11'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.11'
|
27
69
|
- !ruby/object:Gem::Dependency
|
28
70
|
name: kwalify
|
29
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -148,7 +190,12 @@ files:
|
|
148
190
|
homepage: https://github.com/stelligent/cfn-model
|
149
191
|
licenses:
|
150
192
|
- MIT
|
151
|
-
metadata:
|
193
|
+
metadata:
|
194
|
+
bug_tracker_uri: https://github.com/stelligent/cfn-model/issues
|
195
|
+
changelog_uri: https://github.com/stelligent/cfn-model/releases
|
196
|
+
documentation_uri: https://www.rubydoc.info/gems/cfn-model/0.6.4
|
197
|
+
homepage_uri: https://github.com/stelligent/cfn-model
|
198
|
+
source_code_uri: https://github.com/stelligent/cfn-model/tree/v0.6.4
|
152
199
|
post_install_message:
|
153
200
|
rdoc_options: []
|
154
201
|
require_paths:
|
@@ -165,8 +212,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
165
212
|
- !ruby/object:Gem::Version
|
166
213
|
version: '0'
|
167
214
|
requirements: []
|
168
|
-
|
169
|
-
rubygems_version: 2.7.6
|
215
|
+
rubygems_version: 3.1.2
|
170
216
|
signing_key:
|
171
217
|
specification_version: 4
|
172
218
|
summary: cfn-model
|