【问题标题】:Add role as CloudFormation template in serverless yml在无服务器 yml 中将角色添加为 CloudFormation 模板
【发布时间】:2023-03-12 17:02:01
【问题描述】:

我正在尝试从另一个调用 lambda,按照此答案中的示例:

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

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

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

【问题讨论】:

    标签: 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" 权限。

    【讨论】:

      猜你喜欢
      • 2021-02-23
      • 2017-05-16
      • 1970-01-01
      • 2017-06-18
      • 1970-01-01
      • 1970-01-01
      • 2020-07-09
      • 2020-09-30
      • 2020-06-10
      相关资源
      最近更新 更多