【问题标题】:Create api-gateway lambda integration using aws-cli使用 aws-cli 创建 api-gateway lambda 集成
【发布时间】:2017-02-08 19:54:47
【问题描述】:

我需要使用 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;
    

但它只创建了资源和方法。

  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
    

    但它会产生这样的错误消息

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

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

【问题讨论】:

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


【解决方案1】:

您可以运行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

【讨论】:

  • 所以我确实这样做了,但仍然得到错误:调用 PutIntegration 操作时发生错误(NotFoundException):指定的方法标识符无效
【解决方案2】:

理想情况下,您应该在第 2 步“使用集成扩展”中导出为 JSON。在控制台中,导出类型有 3 个选项,中间的一个将包括导出中的集成和授权者。然后,当您导入时,您将拥有集成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-25
    • 2017-04-18
    • 2020-10-05
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    • 2018-05-04
    相关资源
    最近更新 更多