【问题标题】:Add role as CloudFormation template in serverless yml在无服务器 yml 中将角色添加为 CloudFormation 模板
【发布时间】:2023-03-12 17:02:01
【问题描述】:
【问题讨论】:
标签:
node.js
aws-lambda
amazon-cloudformation
serverless-framework
【解决方案1】:
根据 Serverless IAM 文档,
默认情况下,一个 IAM 角色由您服务中的所有 Lambda 函数共享。还会创建一个 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" 权限。