【问题标题】:AWS SAM AccessDeniedException on a Lambda that uses the AWS SDK使用 AWS 开发工具包的 Lambda 上的 AWS SAM AccessDeniedException
【发布时间】:2019-11-13 20:22:25
【问题描述】:

我在 Node.js 中有一个使用 SDK 方法 listVersionsByFunction 的 AWS Lambda 函数。

它是从此 AWS SAM 模板创建的:

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Globals:
  Function:
    Timeout: 3
Resources:
  special:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: 'my-project-special'
      CodeUri: ./handlers
      Handler: special.handler
      Runtime: nodejs10.x
  getLatest:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: ./handlers
      Handler: getLatest.handler
      Runtime: nodejs10.x
      Events:
        getLatest:
          Type: Api
          Properties:
            Path: /latest/
            Method: get

并且处理程序这样调用 SDK:

const result = await lambda.listVersionsByFunction({
    FunctionName: 'my-project-special',
}).promise();

部署并发出请求后,出现AccessDeniedException 错误:

用户:arn:aws:sts::999999999:assumed-role/my-project-getLatest-ADFADSFASD/my-project-getLatest-HJLKHLKJKJ 无权执行:lambda:ListVersionsByFunction 资源:arn:aws:lambda :us-east-2:999999999:function:my-project-special

如何通过 AWS SAM 模板允许此访问?

【问题讨论】:

    标签: node.js amazon-web-services aws-lambda aws-sam


    【解决方案1】:

    错误表示您的 Lambda 无权对其他资源(另一个 Lambda)执行ListVersionsByFunction操作。

    您需要做的是创建一个自定义策略并将其添加到您的template

    getLatest:
        Type: AWS::Serverless::Function
        Properties:
          CodeUri: ./handlers
          Handler: getLatest.handler
          Runtime: nodejs10.x
          Policies:
             - Version: '2012-10-17'
               Statement:
                 - Effect: Allow
                   Action:
                     - lambda:ListVersionsByFunction
                   Resource: '*'
          Events:
            getLatest:
              Type: Api
              Properties:
                Path: /latest/
                Method: get
    

    See reference

    或者您也可以在 IAM 管理控制台 中将此策略添加为 inline policy,在角色下选择您的函数 getLatest 并添加策略。见快照。

    希望对你有帮助

    【讨论】:

    • 这个问题的完美答案!
    猜你喜欢
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 2017-05-14
    • 2019-01-06
    • 2022-01-21
    • 2023-03-15
    • 1970-01-01
    相关资源
    最近更新 更多