如何使用aws apigateway CLI指定方法请求路径变量

时间:2016-01-07 17:16:43

标签: amazon-web-services command-line-interface aws-api-gateway

我在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个变量?非常感谢你的帮助。

1 个答案:

答案 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标头。

如果有帮助,请告诉我。

谢谢, 莱恩