在无服务器的yml中将angular色添加为CloudFormation模板
我想从另外一个lambda调用lambda,从这个答案的例子:
Nodejs – 从另一个lambda函数中调用AWS.Lambda函数
答案说,这两个lambda函数应具有AWSLambdaExecute和AWSLambdaBasicExecutionRole权限。
使用无服务器,如何将这两个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"
权限。