【问题标题】:Unable to query Dynamo at {tableName}无法在 {tableName} 查询 Dynamo
【发布时间】:2018-08-11 20:09:10
【问题描述】:

因此,当 lambda 函数尝试从查询使用表上的 GSI 之一的发电机表中读取时,我在其中遇到以下错误:

Unable to query Dynamo at XXXTable

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

这是授予 lambda 访问发电机表的权限的策略。

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 策略并将这一行添加到资源中:

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

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

!GetAtt XXXTable.Arn + "/index/* 

任何帮助都会很棒。

【问题讨论】:

    标签: java amazon-web-services amazon-dynamodb amazon-cloudformation


    【解决方案1】:

    我认为您只是缺少将它们组合在一起的 !Sub 函数。试试:

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

    【讨论】:

    • 是的,我实际上使用 !Join 内部函数来实现同样的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多