我想运行以下命令:https://docs.aws.amazon.com/cli/latest/reference/apigateway/test-invoke-method.html
它需要这两个字段,找不到任何文档,并且是:
aws apigateway test-invoke-method --rest-api-id 1234123412 --resource-id avl5sg8fw8 --http-method GET --path-with-query-string '/'
我的API网关端点如下:
https://abc123.execute-api.us-east-1.amazonaws.com/MyStage/
我在那里只看到唯一的标识符-但此命令似乎需要两个ID。在API Gateway控制台的哪里找到它们?
答案 0 :(得分:5)
您的rest-api-id是端点URL中'execute-api'之前的标识符。
在您的示例网址中:
https://abc123.execute-api.us-east-1.amazonaws.com/MyStage/
rest-api-id
是abc123
可以使用get-resources
调用和rest-api-id通过CLI获取资源ID:
> aws apigateway get-resources --rest-api-id abc123
{
"items": [
{
"id": "xxxx1",
"parentId": "xxxx0",
"pathPart": "foo",
"path": "/foo",
"resourceMethods": {
"GET": {}
}
},
{
"id": "xxxx0",
"path": "/"
}
]}
items
属性中的每个记录都是一个资源,而其id
属性是一个资源ID,您可以在测试调用方法中将其与关联的方法结合使用资源。
答案 1 :(得分:0)
这里是您可以使用的bash脚本的一部分,假设您已安装jq来解析json和仅一个API。它从items数组中获取第一个API ID,然后查找该Resource ID,然后使用POST调用该API:
API_ID=`aws apigateway get-rest-apis | jq -r ".items[0].id"`
RESOURCE_ID=`aws apigateway get-resources --rest-api-id $API_ID | jq -r ".items[].id"`
aws apigateway test-invoke-method --rest-api-id $API_ID --resource-id $RESOURCE_ID --http-method POST