我的映射模板是:
{
"TableName": "Lists",
"Item": {
"listid": {
"S": "$context.requestId"
},
"title": {
"S": "$input.path('$.title')"
},
"places": {
"L": $input.path('$.places')
}
}
}
我得到的错误是:
{"__type": "com.amazon.coral.service#SerializationException",
"Message": "Expected null"}
如果我将places对象更改为“S”并传入一个字符串,一切正常,但我无法获得正确传递的列表。
以下是我的API网关控制台测试请求正文:
{
"title": "Title",
"places": ["place 1", "place 2"]
}
以下是转换后的请求:
Endpoint request body after transformations: {
"TableName": "Lists",
"Item": {
"listid": {
"S": "test-invoke-request"
},
"title": {
"S": "Title"
},
"places": {
"L": ["place 1","place 2"]
}
}
}
答案 0 :(得分:0)
我在这里找到了答案: http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_AttributeValue.html
对于字符串列表,正确的属性值为“SS”。 “L”保留用于属性值对象列表。
因此,要让原始请求正文通过,我必须重新格式化为:
{ "title": "Title2",
"places": [{"S": "place 1"}, {"S": "place 2"}]
}