无法使用 aws api 网关中的 aws 代理从 dynamodb 获取项目?
我正在使用 dynamodb 插入和检索来自 dynamo 的记录。请注意,当我将记录插入 dynamo db 时,它工作正常,但是当我尝试列出任何项目或从 dynamodb 检索任何项目时,它返回 未找到结果
用于检索记录
-
创建了一个与 api 网关具有信任关系的 iam 角色。并具有管理策略:AmazonAPIGatewayInvokeFullAccess、AmazonDynamoDBFullAccess、APIGatewayAWSProxyExecPolicy、AmazonAPIGatewayAdministrator。
-
创建了一个名为 emp 的表,其中包含字段 ID 和名称。
-
创建了一个名为 emp 的 api 网关,它具有资源 /employee。并具有方法 post 和 get。 post 用于插入,get 用于显示记录。
-
然后在 URL 查询字符串参数中添加方法请求中的 id。
-
然后也在集成请求 > 中添加 URL 查询字符串参数 > ID 和 method.request.querystring.id。
-
在集成请求 > body 映射模板添加了 application/json,然后添加了 json 代码
{ "TableName": "emp", "KeyConditionExpression": "ID = :v1", "ExpressionAttributeValues": { ":v1": { "S": "$input.params('ID')" } } } 然后当我测试它时它没有返回结果我无法弄清楚为什么请帮忙。
我不是这方面的专家,但我看到了两个问题。
首先,在 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
希望这对您有所帮助。