在 API Gateway 中更改公有或私有 API 终端节点类型
更改 API 终端节点类型要求您更新 API 的配置。您可以使用 API Gateway 控制台、Amazon CLI 或适用于 API Gateway 的Amazon开发工具包更改现有 API 类型。更新操作最多可能需要 60 秒才能完成。在这段时间内,您的 API 将可用,但其终端节点类型无法再次进行更改,直到当前更改完成。
支持以下终端节点类型更改:
-
从边缘优化到区域或私有
-
从区域到边缘优化或私有
-
从私有到区域
您不能将私有 API 更改为边缘优化的 API。
如果您正在将公有 API 从边缘优化更改为区域(以及反之),请注意边缘优化 API 可能具有与 API 不同的行为。例如,边缘优化的 API 删除 Content-MD5
标头。传递到后端的任意 MD5 哈希值可以表示在请求字符串参数或正文属性中。但是,区域 API 会传递此标头映射,虽然可能会将标头名称重新映射到某个其他名称。了解区别可帮助您决定如何将边缘优化的 API 更新为区域 API,或者从区域 API 更新为边缘优化的 API。
使用 API Gateway 控制台更改 API 终端节点类型
要更改 API 的 API 终端节点类型,请执行以下步骤:
将一个公有终端节点从区域转换为边缘优化(以及反之)
-
通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway
。 选择一个 REST API。
选择 Settings。
-
将 Endpoint Configuration (终端节点配置) 下的 Endpoint Type (终端节点类型) 选项从
Edge Optimized
更改为Regional
或从Regional
更改为Edge Optimized
。 -
选择 Save Changes (保存更改) 以开始更新。
将一个私有终端节点转换为区域终端节点
-
通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway
。 选择一个 REST API。
-
编辑 API 的资源策略以删除对 VPC 或 VPC 终端节点的任何提及,以便 API 从您的 VPC 之外以及在您的 VPC 之内进行的调用成功。
选择 Settings。
-
将 Endpoint Type (终端节点类型) 更改为
Regional
。 -
选择 Save Changes (保存更改) 以开始更新。
-
从 API 中删除资源策略。
-
重新部署您的 API,以使更改生效。
使用 Amazon CLI 更改 API 终端节点类型
要使用 Amazon CLI 更新其 API ID 为
的边缘优化的 API,请按如下所示调用 update-rest-api:{api-id}
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 终端节点类型。