在无服务器yml中添加角色作为CloudFormation模板

时间:2017-01-10 13:27:02

标签: node.js aws-lambda amazon-cloudformation serverless-framework

我试图从另一个人那里调用一个lambda,遵循这个答案的例子:

Nodejs - Invoke an AWS.Lambda function from within another lambda function

答案说两个lambda函数都应该具有 AWSLambdaExecute AWSLambdaBasicExecutionRole 权限。

使用无服务器,如何将这两个角色添加到serverless.yml中的CloudFormation模板?

1 个答案:

答案 0 :(得分:1)

根据无服务器IAM文档,

  

默认情况下,服务中的所有Lambda函数都共享一个IAM角色。还会创建IAM策略并将其附加到该角色。此外,默认情况下,您的Lambda函数具有创建和写入CloudWatch日志的权限,如果您已为要使用的函数指定了VPC安全组和子网,则将通过ENI附加到VPC所需的EC2权限添加到默认值中IAM政策。

     

要为此服务范围的角色添加特定权限,请在provider.iamRoleStatements中定义将合并到生成的策略中的语句。

要从另一个函数调用Lambda函数,只需将"lambda:InvokeFunction"操作添加到Serverless已提供的现有IAM权限即可。因此,示例serverless.yml服务应该包含iamRoleStatements部分,如下所示:

service: new-service

provider:
  name: aws
  iamRoleStatements:
    -  Effect: "Allow"
       Action:
         - "lambda:InvokeFunction"
       Resource:
         - "*"

参考引用的其他答案:

  • AWSLambdaBasicExecutionRole托管策略已涵盖默认的无服务器策略;
  • AWSLambdaExecute是所需托管策略的错误名称(该名称仅提供S3 get / put访问权限,而不是InvokeFunction);答案可能意味着AWSLambdaRole,它提供"lambda:InvokeFunction"权限。