我在尝试使用API网关作为DynamoDB的代理时遇到了问题。
基本上,如果我知道要存储的数据的结构,它会很有用,但无论有效负载结构如何,我都无法使其动态化。
有很多网站都在解释如何使用API网关作为DynamoDB的代理。 我发现没有解释如何存储JSON对象。
基本上我将此JSON发送到我的API端点:
{
"entryId":"abc",
"data":{
"key1":"123",
"key2":123
}
}
如果我使用以下模板进行映射,则数据会正确放入我的数据库
{
"TableName": "Events",
"Item": {
"entryId": {
"S": "abc"
},
"data": {
"M": {
"key1": {
"S": "123"
},
"key2": {
"N": "123"
}
}
}
}
}
但是,我不知道"数据的结构"因此,为什么我希望映射是动态的,甚至更好,我想避免任何映射。
我设法让它变得动态,但我的所有条目现在都是String类型:
"data": { "M" : {
#foreach($key in $input.path('$.data').keySet())
"$key" : {"S": "$input.path('$.data').get($key)"}#if($foreach.hasNext),#end
#end }
}
是否可以动态获取类型? 我不太确定API网关映射的工作原理。
谢谢你的帮助。
的Seb
答案 0 :(得分:1)
插入Dynamodb时,您不会避免某种映射。我建议使用Lambda函数而不是服务代理,以便在将数据映射到Dynamodb架构时提供更多控制和灵活性。
答案 1 :(得分:-1)
您可以启用CloudWatch日志以在预期转换后验证有效负载。您还可以使用AWS API Gateway控制台中的测试调用功能来了解映射的工作原理。
以下是使用Amazon API Gateway作为DynamoDB代理的博客。 https://aws.amazon.com/blogs/compute/using-amazon-api-gateway-as-a-proxy-for-dynamodb/