--rest-api-id和--resource-id是什么,我在哪里找到它们?

时间:2018-09-21 15:30:44

标签: amazon-web-services aws-lambda aws-api-gateway aws-cli

我想运行以下命令: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控制台的哪里找到它们?

2 个答案:

答案 0 :(得分:5)

您的rest-api-id是端点URL中'execute-api'之前的标识符。

在您的示例网址中:

https://abc123.execute-api.us-east-1.amazonaws.com/MyStage/

rest-api-idabc123

可以使用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,您可以在测试调用方法中将其与关联的方法结合使用资源。

当您选择端点/资源之一时,这两个值都在控制台顶部可见: enter image description here

答案 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