我在AWS API Gateway中定义了一个使用路径变量的路由,可以这样访问:
/route/{variable}
除了我无法找到如何通过CLI测试此路由之外,所有配置都正常并按预期工作。当我在该方法上使用AWS控制台的“TEST”功能时,它会提示我输入所需的变量值。我这样做,它按预期工作,执行日志中出现以下内容:
Thu Jan 07 16:30:06 UTC 2016 : Method request path: {variable=my specified value}
Thu Jan 07 16:30:06 UTC 2016 : Method request headers: {}
但是当我使用CLI使用此命令执行它时:
$ aws apigateway test-invoke-method --rest-api-id {rest-api-id} --resource-id {resource-id} --http-method GET --path-with-query-string 'variable=my specified value'
我得到500 ISE响应,日志中包含以下内容:
Thu Jan 07 16:38:20 UTC 2016 : Method request path: {}
Thu Jan 07 16:38:20 UTC 2016 : Method request headers: {}
Thu Jan 07 16:38:20 UTC 2016 : Execution failed due to configuration error: Unable to transform input
我在此主题上尝试了许多变体,包括使用JSON编码的字符串作为--path-with-query-string
值(例如{"variable":"my specified value"}
),使用原始路径(例如/route/my%20specified%20value
)和其他几个人。
我还尝试使用--stage-variables
开关指定此值,并将--path-with-query-string
值设为空。这产生了相同的结果。
我已经能够通过指定--headers '{"variable":"my specified value"}'
来接听我的工作,但这似乎不正确,因为它绕过了路径变量,所以它不是一个完全有效的测试。有没有办法使用CLI指定Method request path
个变量?非常感谢你的帮助。
答案 0 :(得分:1)
您需要使用完整路径发出命令,即:
$ aws apigateway test-invoke-method --rest-api-id abc123 --resource-id xyz987 --http-method GET --path-with-query-string'/ route / 123'
上面的错误消息表明请求正文转换时出错。您可能需要指定--body参数,和/或通过--headers参数指定accept / content-type标头。
如果有帮助,请告诉我。
谢谢, 莱恩