我正在尝试从数据管道调用 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 invocation failed with status: 400\nMon Apr 02 06:45:20 UTC 2018 : Execution failed: Could not parse request body into json: Unexpected character ('Q' (code 81)): was expecting double-quote to start field name\n at [Source: [B@72073757; line: 1, column: 3]\nMon Apr 02 06:45:20 UTC 2018 : Method completed with status: 400\n", "latency": 41, "headers": {} }
当我尝试从 AWS cli 运行时,它可以运行,但不能从数据管道运行。
最佳答案
您可以使用此处文档来定义格式正确的 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)"
关于json - 将 JSON 字符串作为输入传递给 aws 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49606752/