我正在尝试从数据管道中调用API,我遇到了以下错误。 这就是我想要的。
aws apigateway test-invoke-method --rest-api-id int836id123 --resource-id 1ukckkkwq1 --http-method POST --body "{\"QUEUEURL\": \"\",
\"BUCKETREGION\": \"us-east-1\",
\"FLAGFILE\": \"\",
\"FTPUSERID\": \"abcd-test-parameter\",
\"FTPPATH\": \"/abcd/Incr1\",
\"FTPPASSWORD\": \"abcd-test-parameter\",
\"PARAMETERSTOREREGION\":\"us-east-1\",
\"ISFTP2S3\": \"false\",
\"FTPSERVER\": \"11.42.123.111\",
\"BUCKETNAME\": \"path/Lineite/MAIN\",
\"QUEUEREGION\": \"\",
\"LOCALPATH\": \"path\"}"
我已经确认命令中没有额外的输入空间。
此外,我试图在没有\
的情况下运行,但同样的错误。
这是我得到的错误
2018:Lambda调用失败,状态:400 \ nMon Apr 02 06:45:20 UTC 2018:执行失败:无法将请求主体解析为json: 意外的角色(' Q'(代码81)):期待双引号 开始字段名称\ n在[来源:[B @ 72073757; line:1,column:3] \ nMon 4月02日06:45:20 UTC 2018:方法已完成,状态:400 \ n", "延迟":41, "标题":{}}
当我尝试从AWS cli运行时,它可以工作但不能从数据管道中运行。
答案 0 :(得分:1)
您可以使用here-document定义格式正确的JSON,这样您就不必担心转义引号。将函数定义为
jsonDump()
{
cat <<EOF
{
"QUEUEURL":"",
"BUCKETREGION":"us-east-1",
"FLAGFILE":"",
"FTPUSERID":"abcd-test-parameter",
"FTPPATH":"/abcd/Incr1",
"FTPPASSWORD":"abcd-test-parameter",
"PARAMETERSTOREREGION":"us-east-1",
"ISFTP2S3":"false",
"FTPSERVER":"11.42.123.111",
"BUCKETNAME":"path/Lineite/MAIN",
"QUEUEREGION":"",
"LOCALPATH":"path"
}
EOF
}
现在调用下面的函数
aws apigateway test-invoke-method --rest-api-id int836id123 --resource-id 1ukckkkwq1 --http-method POST --body "$(jsonDump)"