Amazon dynamodb 通过API网关代理在BatchGetItem中出现序列化异常

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" } }

我想在集成请求中调用BatchGetItem,使用API网关json映射模板从DynamoDB中的简单表中获取多个文档。 使用查询操作获取单个项目时,以下模板适用于我:

    {
    "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
),并且比我在其他教程中看到的更多细节/屏幕截图: