开发者问题收集

无法使用 aws api 网关中的 aws 代理从 dynamodb 获取项目?

2016-06-20
2511

我正在使用 dynamodb 插入和检索来自 dynamo 的记录。请注意,当我将记录插入 dynamo db 时,它工作正常,但是当我尝试列出任何项目或从 dynamodb 检索任何项目时,它返回 未找到结果

用于检索记录

  1. 创建了一个与 api 网关具有信任关系的 iam 角色。并具有管理策略:AmazonAPIGatewayInvokeFullAccess、AmazonDynamoDBFullAccess、APIGatewayAWSProxyExecPolicy、AmazonAPIGatewayAdministrator。

  2. 创建了一个名为 emp 的表,其中包含字段 ID 和名称。

  3. 创建了一个名为 emp 的 api 网关,它具有资源 /employee。并具有方法 post 和 get。 post 用于插入,get 用于显示记录。

  4. 用于获取方法选择的 aws 服务代理 在此处输入图片描述

  5. 然后在 URL 查询字符串参数中添加方法请求中的 id。

  6. 然后也在集成请求 > 中添加 URL 查询字符串参数 > ID 和 method.request.querystring.id。

  7. 在集成请求 > body 映射模板添加了 application/json,然后添加了 json 代码

    { "TableName": "emp", "KeyConditionExpression": "ID = :v1", "ExpressionAttributeValues": { ":v1": { "S": "$input.params('ID')" } } } 然后当我测试它时它没有返回结果我无法弄清楚为什么请帮忙。

1个回答

我不是这方面的专家,但我看到了两个问题。

首先,在 DynamoDB 服务代理设置中,HTTP 方法需要为 POST,因为您正在向 DynamoDB API 发布请求,并且它与您使用 GetItem 方法无关。

其次,您的正文映射模板使用 DynamoDB 查询 API 中使用的 KeyconditionExpression,但不用于 GetItem。GetItem 需要指定一个 Key,如下所示: http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html#API_GetItem_Examples

希望这对您有所帮助。

tipchi
2016-07-15