我想在 AWS 账户或区域之间迁移我的 Amazon API Gateway 的 REST API。该如何操作?
简短描述
将 REST API 从 API Gateway 导出到 OpenAPI 2.0 (Swagger) 或 OpenAPI 3.0 定义文件。然后,将 API 导入另一个账户或区域中的 API Gateway。
**重要提示:**要导入 REST API,您还必须在目标账户或区域中重新创建集成的任何 API 资源。
解决方法
**注意:**如果您在运行 AWS Command Line Interface (AWS CLI) 命令时遇到错误,请确保您使用的是最新版本的 AWS CLI。
使用 API Gateway 控制台或 AWS CLI 导出 API
使用 API Gateway 控制台导出 API
1. 在 API Gateway 控制台中,选择您的 API。
2. 将您的 API 部署到阶段。
3. 在阶段编辑器窗格中,选择导出选项卡。
4. 对于导出为,选择 Swagger 或 OpenAPI3。
5. 根据您的使用案例,暂停以下操作之一:
导出为 Swagger + API Gateway 扩展
导出为 OpenAPI 3 + API Gateway 扩展
OpenAPI 的定义显示在控制台中。
6. 选择 JSON 或 YAML 将 OpenAPI 定义下载为您首选的文件类型。
使用 AWS CLI 导出 API
运行以下 get-export 命令:
重要提示:更改命令选项 --parameters、--export-type 和 --accept 的值以匹配您的首选导出格式。
aws apigateway get-export --parameters extensions='integrations' --rest-api-id a1b2c3d4e5 --stage-name dev --export-type swagger --accept application/yaml /path/to/filename.yaml
有关更多信息,请参阅从 API Gateway 导出 REST API。另请参阅 get-export (AWS CLI 命令参考)。
在导出的 OpenAPI 定义中更新 API 资源的 Amazon 资源名称 (ARN)
将 OpenAPI 定义中 API 资源的 ARN 更改为 API 要迁移到的账户和区域中的资源 ARN。
具有 AWS Lambda 集成的 API 的 Swagger 模板示例片段
**重要提示:**要试用此片段,请替换 arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:12345678910:function:mylambda/invocations 为目标账户中 Lambda 函数的 ARN。
"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"
}
}
将 API 导入另一个账户或区域中的 API Gateway
使用 API Gateway 控制台导入 API
1. 在目标账户或区域中打开 API Gateway 控制台。
2. 选择创建 API。
3. 在 REST API 下,对于选择 API 类型,选择导入。
4. 在从 Swagger 或 Open API 3 导入下,执行以下任一操作:
选择选择 Swagger 文件,然后选择已更新的 OpenAPI 定义文件。
– 或 –
将已更新的 OpenAPI 定义粘贴到文本编辑器字段中。
5. 在设置下,对于端点类型,根据您的使用案例选择以下选项之一:
区域性
边缘已优化
私有
6. 请选择出现警告时放弃,从而在导入期间出现错误或警告时停止导入。或者,选择忽略警告以导入 API,无论导入过程中是否存在错误或警告。
使用 AWS CLI 导入 API
1. 为目标账户或区域配置 AWS CLI。
2. 运行以下 import-rest-api 命令:
$ aws apigateway import-rest-api --endpointConfigurationTypes 'REGIONAL' --fail-on-warnings --body 'file:/// path/to/filename.json'
有关更多信息,请参阅将 REST API 导入 API Gateway。
相关信息
教程:通过导入示例创建 REST API