人,
我正在调用AWS Api,但得到了
Endpoint response body before transformations:
{"__type":"com.amazon.coral.service#SerializationException"}
Endpoint response body before transformations:
{
"__type": "com.amazon.coral.service#SerializationException"
}
在发布相同类型作业后出现错误。我已经启用了详细的Cloudwatch日志记录,但没有提供任何其他信息。而且,相关的API请求主体在转换之前和转换之后都会被截断。
是否还有其他日志选项需要测试?我想我只需要接受JSON中的原始API调用并从中删除字段,以查看导致其中断的原因?
答案 0 :(得分:1)
我遇到了几乎相同的问题/异常错误:
我不确定您是否像我一样,在第一次遇到此问题时根本没有映射模板,但是提供一个帮助显然很明显-当然,它的详细信息为了最终解决此问题,需要满足您正在通过网关API的Integration Request
访问的AWS服务的上下文! [正如您在自己的答案中根据您的情况提供的那样。]
如果您未提供映射模板,则实际上有一条日志语句(在com.amazon.coral.service#SerializationException
之后),表明该情况:
Endpoint request body after transformations:
看看那里没有尸体吗?如果没有映射模板,这似乎会发生,这是有道理的,因为映射模板将是正文内容的源(没有映射模板会导致那里没有请求正文)-例如,下面的映射模板JSON也最终会结束在使用该映射模板时与Endpoint request body after transformations
完全相同(并且记录为例如完全相同的JSON)(而不是上面的log语句中没有要打印的正文)。
例如,在我的案例中,我的Integration Request
是用于 DynamoDB GetItem
的(基本上是在此最新教程之后,它比我提供的详细信息/屏幕截图更多)在其他人中看到过:https://medium.com/@likhita507/using-api-gateway-to-get-data-from-dynamo-db-using-without-using-aws-lambda-e51434a4f5a0)。我的Integration Request
的{{1}}映射模板以这种方式成功结束了(只是通过复合键的特定值/元组查询表)
application/json
[DynamoDB复合键是{<分区键>,{
"TableName": "MyTableName",
"Key": {
"myPartitionKeyName": {"N" : "12345"},
"mySortKeyName": {"N" : "12345"}
}
}
和myPartitionKeyName
,并且都是数字类型(是的,尽管此处的DynamoDB的mySortKeyName
值仍为"12345"
,他们不是字符串)。]
无论如何...您可能需要确保至少提供 some 个映射模板(而不是没有)-以及它是一个足够(无论在您的上下文中是必需的)映射模板:)
答案 1 :(得分:0)
我终于通过在集成请求中提供以下映射模板来解决:
#set($input = $input.json('$'))
{
"input": "$util.escapeJavaScript($input).replaceAll("\\'", "'")",
"stateMachineArn": "arn:aws:states:xxxxxxxxxxx"
}
有些讨厌的修复程序,但是它能起作用...