使用aws-cli创建api-gateway lambda集成

时间:2016-09-30 09:25:03

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

我需要使用aws客户端创建一个api网关。我使用Web控制台成功创建并集成了我的aws-lambda函数。但我与aws-client混淆了。这些是我遵循的步骤。

  1. 使用Web控制台创建api网关并与我的示例lambda函数集成。
  2. enter image description here

    1. 部署已创建的api并导出为json文件。
    2. 使用aws-cli使用导出的json文件创建新的api网关。像这样的命令。

      aws apigateway import-rest-api --body file://tmpfile.json --region us-east-1;
      
    3. 但它只创造了资源和方法。

      1. 用于集成api方法和我的lambda函数。我执行这样的命令

        aws apigateway put-integration --rest-api-id 42ku123id8u3a --resource-id core-api-dev --http-method DELETE --type AWS --integration-http-method POST --uri 'arn:aws:lambda:us-east-1:my-lambda-function-arn' --region us-east-1
        

        但它会产生像这样的错误信息

      2.   

        调用PutIntegration操作时发生错误(NotFoundException):指定了无效的资源标识符

        是否可以使用aws客户端将api网关方法与现有的lambda函数集成?什么是资源标识符?

2 个答案:

答案 0 :(得分:2)

您可以aws apigateway get-resources运行resource-id

aws apigateway get-resources --rest-api-id 42ku123id8u3a --region us-east-1

它会返回一个类似

的JSon
{
    "items": [
        {
            "path": "/resource/xxx",
            "resourceMethods": {
                "POST": {}
            },
            "id": "_yourresourceid_",
            "pathPart": "xxx",
            "parentId": "ai5b02"
        }
    ]
}

您可以从此JSon获取 id ,并将其用于aws apigateway put-integration的命令

答案 1 :(得分:1)

理想情况下,您应该在步骤2中使用集成扩展程序'导出为JSON。在控制台中,有3个导出类型选项,中间的选项将包括导出中的集成和授权程序。然后,当您导入时,您已经有了集成。