def add_permission(params={})
function_id = params.delete('FunctionName')
function = self.get_function_configuration(
'FunctionName' => function_id
).body
function_arn = function['FunctionArn']
action = params.delete('Action')
principal = params.delete('Principal')
source_account = params.delete('SourceAccount')
source_arn = params.delete('SourceArn')
sid = params.delete('StatementId')
if action.nil? || action.empty?
message = 'Action cannot be blank'
raise Fog::AWS::Lambda::Error, message
end
if principal.nil? || principal.empty?
message = 'Principal cannot be blank'
raise Fog::AWS::Lambda::Error, message
end
if sid.nil? || sid.empty?
message = 'Sid cannot be blank'
raise Fog::AWS::Lambda::Error, message
end
statement = {
'Action' => [action],
'Principal' => { 'Service' => principal },
'Sid' => sid,
'Resource' => function_arn,
'Effect' => 'Allow'
}
if source_arn
statement['Condition'] = {}
statement['Condition']['ArnLike'] = {
'AWS:SourceArn' => source_arn
}
end
self.data[:permissions][function_arn] ||= []
self.data[:permissions][function_arn] << statement
response = Excon::Response.new
response.status = 201
response.body = { 'Statement' => statement }
response
end