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

Abd*_*naf 5 amazon-web-services aws-cli aws-lambda aws-api-gateway

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

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

在此输入图像描述

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

    aws apigateway import-rest-api --body file://tmpfile.json --region us-east-1;
    
    Run Code Online (Sandbox Code Playgroud)

但它只创造了资源和方法.

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

    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
    
    Run Code Online (Sandbox Code Playgroud)

    但它产生这样的错误信息

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

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

Fré*_*nri 2

你可以跑去aws apigateway get-resources获取resource-id

aws apigateway get-resources --rest-api-id 42ku123id8u3a --region us-east-1
Run Code Online (Sandbox Code Playgroud)

它将返回一个 JSon 就像

{
    "items": [
        {
            "path": "/resource/xxx",
            "resourceMethods": {
                "POST": {}
            },
            "id": "_yourresourceid_",
            "pathPart": "xxx",
            "parentId": "ai5b02"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

你可以从这个 JSon 中获取id并在你的命令中使用它aws apigateway put-integration

  • 所以我确实这样做了,但仍然收到错误:调用 PutIntegration 操作时发生错误 (NotFoundException):指定的方法标识符无效 (4认同)