【发布时间】:2016-07-04 16:32:10
【问题描述】:
我正在关注:Using Amazon API Gateway as a proxy for DynamoDB
以博客的示例为例,我想加强 Api Gateway 将数据写入 dynamodb 表前端的内容和方式。为此我在 Api Gateway 中定义了如下映射:
{
"TableName": "Comments",
"Item": {
"commentId": {
"S": "$context.requestId"
},
"pageId": {
"S": "$input.path('$.pageId')"
},
"userName": {
"S": "$input.path('$.userName')"
},
"message": {
"S": "$input.path('$.message')"
}
}
}
接下来,使用以下示例进行测试就可以了:
{
"pageId": "breaking-news-story-01-18-2016",
"userName": "Just Saying Thank You",
"message": "I really enjoyed this story!!"
}
但是,假设我想保持与上面相同的映射,但想让message 成为可选的。我该怎么做?我无法让它工作。我试过了:
- 按原样使用上述映射,但发送没有
message-attribute 的正文。 --> “一个或多个参数值无效:AttributeValue 可能不包含空字符串” 2 按原样使用上述映射,但发送带有message=null的正文。 --> "一个或多个参数值无效:AttributeValue 不能包含空字符串" - 通过省略
mapping的定义来更改上面的映射-> 现在传递一个没有message的主体显然成功了。但是,发送带有message的正文不会通过message(这是我的预期,但想用尽所有选项) - 根本不使用映射。显然这是可行的,但现在所有内容都是未经过滤的,这是不需要的。
显然我可以使用 AWS lambda 来进行映射,但这感觉像是一个常见的用例,即:可选属性,这必须可以直接在 Api Gateway 中实现。
【问题讨论】:
标签: amazon-web-services amazon-dynamodb aws-api-gateway