code: def _construct_permission(self, function, source_arn=None, source_account=None, suffix="", event_source_token=None):
          
          lambda_permission = LambdaPermission(self.logical_id + 'Permission' + suffix,
                                               attributes=function.get_passthrough_resource_attributes())
  
          try:
              # Name will not be available for Alias resources
              function_name_or_arn = function.get_runtime_attr("name")
          except NotImplementedError:
              function_name_or_arn = function.get_runtime_attr("arn")
  
          lambda_permission.Action = 'lambda:invokeFunction'
          lambda_permission.FunctionName = function_name_or_arn
          lambda_permission.Principal = self.principal
          lambda_permission.SourceArn = source_arn
          lambda_permission.SourceAccount = source_account
          lambda_permission.EventSourceToken = event_source_token
  
          return lambda_permission
docs: Constructs the Lambda Permission resource allowing the source service to invoke the function this event
          source triggers.
  
          :returns: the permission resource
          :rtype: model.lambda_.LambdaPermission