Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
如何使用接口 VPC 端点访问另一个账户中的 API Gateway 私有 REST API?
我想使用接口虚拟私有云 (VPC) 端点来访问另一个 AWS 账户中的Amazon API Gateway 私有 REST API。
简述
要使用接口 VPC 端点访问另一个 AWS 账户中的 API Gateway 私有 REST API,请执行以下操作:
- 在一个账户(账户 A)中的 Amazon Virtual Private Cloud (Amazon VPC) 中创建接口端点。
- 在第二个账户(账户 B)中创建 API Gateway 私有 REST API。
- 为私有 REST API 配置资源策略,允许接口端点调用 API。
- 为私有 REST API 设置方法。
- 部署私有 REST API。
- 从账户 A 调用私有 REST API 来测试设置。
注意: Amazon API Gateway 私有 REST API 和 VPC 端点必须位于同一 AWS 区域中。
解决方案
在一个账户(账户 A)中的 Amazon VPC 中创建接口端点
创建新的接口 VPC 端点
在账户 A 中,按照为 API Gateway execute-api 创建接口 VPC 端点中的说明进行操作。
**重要信息:**对于 “策略”,选择 “**完全访问权限” **。最佳做法是使用 VPC 端点策略限制 API ID 对端点的访问。另一种最佳做法是使用 API Gateway 资源策略限制主体对端点的访问。有关更多信息,请参阅应用最低权限许可。
创建接口端点时,请执行以下操作:
- 最佳做法是在不同的可用区选择多个子网。跨多个可用区配置子网时,接口端点更能抵御潜在的可用区故障。
- 激活私有 DNS 以使用公有或私有 DNS 连接到您的私有 REST API。
**注意:**为接口 VPC 端点激活私有 DNS 时,无法再从 Amazon VPC 访问 API Gateway 公有 API。有关更多信息,请参阅从 VPC 连接到我的 API Gateway API 时,为什么会收到 HTTP 403 禁止错误? - 您的安全组必须有一条规则,即允许 TCP 端口 443 入站来自您的 Amazon VPC 中的一个 IP 地址范围的 HTTPS 流量。该规则也可以来自您的 Amazon VPC 中的另一个安全组。
**注意:**如果您没有符合其中一个要求的安全组,则请创建一个新的安全组。如果您未指定安全组,则默认安全组将与端点网络接口相关联。
获取接口端点的 VPC 端点 ID
创建接口端点后,将显示 VPC 端点 ID。复制新接口端点的 VPC 端点 ID(例如:vpce-1a2b3c456d7e89012)。然后,选择关闭。
**注意:**在创建和配置私有 REST API 时使用此 ID。
获取接口端点的公有 DNS 名称
选择关闭后,Amazon VPC 控制台会显示端点页面。在端点页面的详细信息选项卡上的 DNS 名称列中,复制您的接口端点的公有 DNS 名称,例如:vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com。
在第二个账户(账户 B)中创建 API Gateway 私有 REST API
- 在账户 B 中,打开 API Gateway 控制台。
- 选择创建 API。
- 对于选择 API 类型,在 REST API 私有下,选择构建。
- 在创建页面上,将选择协议设置为 REST。
- 对于创建新 API,选择新建 API。
- 在设置下,输入以下信息:
对于 API 名称,输入一个名称。
(可选)对于描述,输入描述。
将端点类型设置为私有。
对于 VPC 端点 ID,输入您的接口端点 ID。然后,选择添加。
**注意:**当您将接口端点与私有 REST API 关联时,API Gateway 会生成新的 Amazon Route 53 别名记录。您可以使用 Route53 别名访问您的私有 API。 - 选择创建 API。
有关更多信息,请参阅在 Amazon API Gateway 中创建私有 API 。
为私有 REST API 配置资源策略,允许接口端点调用 API
1.在 API Gateway 控制台的导航窗格中,在您的 API 下,选择资源策略。
2.在资源策略页面上,在文本框中输入以下示例资源策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "execute-api:/*/*/*", "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1a2b3c456d7e89012" } } }, { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "execute-api:/*/*/*" } ] }
**注意:**将 vpce-1a2b3c456d7e89012 替换为接口端点 ID。
有关更多信息,请参阅为私有 API 设置资源策略。
为私有 REST API 设置方法
- 在 API Gateway 控制台的导航窗格中,在您的 API 下,选择资源。
- 在资源窗格中,选择操作,然后选择创建方法。
- 在 /资源节点下的下拉列表中,选择任意,然后选择复选标记图标。
- 在任意设置窗格上,对于集成类型,选择模拟。
**注意:**模拟集成会响应到达它的任何请求。 - 选择保存。
有关更多信息,请参阅在 API Gateway 中设置 REST API 方法。
部署私有 REST API
- 在 API Gateway 控制台的资源窗格上,选择操作,然后选择部署 API。
- 在部署 API 对话框中,输入以下信息:
对于部署阶段,选择新阶段。
对于阶段名称,输入一个名称,例如 dev 或 test。 - 选择部署。
- 在阶段编辑器窗格上,找到以下消息:如果启用了私有 DNS,请使用此 URL:。复制您的私有 REST API 的调用 URL。
**注意:**使用私有 REST API 的调用 URL 来测试设置。
有关更多信息,请参阅使用 API Gateway 控制台部署私有 API。
从账户 A 调用私有 REST API 来测试设置
- 在账户 A 中,在与接口端点相同的 Amazon VPC 中启动 Amazon Elastic Compute Cloud (Amazon EC2) 实例。
重要信息:选择与接口端点关联的安全组。 - 连接到 Amazon EC2 实例。
**注意:**您的 AWS 账户可能会产生 EC2 实例费用。如果您创建了要测试的实例,请在完成后终止实例,以防止重复收费。 - 从 Amazon EC2 实例的命令行中,运行以下任一 curl 命令来调用账户 B 中的私有 REST API。
**注意:**有关更多信息,请参阅使用特定于端点的公有 DNS 主机名调用您的私有 API。有关 curl 的更多信息,请参阅 curl 项目网站。
对于私有 DNS 名称
运行以下命令:
curl -i https://a1bc234d5e.execute-api.region.amazonaws.com/stage-name
**注意:**将 https://a1bc234d5e.execute-api.region.amazonaws.com/stage-name 替换为您的私有 API 的调用 URL。此命令仅在您为接口端点启用私有 DNS 时起作用。有关更多信息,请参阅使用私有 DNS 名称调用您的私有 API 。
对于 Route 53 别名
运行以下命令:
curl -i https://a1bc234d5e-vpce-1a2b3c456d7e89012.execute-api.region.amazonaws.com/stage-name
注意:将 a1bc234d5e 替换为您的 API ID,将 vpce-1a2b3c456d7e89012 替换为接口端点 ID,将区域替换为您的 API 区域。将阶段名称替换为部署私有 API 的阶段的名称。有关更多信息,请参阅使用 Route53 别名访问您的私有 API。
对于带主机标头的公有 DNS 名称
运行以下命令:
curl -i https://vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com/stage-name -H "Host: a1bc234d5e.execute-api.region.amazonaws.com"
注意:将 vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com 替换为接口端点的公有 DNS 名称,将阶段名称替换为部署私有 API 的阶段的名称。将 a1bc234d5e.execute-api.region.amazonaws.com 替换为您的私有 API 的调用 URL。
对于带有 x-apigw-api-id 标头的公有 DNS 名称
运行以下命令:
curl -i https://vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com/stage-name -H "x-apigw-api-id:a1bc234d5e"
注意:将 vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com 替换为接口端点的公有 DNS 名称,将阶段名称替换为部署私有 API 的阶段的名称。将 a1bc234d5e 替换为您的 API ID。
4.查看命令输出。连接成功后,API Gateway 会返回 200 OK 响应。
相关信息
相关内容
- AWS 官方已更新 6 个月前
- AWS 官方已更新 4 个月前
- AWS 官方已更新 4 个月前
- AWS 官方已更新 5 个月前