Mik*_*keV 5 amazon-web-services amazon-dynamodb aws-api-gateway
我想弄清楚如何通过 AWS 中的 API 网关将动态数据插入到 dynamodb 表中。目前我有一个 dynamodb 表和一个 API 端点设置,它接受这样的 POST。
发布 https://{unique-id}.execute-api.us.east-1.amazonaws.com/notification/events
{
"reference_number": 99,
"purchase_date": "1/1/2017"
}
Run Code Online (Sandbox Code Playgroud)
我已经在 API 网关中设置了一个身体映射模板来将数据传送到 dynamodb。
{
"TableName": "Events",
"Item": {
"reference_number": {
"N": "$input.path('$.reference_number')"
},
"purchase_date": {
"S": "$input.path('$.purchase_date')"
}
}
}
Run Code Online (Sandbox Code Playgroud)
以上工作并保存到表中。
假设我将事件哈希添加到我的 json(可以根据事件更改)。
{
"reference_number": 99,
"purchase_date": "1/1/2017",
"event": {
"name": "purchase",
"items": [1,3,6],
"info": {
"currencyID": "USD",
"countryID": "US"
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何使用 API Gateway Body 映射模板语法将事件属性保存到 dynamodb 中的映射?
{
"TableName": "Events",
"Item": {
"reference_number": {
"N": "$input.path('$.reference_number')"
},
"purchase_date": {
"S": "$input.path('$.purchase_date')"
},
"event":{
"M": "$input.path('$.event')"
}
}
}
Run Code Online (Sandbox Code Playgroud)
上面的模板给了我以下错误。“预期的地图或空”
看起来 DynamoDB API 实际上需要“M”属性的值是 的 Map String -> AttributeValue。不幸的是,您无法传递原始 JSON。您必须手动映射整个event对象才能使 DDB API 满意。
一种可能的解决方法是将event对象字符串化并将其写入类型S,但这当然需要读者预期该行为。
{
"TableName": "Events",
"Item": {
"reference_number": {
"N": "$input.path('$.reference_number')"
},
"purchase_date": {
"S": "$input.path('$.purchase_date')"
},
"event":{
"S": "$util.escapeJavaScript($input.json('$.event'))"
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4655 次 |
| 最近记录: |