Amazon dynamodb 通过API网关代理在BatchGetItem中出现序列化异常
我想在集成请求中调用BatchGetItem,使用API网关json映射模板从DynamoDB中的简单表中获取多个文档。 使用查询操作获取单个项目时,以下模板适用于我:Amazon dynamodb 通过API网关代理在BatchGetItem中出现序列化异常,amazon-dynamodb,aws-api-gateway,Amazon Dynamodb,Aws Api Gateway,我想在集成请求中调用BatchGetItem,使用API网关json映射模板从DynamoDB中的简单表中获取多个文档。 使用查询操作获取单个项目时,以下模板适用于我: { "TableName": "Test", "KeyConditionExpression": "ItemId = :i", "ExpressionAttributeValues": { ":i": { "N": "7" } }
{
"TableName": "Test",
"KeyConditionExpression": "ItemId = :i",
"ExpressionAttributeValues": {
":i": {
"N": "7"
}
}
当我将操作更改为BatchGetItem并使用以下模板时,我总是得到
“uu type”:“com.amazon.coral.service#SerializationException”状态为400
日志中转换后的端点请求正文看起来正确,并且与下面的模板完全相同。
我还使用nodejs sdk测试了相同的请求,它工作得非常完美
{
RequestItems: {
"Test": {
Keys: [
{ "ItemId": 7 }
],
ProjectionExpression: "ItemId,Status,EventTime"
}
}
}
我也试过:
{
RequestItems: {
"Test": {
Keys: [
{ "ItemId": {"N":"7" }}
],
ProjectionExpression: "ItemId,Status,EventTime"
}
}
}
通过将所有属性和值包装为字符串并设置键值类型,我成功地解决了这个问题
{
"RequestItems": {
"Test": {
"Keys": [
{ "ItemId": {"N":"7" }}
],
"ProjectionExpression": "ItemId,Status,EventTime"
}
}
}
事实上,您最初的请求不是有效的JSON-需要引用字符串。SerializationException意味着输入不是有效的JSON.FWIW(一般来说)这里有一个最近的新教程,它似乎可以做你需要的一切(有一个小的例外,它使用的是常规的
GetItem
,而不是像这个问题一样的BatchGetItem
),并且比我在其他教程中看到的更多细节/屏幕截图: