Class: Jets::Resource::Permission

Inherits:
Base
  • Object
show all
Defined in:
lib/jets/resource/permission.rb

Instance Method Summary collapse

Methods inherited from Base

#replacements, #resource

Constructor Details

#initialize(replacements, associated_resource) ⇒ Permission

Returns a new instance of Permission.



3
4
5
6
# File 'lib/jets/resource/permission.rb', line 3

def initialize(replacements, associated_resource)
  @replacements = replacements
  @associated_resource = associated_resource
end

Instance Method Details

#definitionObject



8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/jets/resource/permission.rb', line 8

def definition
  {
    permission_logical_id => {
      type: "AWS::Lambda::Permission",
      properties: {
        function_name: "!GetAtt {namespace}LambdaFunction.Arn",
        action: "lambda:InvokeFunction",
        principal: principal,
        source_arn: source_arn,
      }
    }
  }
end

#permission_logical_idObject



22
23
24
25
26
27
# File 'lib/jets/resource/permission.rb', line 22

def permission_logical_id
  logical_id = "{namespace}_permission"
  md = @associated_resource.logical_id.match(/(\d+)/)
  counter = md[1] if md
  [logical_id, counter].compact.join('').underscore
end

#principalObject

Auto-detect principal from the associated resources.



30
31
32
# File 'lib/jets/resource/permission.rb', line 30

def principal
  Replacer.principal_map(@associated_resource.type)
end

#source_arnObject



34
35
36
37
# File 'lib/jets/resource/permission.rb', line 34

def source_arn
  default_arn = "!GetAtt #{@associated_resource.logical_id}.Arn"
  Replacer.source_arn_map(@associated_resource.type) || default_arn
end