从 VPC 连接到我的 API Gateway API 时,为什么会收到 HTTP 403 禁止错误?

2 分钟阅读
0

在从我的虚拟私有云(VPC)调用我的 Amazon API Gateway API 时,我收到了 HTTP 403 禁止错误。这是为什么?

简短描述

出现 HTTP 403 禁止错误的最常见原因是为与 VPC 关联的 API Gateway 接口 VPC 端点启用了私有 DNS。在这种场景中,从 VPC 向 API Gateway API 发出的所有请求都将解析到该接口 VPC 端点。但是,无法使用 VPC 端点连接到公有 API。

VPC 端点的私有 DNS 名称格式为 *.execute-api.<REGION>.amazonaws.com。此格式与公有和私有 API 的 API Gateway 默认调用 URL 一致。例如,公有 API 的默认调用 URL 是 https://abcd1234.execute-api.us-east-1.amazonaws.com,其中 abcd1234 是 API ID,us-east-1 是该 API 所在的 AWS 区域。

在 VPC 端点上启用私有 DNS 时,该 API 的调用 URL 将被私有 DNS 名称 *.execute-api.us-east-1.amazonaws.com 覆盖,其中 * 是 API ID 的占位符。从 VPC 内部解析公有 API 的 DNS 查询时,解析后的 DNS 会指向关联 VPC 端点的私有 IP,而不是公有 API 的公有 IP。然后,API 调用将通过 VPC 端点路由到公有 API,而不是通过互联网进行路由。由于 VPC 端点只能将流量路由到私有 API,因此导致 HTTP 403 错误。

如果您的接口 VPC 端点未启用私有 DNS,或者您的 VPC 中没有端点,请参阅未启用私有 DNS 时连接到公有 API 部分。

解决方法

确认已为与您的 VPC 关联的接口 VPC 端点启用了私有 DNS

检查您的 VPC,查看是否有访问私有 API 的接口 VPC 端点。如果存在接口端点,请检查是否启用了私有 DNS 设置。有关更多信息,请参阅 VPC 中的 DNS 属性

在启用私有 DNS 的情况下连接到公有 API

如果启用了私有 DNS,则请设置边缘优化型自定义域名区域性自定义域名以连接到您的公有 API。

**重要提示:**VPC 中尝试连接到公有 API 的资源必须具有互联网连接。注意:配置区域性自定义域名的 DNS 记录时,必须使用 A 类别名记录。不过,对于边缘优化型自定义域名,既可以使用 A 类别名记录,也可以使用 CNAME 记录

未启用私有 DNS 时连接到公有 API

如果接口 VPC 端点中未启用私有 DNS,或者您的 Amazon Virtual Private Cloud(Amazon VPC)配置中没有端点,请确认是否存在以下情况:

如果您的 VPC 具有访问公有 API 的权限,则使用公有 DNS 连接您的公有 API。有关更多信息,请参阅在 API Gateway 中控制和管理对 REST API 的访问

(可选)更改接口 VPC 端点的私有 DNS 设置

用户可以更改接口 VPC 端点的私有 DNS 设置。更改此设置将会影响指向该接口 VPC 端点的私有 IP 的 API 暂存 URL 的解析。

**注意:**更改私有 DNS 设置会影响用户从 VPC 连接到私有 API公有 API 的方式。

  1. 在 Amazon VPC 控制台中打开端点窗格
  2. 选择接口 VPC 端点。
  3. 选择 Actions(操作),然后选择 Modify Private DNS names(修改私有 DNS 名称)。
  4. 对于 Enable Private DNS Name(启用私有 DNS 名称),选中或清除 Enable for this endpoint(为此端点启用)复选框。
  5. 选择 Modify Private DNS names(修改私有 DNS 名称)。

有关更多信息,请参阅查看和更新 VPC 的 DNS 属性


相关信息

使用接口 VPC 端点访问 AWS 服务

为 REST API 设置自定义域名

VPC 的 DNS 属性

相关视频

AWS 官方
AWS 官方已更新 2 年前