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

Amazon web services 如何使用aws apigateway CLI指定方法请求路径变量,amazon-web-services,command-line-interface,aws-api-gateway,Amazon Web Services,Command Line Interface,Aws Api Gateway,我在AWS API Gateway中定义了一个路由,该路由使用path变量,访问方式如下: /route/{variable} 所有这些都已正确配置并按预期工作,只是我找不到如何通过CLI测试此路由。当我在该方法上使用AWS控制台的“TEST”函数时,它会提示我为变量输入所需的值。我这样做了,它按预期工作,执行日志中出现以下内容: Thu Jan 07 16:30:06 UTC 2016 : Method request path: {variable=my specified value}

我在AWS API Gateway中定义了一个路由,该路由使用path变量,访问方式如下:

/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编码的字符串作为带有查询字符串的路径(例如
{“变量”:“我的指定值”}
),使用原始路径(例如
/route/my%20specified%20value
),以及其他一些

我还尝试使用
--stage variables
开关指定此值,并将带有查询字符串的
--path设置为空。这会产生相同的结果


我已经能够通过指定
--headers'{“variable”:“my specified value”}
使调用正常工作,但这似乎不正确,因为它绕过了path变量,因此它不是一个完全有效的测试。是否有方法使用CLI指定
方法请求路径
变量?非常感谢您的帮助。

您需要使用完整路径发出命令,即:

$aws apigateway测试调用方法--rest api id abc123--资源id xyz987--http方法GET--带有查询字符串“/route/123”的路径

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

让我知道这是否有帮助

谢谢,
Ryan

只需添加完整路径即可工作;无需处理
--body
--headers
参数。谢谢