在 API Gateway 中更改公有或私有 API 端点类型 - Amazon API Gateway
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 API Gateway 中更改公有或私有 API 端点类型

更改 API 终端节点类型要求您更新 API 的配置。您可以使用 API Gateway 控制台、Amazon CLI 或适用于 API Gateway 的Amazon开发工具包更改现有 API 类型。端点类型无法再次进行更改,直到当前更改完成,但您的 API 将可用。

支持以下终端节点类型更改:

  • 从边缘优化到区域或私有

  • 从区域到边缘优化或私有

  • 从私有到区域

您不能将私有 API 更改为边缘优化的 API。

如果您正在将公有 API 从边缘优化更改为区域(以及反之),请注意边缘优化 API 可能具有与 API 不同的行为。例如,边缘优化的 API 删除 Content-MD5 标头。传递到后端的任意 MD5 哈希值可以表示在请求字符串参数或正文属性中。但是,区域 API 会传递此标头映射,虽然可能会将标头名称重新映射到某个其他名称。了解区别可帮助您决定如何将边缘优化的 API 更新为区域 API,或者从区域 API 更新为边缘优化的 API。

使用 API Gateway 控制台更改 API 终端节点类型

要更改 API 的 API 终端节点类型,请执行以下步骤:

将一个公有端点从区域转换为边缘优化(以及反之)
  1. 通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway

  2. 选择一个 REST API。

  3. 选择 API 设置

  4. API 详细信息部分中,选择编辑

  5. 对于 API 端点类型,选择边缘优化区域

  6. 选择保存更改

  7. 重新部署您的 API,以使更改生效。

将一个私有终端节点转换为区域终端节点
  1. 通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway

  2. 选择一个 REST API。

  3. 编辑 API 的资源策略以删除对 VPC 或 VPC 终端节点的任何提及,以便 API 从您的 VPC 之外以及在您的 VPC 之内进行的调用成功。

  4. 选择 API 设置

  5. API 详细信息部分中,选择编辑

  6. 对于 API 端点类型,选择区域

  7. 选择保存更改以开始更新。

  8. 从 API 中删除资源策略。

  9. 重新部署您的 API,以使更改生效。

使用 Amazon CLI 更改 API 终端节点类型

要使用 Amazon CLI 更新其 API ID 为 {api-id} 的边缘优化的 API,请按如下所示调用 update-rest-api

aws apigateway update-rest-api \ --rest-api-id {api-id} \ --patch-operations op=replace,path=/endpointConfiguration/types/EDGE,value=REGIONAL

成功的响应包含 200 OK 状态代码以及与以下类似的负载:

{ "createdDate": "2017-10-16T04:09:31Z", "description": "Your first API with Amazon API Gateway. This is a sample API that integrates via HTTP with our demo Pet Store endpoints", "endpointConfiguration": { "types": "REGIONAL" }, "id": "0gsnjtjck8", "name": "PetStore imported as edge-optimized" }

相反,也可以将区域 API 更新为边缘优化的 API,如下所示:

aws apigateway update-rest-api \ --rest-api-id {api-id} \ --patch-operations op=replace,path=/endpointConfiguration/types/REGIONAL,value=EDGE

由于 put-rest-api 用于更新 API 定义,因此它不适用于更新 API 终端节点类型。