【问题标题】:What KeyConditionExpression on DynamoDb for "Query all items" when using LeadingKeys condition in IAM policy?在 IAM 策略中使用 LeadingKeys 条件时,DynamoDb 上的 KeyConditionExpression 用于“查询所有项目”?
【发布时间】:2020-05-28 19:30:21
【问题描述】:

我正在 API Gateway 中编写一个集成请求,它应该查询一个 DynamoDb 表。我正在使用特定角色访问数据库,利用fine-grained access control mechanism,但我不知道要使用哪个 KeyConditionExpression。

我想“查询所有项目”,并让 DynamoDb 根据我的 IAM 政策的 LeadingKeys 处理返回哪些项目。

到目前为止我尝试了一个简单的:

{"ProjectionExpression": "sortKey", "ConsistentRead": false, "TableName": "testTable"}

但这可以预见地失败了:

{ "__type": "com.amazon.coral.validate#ValidationException",
"message": "KeyConditions 或 KeyConditionExpression 参数必须在请求中指定。” }

我该怎么办?

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb aws-api-gateway


    【解决方案1】:

    我自己找到的。 您根本无法在不指定分区键的情况下发送查询,但您可以定义动态分区键。

    您可以使用 API Gateway 上下文变量来传递与您的策略的 LeadingKeys 匹配的 KeyProjectionExpression。就我而言,它是 Cognito Identity:

    {
    "KeyConditionExpression":"pk=:pk", 
    "ExpressionAttributeValues":{":pk":{"S":"$context.identity.cognitoIdentityId"}}
    }
    

    更完整的 API 网关变量列表可在 here 获得。

    【讨论】:

      猜你喜欢
      • 2015-11-13
      • 1970-01-01
      • 2019-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多