Class: Jets::Cfn::Resource::Lambda::Permission
- Defined in:
- lib/jets/cfn/resource/lambda/permission.rb
Instance Method Summary collapse
- #definition ⇒ Object
-
#initialize(replacements, associated_resource, options = {}) ⇒ Permission
constructor
A new instance of Permission.
- #permission_logical_id ⇒ Object
-
#principal ⇒ Object
Auto-detect principal from the associated resources.
- #source_arn ⇒ Object
Methods inherited from Base
#attributes, #logical_id, #outputs, #parameters, #permission, #properties, #replacements, #replacer, #standarize, #template, truncate_id, #type
Methods included from Util::Camelize
Constructor Details
#initialize(replacements, associated_resource, options = {}) ⇒ Permission
Returns a new instance of Permission.
6 7 8 9 10 11 12 |
# File 'lib/jets/cfn/resource/lambda/permission.rb', line 6 def initialize(replacements, associated_resource, ={}) @replacements = replacements @associated_resource = associated_resource # allow override for Jets::Cfn::Resource::Lambda::Function::Controller permission @principal = [:Principal] @source_arn = [:SourceArn] end |
Instance Method Details
#definition ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/jets/cfn/resource/lambda/permission.rb', line 14 def definition logical_id = definition = { logical_id => { Type: "AWS::Lambda::Permission", Properties: { FunctionName: "!Ref {namespace}LambdaFunction", Action: "lambda:InvokeFunction", Principal: principal } } } # From AWS docs: https://amzn.to/2N0QXQL # source_arn is "not supported by all event sources" definition[logical_id][:Properties][:SourceArn] = source_arn if source_arn definition end |
#permission_logical_id ⇒ Object
35 36 37 38 39 40 |
# File 'lib/jets/cfn/resource/lambda/permission.rb', line 35 def logical_id = "{namespace}Permission" md = @associated_resource.logical_id.match(/(\d+)$/) counter = md[1] if md [logical_id, counter].compact.join('') end |
#principal ⇒ Object
Auto-detect principal from the associated resources.
43 44 45 |
# File 'lib/jets/cfn/resource/lambda/permission.rb', line 43 def principal @principal || replacer.principal_map(@associated_resource.type) end |
#source_arn ⇒ Object
47 48 49 |
# File 'lib/jets/cfn/resource/lambda/permission.rb', line 47 def source_arn @source_arn || replacer.source_arn_map(@associated_resource.type) end |