在无服务器的yml中将angular色添加为CloudFormation模板

我想从另外一个lambda调用lambda,从这个答案的例子:

Nodejs – 从另一个lambda函数中调用AWS.Lambda函数

答案说,这两个lambda函数应具有AWSLambdaExecuteAWSLambdaBasicExecutionRole权限。

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

根据无服务器IAM文档,

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

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

要从另一个函数调用Lambda函数,只需要将"lambda:InvokeFunction"操作添加到Serverless已经提供的现有IAM权限。 所以一个iamRoleStatements服务应该有一个iamRoleStatements部分,如下所示:

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

参照引用的其他答案:

  • AWSLambdaBasicExecutionRole托pipe策略已由默认的无服务器策略覆盖;
  • AWSLambdaExecute是所需托pipe策略的名称不正确(只提供S3 get / put访问权限,而不是InvokeFunction ); 答案可能意味着AWSLambdaRole ,它提供了"lambda:InvokeFunction"权限。