无法在{tableName}查询Dynamo

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在{tableName}查询Dynamo相关的知识,希望对你有一定的参考价值。

所以当我尝试从发电机表中读取查询使用表中的一个GSI时,我在lambda函数中得到以下错误:

Unable to query Dynamo at XXXTable

现在我在cloudformation文件中定义了lambda和dynamo表。

以下是赋予lambda访问dynamodb表的权限的策略。

LambdaPolicy:
Type: AWS::IAM::Policy
Properties:
  Roles:
    - !Ref LambdaRole
  PolicyName: LambdaPolicy
  PolicyDocument:
    Version: 2012-10-17
    Statement:
      - Effect: Allow
        Action:
          - "logs:*"
        Resource: "arn:aws:logs:*:*:*"
      - Effect: Allow
        Action:
          - "dynamodb:BatchGetItem"
          - "dynamodb:BatchWriteItem"
          - "dynamodb:DescribeTable"
          - "dynamodb:GetItem"
          - "dynamodb:PutItem"
          - "dynamodb:UpdateItem"
          - "dynamodb:DeleteItem"
          - "dynamodb:Query"
          - "dynamodb:Scan"
        Resource:
          - !GetAtt XXXTable.Arn

其中XXXTable是在同一个cloudformation文件中定义的Dynamo表。现在我知道我可以通过编辑lambda策略并将此行添加到Resource来手动解决这个问题:

- "arn:aws:dynamodb:eu-west-1:accountNubmer:table/XXXTable/index/*"

但问题是,如何将其添加到cloudformation文件中?就像是:

!GetAtt XXXTable.Arn + "/index/* 

任何帮助都会很棒。

答案

我认为你只是缺少!Sub功能将它们组合在一起。尝试:

- !Sub "${XXXTable.Arn}/index/*"

以上是关于无法在{tableName}查询Dynamo的主要内容,如果未能解决你的问题,请参考以下文章

在Dynamo DB中索引本地二级索引

密钥上的条件数是带有节点js的无效dynamo db

Dynamo DB 中的 AWS AppSync 简单 graphql 解析器无法正常工作,这让我发疯

UCanAccess 无法读取带有“... FROM TableName IN 'FileSpec'”的查询

在 Dynamo DB 中对本地二级索引进行索引

在Dynamo DB中选择where语句