在 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. 选择 Save changes(保存更改)

  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. 选择 Save changes(保存更改)

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

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

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

  2. 选择一个 REST API。

  3. 创建资源策略来授予对您的 VPC 或 VPC 端点的访问权限。有关更多信息,请参阅 步骤 3:为私有 API 设置资源策略

  4. 选择 API 设置

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

  6. 对于 API 端点类型,选择私有

  7. (可选)对于 VPC 端点 ID,选择您要与私有 API 关联的 VPC 端点 ID。

  8. 选择 Save changes(保存更改)

  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 端点类型。