cfn-model 0.4.16 → 0.4.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 645b4009b868ee8aeef8d4f5f7e1d4958305f952249f1c1450f18f4f537676c1
4
- data.tar.gz: 9a7f7e8ed5b94bd9d18ae836e21bcd3444d23e6d6add7a0d630f09a774a91cea
3
+ metadata.gz: ee4e39515d2ee0750c7ef71ec03c1f74d2345493621b99ad454ed0ef73013767
4
+ data.tar.gz: acff3ed655ee47fb57c2fcd1c107c6bd0a6e6d47695ee1d7bab69ae6716b83d0
5
5
  SHA512:
6
- metadata.gz: 9ddca0a63881b9dc1e3baa91ee708fa9ce4a74eaa84239f51c1897042754d3474dcd37ee1dafe6f127967fada9f0c0d8566956e3a0b70464565fcc1a4a540071
7
- data.tar.gz: 782787b5d721813e99f03c4a9e04b1d71f4cf68115d5d0f1d094e6506e734cfce2c6b6dc58d1edef521c330d6f66bf9b3c38e98d78302ab324f5a69c1a1a50ea
6
+ metadata.gz: 5ea5adf97d67de8fa64278cd5d83c7b3482f53d559eac400dd2be17c0024e42b7b8225248e1b007c32a51ec8b24f717c5559721405d5ce15f5a81e78e346c4ec
7
+ data.tar.gz: bdc94a195a2f246874bc6d8e98b0b222c45e7a14efa4bfe913b760f489336b2955ed57f66c5663682c86fa5ffaf53a5656e12a6f9544806a13a56327b2b3aeb4
@@ -83,8 +83,10 @@ class CfnModel
83
83
  lambda_fn_params = serverless_function_properties(cfn_hash, serverless_function)
84
84
 
85
85
  cfn_hash['Resources'][resource_name] = lambda_function lambda_fn_params
86
-
87
86
  cfn_hash['Resources']['FunctionNameRole'] = function_name_role
87
+
88
+ transform_function_events(cfn_hash, serverless_function, resource_name) if \
89
+ serverless_function['Properties']['Events']
88
90
  end
89
91
 
90
92
  def lambda_service_can_assume_role
@@ -140,6 +142,81 @@ class CfnModel
140
142
  }
141
143
  lambda_function_code(fn_resource, code_bucket, code_key)
142
144
  end
145
+
146
+ # Return the Event structure of a AWS::Lambda::Function as created
147
+ # by Serverless transform
148
+ def transform_function_events(cfn_hash, serverless_function, function_name)
149
+ serverless_function['Properties']['Events'].each do |_, event|
150
+ serverlessrestapi_resources(cfn_hash, event, function_name) if event['Type'] == 'Api'
151
+ end
152
+ end
153
+
154
+ def serverlessrestapi_resources(cfn_hash, event, func_name)
155
+ # ServerlessRestApi
156
+ cfn_hash['Resources']['ServerlessRestApi'] ||= serverlessrestapi_base
157
+ add_serverlessrestapi_event(
158
+ cfn_hash['Resources']['ServerlessRestApi']['Properties']['Body']['paths'],
159
+ event,
160
+ func_name
161
+ )
162
+
163
+ # ServerlessRestApiDeployment
164
+ cfn_hash['Resources']['ServerlessRestApiDeployment'] = serverlessrestapi_deployment
165
+
166
+ # ServerlessRestApiProdStage
167
+ cfn_hash['Resources']['ServerlessRestApiProdStage'] = serverlessrestapi_stage
168
+ end
169
+
170
+ def serverlessrestapi_base
171
+ {
172
+ 'Type' => 'AWS::ApiGateway::RestApi',
173
+ 'Properties' => {
174
+ 'Body' => {
175
+ 'info' => {
176
+ 'title' => { 'Ref' => 'AWS::StackName' },
177
+ 'version' => '1.0'
178
+ },
179
+ 'paths' => {},
180
+ 'swagger' => '2.0'
181
+ }
182
+ }
183
+ }
184
+ end
185
+
186
+ def add_serverlessrestapi_event(paths_hash, event, function_name)
187
+ paths_hash[event['Properties']['Path']] = {
188
+ event['Properties']['Method'] => {
189
+ 'responses' => {},
190
+ 'x-amazon-apigateway-integration' => {
191
+ 'httpMethod' => 'POST',
192
+ 'type' => 'aws_proxy',
193
+ 'uri' => { 'Fn::Sub' => "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${#{function_name}.Arn}/invocations" }
194
+ }
195
+ }
196
+ }
197
+ end
198
+
199
+ def serverlessrestapi_deployment
200
+ {
201
+ 'Type' => 'AWS::ApiGateway::Deployment',
202
+ 'Properties' => {
203
+ 'Description' => 'Generated by cfn-model',
204
+ 'RestApiId' => { 'Ref' => 'ServerlessRestApi' },
205
+ 'StageName' => 'Stage'
206
+ }
207
+ }
208
+ end
209
+
210
+ def serverlessrestapi_stage
211
+ {
212
+ 'Type' => 'AWS::ApiGateway::Stage',
213
+ 'Properties' => {
214
+ 'DeploymentId' => { 'Ref' => 'ServerlessRestApiDeployment' },
215
+ 'RestApiId' => { 'Ref' => 'ServerlessRestApi' },
216
+ 'StageName' => 'Prod'
217
+ }
218
+ }
219
+ end
143
220
  end
144
221
  end
145
222
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cfn-model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.16
4
+ version: 0.4.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Kascic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-19 00:00:00.000000000 Z
11
+ date: 2020-02-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop