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



我在AWS API网关中定义了一个使用路径变量的路由,访问方式如下:

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

您将希望使用完整路径发出命令,即:

$aws apigateway test invoke方法--rest api id abc123--资源id xyz987--http方法GET--带有查询字符串"/route/123"的路径

上面的错误消息表示请求正文转换出错。您可能需要指定--body参数,和/或通过--headers参数指定accept/content类型的标头。

如果这有帮助,请告诉我。

谢谢,Ryan

相关内容

  • 没有找到相关文章

最新更新