如何在 AWS 账户或区域之间迁移 API Gateway 的 REST API?

上次更新日期:2020 年 12 月 17 日

我想在 AWS 账户或区域之间迁移我的 Amazon API Gateway 的 API。该怎么做?

简短描述

要在 AWS 账户或区域之间迁移 Amazon API Gateway 的 API,请将 REST API 从 API Gateway 导出OpenAPI 2.0 (Swagger) 或 OpenAPI 3.0 定义文件。然后,将 API 导入另一个账户或区域中的 API Gateway。

注意:要导入 REST API,您还必须在目标账户或区域中重新创建集成的任何 API 资源。

解决方法

注意:如果您在运行 AWS 命令行界面 (AWS CLI) 命令时遇到错误,请确保您运行的是最新版本的 AWS CLI

导出 API

使用 API Gateway 控制台AWS CLI 导出您的 API。

  1. API Gateway 控制台中,选择您的 API。
  2. 将您的 API 部署到阶段
  3. 阶段编辑器窗格中,选择导出选项卡。
  4. 对于导出为,选择 Swagger OpenAPI3
  5. 根据上一步的选择,进行以下任一操作:
    导出为 Swagger + API Gateway 扩展
    导出为 OpenAPI 3 + API Gateway 扩展
  6. OpenAPI 的定义将显示在控制台中。然后,选择 JSONYAML 将 OpenAPI 定义下载为您首选的文件类型。

或者在 AWS CLI 中使用 get-export 命令。

get-export 命令示例

aws apigateway get-export --parameters extensions='integrations' --rest-api-id a1b2c3d4e5 --stage-name dev --export-type swagger --accept application/yaml /path/to/filename.yaml

重要提示:请确保更改命令选项 --parameters--export-type--accept 的值以匹配您的首选导出格式。有关更多信息,请参阅 get-export(AWS CLI 命令参考)和从 API Gateway 导出 REST API

更改 OpenAPI 定义中的资源 ARN

在导出的 OpenAPI 定义中更新 API 资源的 Amazon 资源名称 (ARN)。将它们更改为您想要迁移到的 AWS 账户和区域中的资源。例如,请参阅以下具有 AWS Lambda 集成的 API 的 Swagger 模板片段:

"x-amazon-apigateway-integration": {
          "uri": "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:12345678910:function:mylambda/invocations",
          "responses": {
            "default": {
              "statusCode": "200"
            }
          }

在此示例中,替换 arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:12345678910:function:mylambda/invocations 为目标账户中 Lambda 函数的 ARN。

导入 API

脱机更新 API 资源的 ARN 后,将 OpenAPI 定义导入其他 AWS 账户或区域中的 API Gateway。

  1. 在目标 AWS 账户或区域中打开 API Gateway 控制台
  2. 选择创建 API
  3. 对于选择 API 类型,在 REST API 下,选择导入
  4. 从 Swagger 或 Open API 3 导入下,执行以下任一操作:
    选择选择 Swagger 文件,然后选择已更新的 OpenAPI 定义文件。
    将已更新的 OpenAPI 定义粘贴到文本编辑器字段中。
  5. 设置下,对于终端节点类型,选择区域性边缘优化型私有
  6. 请选择出现警告时放弃,从而在导入期间出现错误或警告时停止导入。或者,选择忽略警告以继续导入。

或者,为目标 AWS 账户或区域配置 AWS CLI,然后使用 import-rest-api 命令。例如:

$ aws apigateway import-rest-api --endpointConfigurationTypes 'REGIONAL' --fail-on-warnings --body 'file:/// path/to/filename.json'

有关更多信息,请参阅将 REST API 导入 API Gateway


这篇文章对您有帮助吗?


您是否需要账单或技术支持?