首页 文章

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

提问于
浏览
5

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

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

enter image description here

  • 部署创建的api并导出为json文件 .

  • 使用aws-cli使用导出的json文件创建新的api网关 . 像这样的命令 .

aws apigateway import-rest-api --body file://tmpfile.json --region us-east-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

但它产生这样的错误信息

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

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

2 回答

  • 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

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

相关问题