如何调用私有 API - Amazon API Gateway

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

如何调用私有 API

只能从您的 VPC 内部访问私有 API,并且资源策略必须允许从您已配置的 VPC 和 VPC 终端节点进行访问。如何访问您的私有 API 取决于您是否在 VPC 终端节点上启用了私有 DNS。例如,通过 Di AWS rect Connect 从本地网络访问私有 API 时,您将在 VPC 终端节点上启用私有 DNS。在这种情况下,请按照使用特定于终端节点的公有 DNS 主机名调用您的私有 API 中的步骤操作。

一旦部署了 私有 API,您即可通过私有 DNS(如果您已启用私有 DNS 命名)和公有 DNS 访问它。

要获取私有 API 的 DNS 名称,请执行以下操作:

  1. 登录 AWS Management Console 并打开亚马逊 VPC 控制台,网址为 https://console.aws.amazon.com/vpc/

  2. 在左侧导航窗格中,选择终端节点,然后为 API Gateway 选择您的接口 VPC 终端节点。

  3. Details (详细信息) 窗格中,您将看到 DNS names (DNS 名称) 字段中有 5 个值。前 3 个值是您的 API 的公有 DNS 名称。另外 2 个值则是 API 的私有 DNS 名称。

使用私有 DNS 名称调用您的私有 API

警告

在为 API Gateway 创建接口 VPC 终端节点时选择“启用私有 DNS 名称”选项时,其中存在 VPC 终端节点的 VPC 将无法访问公有(边缘优化和区域性)API。有关更多信息,请参阅为何无法从 API Gateway VPC 终端节点连接到我的公有 API?

如果您已启用了私有 DNS,则可以使用私有 DNS 名称访问您的私有 API,如下所示:

{restapi-id}.execute-api.{region}.amazonaws.com

用于调用 API 的基本 URL 采用以下格式:

https://{restapi-id}.execute-api.{region}.amazonaws.com/{stage}

例如,假设您在本示例中设置 GET /petsGET /pets/{petId} 方法,并假设您的其余 API ID 是 01234567ab,您的区域是 us-west-2,则您可以通过在浏览器中键入以下 URL 来测试 API:

https://01234567ab.execute-api.us-west-2.amazonaws.com/test/pets

https://01234567ab.execute-api.us-west-2.amazonaws.com/test/pets/1

或者,您也可以使用以下 cURL 命令:

curl -X GET https://01234567ab.execute-api.us-west-2.amazonaws.com/test/pets

以及

curl -X GET https://01234567ab.execute-api.us-west-2.amazonaws.com/test/pets/2

使用访问您的私有 API AWS Direct Connect

您还可以使用建立从本地网络 AWS Direct Connect 到 Amazon VPC 的专用私有连接,并使用公有 DNS 名称通过该连接访问您的私有 API 终端节点。

您还可以使用私有 DNS 名称从本地网络访问您的私有 API,方法是设置 Amazon Route 53 Resolver 入站终端节点并从远程网络转发私有 DNS 的所有 DNS 查询。有关更多信息,请参阅 Amazon Route 53 开发人员指南中的将入站 DNS 查询转发到您的 VPC

使用 Route53 别名访问您的私有 API

您可以使用将 VPC 终端节点与私有 REST API 关联或取消关联中概述的过程将 VPC 终端节点与私有 API 关联或取消关联。

将私有 API 的 REST API ID 与您将从中调用 REST API 的 VPC 终端节点相关联后,可以使用以下格式基本 URL 以使用 Route53 别名来调用 API。

生成的基本 URL 采用以下格式:

https://{rest-api-id}-{vpce-id}.execute-api.{region}.amazonaws.com/{stage}

例如,假设您在此示例中设置了 GET /pets 和 GET /pets/{petId} 方法,并假设您的 API 的 API ID 为 01234567ab,VPC 终端节点 ID 为 vpce-01234567abcdef012,而您所在的地区是 us-west- 2,您可以通过以下方式调用您的 API:

curl -v https://01234567ab-vpce-01234567abcdef012.execute-api.us-west-2.amazonaws.com/test/pets/

使用特定于终端节点的公有 DNS 主机名调用您的私有 API

您可以使用特定于终端节点的 DNS 主机名访问您的私有 API。这些是包含您的私有 API 的 VPC 终端节点 ID 或 API ID 的公有 DNS 主机名。

生成的基本 URL 采用以下格式:

https://{public-dns-hostname}.execute-api.{region}.vpce.amazonaws.com/{stage}

例如,假设您在本示例中设置了 GET /petsGET /pets/{petId} 方法,并假设您的 API 的 API ID 为 01234567ab,其公有 DNS 主机名为 vpce-01234567abcdef012-01234567,而且您的区域为 us-west-2,则可以使用 cURL 命令中的 Host 标头通过 VPCE ID 测试您的 API,如以下示例所示:

curl -v https://vpce-01234567abcdef012-01234567.execute-api.us-west-2.vpce.amazonaws.com/test/pets -H 'Host: 01234567ab.execute-api.us-west-2.amazonaws.com'

或者,您可以使用 cURL 命令中的 x-apigw-api-id 标头以下面的格式通过其 API ID 访问您的私有 API:

curl -v https://{public-dns-hostname}.execute-api.{region}.vpce.amazonaws.com/test -H'x-apigw-api-id:{api-id}'