在 API Gateway 中更改公有或私有 API 端点类型
更改 API 端点类型要求您更新 API 的配置。您可以使用 API Gateway 控制台、AWS CLI 或适用于 API Gateway 的AWS开发工具包更改现有 API 类型。端点类型无法再次进行更改,直到当前更改完成,但您的 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。
选择 API 设置。
在 API 详细信息部分中,选择编辑。
-
对于 API 端点类型,选择边缘优化或区域。
-
选择 Save changes(保存更改)。
-
重新部署您的 API,以使更改生效。
将私有端点转换为区域端点
-
通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway
。 选择一个 REST API。
-
编辑 API 的资源策略以删除对 VPC 或 VPC 端点的任何提及,以便 API 从您的 VPC 之外以及在您的 VPC 之内进行的调用成功。
选择 API 设置。
在 API 详细信息部分中,选择编辑。
-
对于 API 端点类型,选择区域。
-
选择 Save changes(保存更改)。
-
从 API 中删除资源策略。
-
重新部署您的 API,以使更改生效。
将区域端点转换为私有端点
-
通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway
。 选择一个 REST API。
-
创建资源策略来授予对您的 VPC 或 VPC 端点的访问权限。有关更多信息,请参阅 步骤 3:为私有 API 设置资源策略。
选择 API 设置。
在 API 详细信息部分中,选择编辑。
-
对于 API 端点类型,选择私有。
-
(可选)对于 VPC 端点 ID,选择您要与私有 API 关联的 VPC 端点 ID。
-
选择 Save changes(保存更改)。
-
重新部署您的 API,以使更改生效。
使用 AWS CLI 更改 API 端点类型
要使用 AWS 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 端点类型。