我正在开发API网关,以从传感器获取数据(图像)并将其发送到AWS的DynamoDB。我已经有了端点和API密钥。但是,在测试API时出现以下错误:
Request: /?image=12345
Status:
Latency: ms
Response Body
{
"cause": "JSONObject[\"body\"] not found.",
"logref": "12345-11d8-888888",
"message": ""
}
IAM的角色和策略还可以。 Python代码通过requests
发布以下有效负载
payload={"image": [1,2,3,4,5]}
鉴于:
requests.posts(API_URL,files=payload,headers={'api-key':'12345abcd'})
我的身体映射模板是:
{"body" : $input.json('$')}
但是此主体映射正在GET的请求主体(不合适的请求验证器)中生成警报。
如下图所示,所有API请求都收到4xx错误。
DynamoDB没有接收到有效负载。有人可以给我一些可能的原因吗?
答案 0 :(得分:0)
我找到了解决方案。有几件事需要解决:
1-我使用https://www.liquid-technologies.com/online-json-to-schema-converter
正确映射了JSON因此,针对:
{
"MessageID" : {
"S" : "12345"
},
"type" : {
"S" : "type"
},
"page" : {
"S" : "page"
}
}
...由Python发送,正文映射变为:
{
"MessageID" : {
"S" : "$input.params('MessageID')"
},
"type" : {
"S" : "$input.params('type')"
},
"page" : {
"S" : "$input.params('page')"
}
}
和模型:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"MessageID": {
"type": "object",
"properties": {
"S": {
"type": "string"
}
},
"required": [
"S"
]
},
"type": {
"type": "object",
"properties": {
"S": {
"type": "string"
}
},
"required": [
"S"
]
},
"page": {
"type": "object",
"properties": {
"S": {
"type": "string"
}
},
"required": [
"S"
]
}
},
"required": [
"MessageID",
"type",
"page"
]
}
现在我得到了:
<Response [200]>
ok
<Response [200]>
ok
<Response [200]>
ok
<Response [200]>
ok
<Response [200]>
ok
<Response [200]>
ok
<Response [200]>
ok
<Response [200]>
ok
然后,数据通过Lambda函数(经过清理和格式化)到达DynamoDB,API网关中没有日志错误。