【问题标题】:DynamoDB and Serverless: not authorized to perform: dynamodb:Query on resourceDynamoDB 和无服务器:无权执行:dynamodb:Query on resource
【发布时间】:2020-09-08 20:44:41
【问题描述】:

我收到此错误:

"message": "User: arn:aws:sts::XXXXX:assumed-role/lambda-my-account-dev-us-east-2-lambdaRole/lambda-my-account-dev-my-account is not authorized to perform: dynamodb:Query on resource: arn:aws:dynamodb:us-east-2:XXXX:table/dev-app-transactions/index/transactionsByUserId",

我对授予表权限感到困惑。在serverless.yml 我有:

service: lambda-my-account
provider:
  name: aws
  runtime: nodejs12.x
  region: ${opt:region, 'us-east-2'}
  stage: ${opt:stage, 'dev'}
  tags:
    datadog: ${self:provider.stage}
  environment:
    // some enviroments
  iamRoleStatements:
    - Effect: Allow
      Action:
        - logs:CreateLogGroup
        - logs:CreateLogStream
        - logs:PutLogEvents
      Resource: "arn:aws:logs:*:*:*"
    - Effect: Allow
      Action:
        - dynamodb:Query
      Resource:
        - "arn:aws:dynamodb:${self:provider.region}:*:table/${self:provider.environment.DYNAMODB_TABLE_TRANSACTIONS}"

// rest of file

为什么会出现这个错误?

resources 中是否有我没有配置的内容?我认为问题出在我的那个表的索引上。我是在 AWS 控制台上手动完成的,但我不确定是否也需要在 serverless.yml 文件中进行配置。

【问题讨论】:

    标签: serverless-framework aws-serverless amazon-dynamodb-index


    【解决方案1】:

    您还需要授予您的角色dynamodb:Query 对索引本身的权限。您可以添加如下资源语句:

    "arn:aws:dynamodb:${self:provider.region}:*:table/${self:provider.environment.DYNAMODB_TABLE_TRANSACTIONS}/index/transactionsByUserId"iamRoleStatements 部分。

    【讨论】:

    • 是的,这就是我必须做的,谢谢,因为我没有说出我所做的你的答案是正确的
    猜你喜欢
    • 2017-02-02
    • 2016-03-17
    • 2019-09-05
    • 2019-02-12
    • 2019-01-25
    • 1970-01-01
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多