我有一个POST API网关方法,我发送以下应用程序/ json正文,以便将参数从它传递给方法连接到的Lambda:
{
"otherClientId": "12345",
"message": "Text",
"seconds": 0,
"hours": 0
}
我使用以下映射模板:
#set($inputRoot = $input.path('$'))
{
"authorizedUser": "$context.authorizer.principalId",
"otherClientId": "$inputRoot.otherClientId",
"message": "$inputRoot.message",
"amount": $inputRoot.amount,
"duration": $inputRoot.duration
}
我遇到的问题是,在尝试发送没有金额或持续时间的请求时,我收到“Bad String”错误 . 由于某些原因,这些参数似乎不是可选的(但我需要它们!) . 我可以错过其他参数,例如消息,但不能错过两个数字参数 .
有没有其他人经历过这个,或者有人能指出我可能遗失的明显事实? AWS文档在这个主题上有点稀疏 .
2 回答
可能发生这种情况是因为没有通过这些参数,你的json请求看起来像:
最简单的修复方法是用引号包装
$inputRoot.amount
和$inputRoot.duration
:或者,您可以使用if条件连接请求,例如:
当你想引用'秒'和'小时'的输入字段名时,我认为你是通过$ inputRoot意外引用转换后的字段名 . 不确定您希望该映射查找金额和持续时间,但您提供的输入中不存在$ inputRoot.amount和$ inputRoot.duration .