跳至内容

如何从 VPC 访问私有 API Gateway 端点并保持与公有 API 的连接?

2 分钟阅读
0

我想从 Amazon Virtual Private Cloud (Amazon VPC) 访问 Amazon API Gateway 私有 API 并保持与公有 API 的连接。

简短描述

API Gateway 私有 REST API 可以从 Amazon VPC 接口端点访问。但是,您可能无法同时成功连接到私有和公有 API,具体取决于私有 DNS 是开启还是关闭。

解决方法

为 API Gateway 创建 VPC 接口端点

完成以下步骤:

  1. 打开 VPC 控制台
  2. 选择 Endpoints(端点),然后选择 Create endpoint(创建端点)。
  3. 对于 Type(类型),选择 AWS Services(AWS 服务)。
  4. Services(服务)搜索栏中,输入 execute-api
  5. 对于 Service Name(服务名称),选择 com.amazonaws.region.execute-api
  6. 选择 VPC 下拉列表,然后选择要用于创建 VPC 端点的 VPC。
  7. (可选)要关闭私有 DNS,请选择 Additional settings(其他设置),然后取消选中 Enable Private DNS Name(启用私有 DNS 名称)。
    **注意:**私有 DNS 默认处于启用状态。
  8. 对于 Subnets(子网),选择您的子网。
  9. 对于 Security groups(安全组),选择要与端点网络接口关联的安全组。
  10. 选择 Create endpoint(创建端点)。
  11. 选择 Details(详细信息)选项卡,然后记下要在下一节中使用的 Endpoint ID(端点 ID)。

有关详细信息,请参阅创建 VPC 端点

创建私有 API

完成以下步骤:

  1. 打开 API Gateway 控制台
  2. 选择 Create API(创建 API)。
  3. 对于 REST API Private(私有 REST API),选择 Build(构建)。
    **注意:**私有 REST API 只能在 VPC 内访问。
  4. 对于 API name(API 名称),输入私有 API 的名称。
  5. 对于 VPC endpoint IDs(VPC 端点 ID),输入您的 VPC 端点 ID,然后选择 Add(添加)。
  6. 选择 Create API(创建 API)。
  7. 将您的 API 部署到某个阶段

有关详细信息,请参阅创建私有 API

创建公有 API

完成以下步骤:

  1. 打开 API Gateway 控制台
  2. 选择 Create API(创建 API)。
  3. 对于 HTTP APIREST API,选择 Build(构建)。
  4. 对于 API name(API 名称),输入公有 API 的名称。
  5. 选择 Create API(创建 API)。

有关详细信息,请参阅创建 HTTP API

在打开私有 DNS 的情况下连接到公有 API

**重要事项:**您的 VPC 资源必须具有互联网连接才能连接到您的公有 API。

要在私有 DNS 打开的情况下连接到公有 API,请设置边缘优化的自定义域名区域自定义域名。然后,您可以使用自定义域名(例如 api.example.com)调用 API Gateway 公有 API。与您的私有 REST API 的连接将继续通过私有 REST API 端点运行。

如果您想从本地网络连接,请设置一个 Amazon Route 53 Resolver 入站端点。要使用 execute-api 调用 URL,请将来自本地网络的所有私有 DNS 查询转发到该入站端点。

在私有 DNS 关闭的情况下连接到私有 API

**注意:**在私有 DNS 关闭的情况下,默认的 execute-api 调用 URL 无法连接到私有 REST API。

要在私有 DNS 关闭的情况下连接到私有 API,请在 Route 53 中为您的自定义域创建私有托管区域。在私有托管区中,为您的 API 标识符添加 A 记录。将 A 记录指向接口 VPC 端点的 IP 地址,以使用私有 REST API 的默认 execute-api 调用 URL。

相关信息

调用私有 API

在 API Gateway 中控制和管理对 REST API 的访问

VPC 端点使用本地 DNS 时,如何访问私有 API Gateway API?

当我尝试从 VPC 连接到 API Gateway 公有 API 时,为什么会收到 HTTP“403 Forbidden”错误?