我沿着以下:Using Amazon API Gateway as a proxy for DynamoDB在AWS API網關定義可選屬性 - > DynamoDB映射
以博客的例子,我想收緊什麼,以及如何將數據寫入到通過API網關一個dynamodb表前端。爲此,我定義的API網關下面的映射:
{
"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
屬性的主體。 - >「一個或多個參數值無效:一個AttributeValue可能不包含空字符串」 2原樣使用上述映射,但發送一個帶有message=null
的正文。 - >「一個或多個參數值無效:一個AttributeValue可能不包含空字符串」 - 通過省略
mapping
的定義更改上述映射 - >傳遞一個正文而不顯示message
明顯成功。然而,使用message
發送一個正文沒有通過message
(這是我的預期,但想要耗盡所有選項) - 根本不使用映射。顯然這是有效的,但現在一切都是未經過濾的,這是不需要的。
很明顯,我可以使用AWS lambda來代替映射,但是這感覺就像這樣一個常見的用例,即:可選屬性,這必須可以直接在Api Gateway中實現。
不幸的是,這不起作用:'執行失敗,由於配置錯誤:無法轉換請求' –
得到它的工作。感謝您指點我正確的方向。看到我的答案 –