AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
如何使用接口 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 来测试设置。
注意: API Gateway 私有 REST API 和 VPC 端点必须位于同一 AWS 区域中。
解决方法
在一个账户(账户 A)中的 Amazon VPC 中创建接口端点
创建新的接口 VPC 端点
在账户 A 中,按照在 VPC 中为 API Gateway 创建接口 VPC 端点中的说明进行操作。
**重要事项:**对于 Policy(策略),选择 Full access(完全访问)。最佳做法是使用 VPC 端点策略限制 API ID 对端点的访问。另一种最佳做法是使用 API Gateway 资源策略限制主体对端点的访问。有关详细信息,请参阅应用最低权限许可。
创建接口端点时,请执行以下操作:
- 最佳做法是在不同的可用区选择多个子网。跨多个可用区配置子网时,接口端点更能抵御潜在的可用区故障。
- 激活私有 DNS,以使用公有或私有 DNS 连接到您的私有 REST API。
**注意:**为接口 VPC 端点激活私有 DNS 时,无法再从 VPC 访问 API Gateway 公有 API。有关详细信息,请参阅当我从 VPC 连接到 API Gateway API 时,为什么会收到 HTTP 403 Forbidden(HTTP 403 禁止访问)错误? - 您的安全组必须有一条规则,允许来自您的 VPC 中某个 IP 地址范围的 TCP 端口 443 入站 HTTPS 流量。该规则也可以来自您的 VPC 中的另一个安全组。
**注意:**如果您没有符合其中一个要求的安全组,请为您的 VPC 创建新的安全组。如果您未指定安全组,则默认安全组将与端点网络接口相关联。
获取接口端点的 VPC 端点 ID
创建接口端点后,将显示 VPC 端点 ID。复制新接口端点的 VPC 端点 ID(例如:vpce-1a2b3c456d7e89012)。
**注意:**创建和配置私有 REST API 时,请使用此 VPC 端点 ID。
获取接口端点的公有 DNS 名称
Endpoints(端点)页面显示在 Amazon VPC 控制台中。在 Endpoints(端点)页面的 Details(详细信息)选项卡上,在 DNS names(DNS 名称)列中复制接口端点的公有 DNS 名称。例如:vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com。
在另一个账户(账户 B)中创建 API Gateway 私有 REST API
- 在账户 B 中,打开 API Gateway 控制台。
- 选择 Create API(创建 API)。
- 对于 Choose an API type(选择 API 类型),在 REST API Private(REST API 私有)下,选择 Build(构建)。
- 在 API details(API 详细信息)下,输入以下信息:
对于 API name(API 名称),输入一个名称。
(可选)对于 Description(描述),输入描述。
将 Endpoint Type(端点类型)设置为 Private(私有)。
对于 VPC Endpoint IDs(VPC 端点 ID),输入您的接口端点 ID。然后,选择 Add(添加)。
**注意:**当您将接口端点与私有 REST API 关联时,API Gateway 会生成新的 Amazon Route 53 别名记录。您可以使用 Route53 别名访问您的私有 API。 - 选择 Create API(创建 API)。
有关详细信息,请参阅创建私有 API。
为私有 REST API 配置资源策略,允许接口端点调用 API
- 在 API Gateway 控制台的导航窗格中,在您的 API 下,选择 Resource Policy(资源策略)。
- 在 Resource Policy(资源策略)页面上,在文本框中输入以下示例资源策略:
**注意:**请将 vpce-1a2b3c456d7e89012 替换为接口端点 ID。{ "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:/*/*/*" } ] }
有关详细信息,请参阅为私有 API 设置资源策略。
为私有 REST API 设置方法
- 在 API Gateway 控制台的导航窗格中,在您的 API 下,选择 Resources(资源)。
- 在 Resources(资源)窗格中,选择 Actions(操作),然后选择 Create Method(创建方法)。
- 在 / resource(/资源)节点下的下拉列表中,选择 ANY(任意),然后选择复选标记图标。
- 在 / - ANY - Setup(/ - 任意 - 设置)窗格中,对于 Integration type(集成类型),选择 Mock(模拟)。
**注意:**模拟集成会响应到达它的任何请求。 - 选择 Save(保存)。
有关详细信息,请参阅 API Gateway 中用于 REST API 的方法。
部署私有 REST API
- 在 API Gateway 控制台的 Resources(资源)窗格中,选择 Actions(操作),然后选择 Deploy API(部署 API)。
- 在 Deploy API(部署 API)对话框中,输入以下信息:
对于部署阶段,选择新阶段。
对于 Stage name(阶段名称),输入一个名称。例如,dev 或 test。 - 选择 Deploy(部署)。
- 在 Stage Editor(阶段编辑器)窗格中,找到消息 If Private DNS is enabled, use this URL:(如果启用了私有 DNS,请使用此 URL:)。复制您的私有 REST API 的调用 URL。
**注意:**使用私有 REST API 的调用 URL 来测试设置。
有关详细信息,请参阅部署私有 API。
从账户 A 调用私有 REST API 来测试设置
- 在账户 A 中,在与接口端点相同的 VPC 中启动 Amazon Elastic Compute Cloud (Amazon EC2) 实例。
**重要事项:**选择与接口端点关联的安全组。 - 连接到 Amazon EC2 实例。
**注意:**您的 AWS 账户可能会产生 EC2 实例费用。如果您创建了一个实例用于测试,请在完成测试后终止该实例,以避免产生更多费用。 - 从 EC2 实例的命令行中,运行以下任一 curl 命令来调用账户 B 中的私有 REST API。
**注意:**有关详细信息,请参阅“使用特定于端点的公有 DNS 主机名调用您的私有 API”。
对于私有 DNS 名称
运行以下命令:
**注意:**请将 https://a1bc234d5e.execute-api.region.amazonaws.com/stage-name 替换为您的私有 API 的调用 URL。此命令仅在您为接口端点启用私有 DNS 时起作用。有关详细信息,请参阅“使用私有 DNS 名称调用私有 API”。curl -i https://a1bc234d5e.execute-api.region.amazonaws.com/stage-name
对于 Route53 别名
运行以下命令:
**注意:**请将 a1bc234d5e 替换为您的 API ID,将 vpce-1a2b3c456d7e89012 替换为接口端点 ID,将 region 替换为您的 API 区域。请将 stage-name 替换为部署私有 API 的阶段的名称。有关详细信息,请参阅使用 Route53 别名调用私有 API。curl -i https://a1bc234d5e-vpce-1a2b3c456d7e89012.execute-api.region.amazonaws.com/stage-name
对于带主机标头的公有 DNS 名称
运行以下命令:
**注意:**请将 vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com 替换为您的接口端点的公有 DNS 名称,将 stage-name 替换为部署私有 API 的阶段的名称。请将 a1bc234d5e.execute-api.region.amazonaws.com 替换为您的私有 API 的调用 URL。curl -i https://vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com/stage-name -H "Host: a1bc234d5e.execute-api.region.amazonaws.com"
对于带 x-apigw-api-id 标头的公有 DNS 名称
运行以下命令:
**注意:**请将 vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com 替换为您的接口端点的公有 DNS 名称,将 stage-name 替换为部署私有 API 的阶段的名称。请将 a1bc234d5e 替换为您的 API ID。curl -i https://vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com/stage-name -H "x-apigw-api-id:a1bc234d5e" - 查看命令输出。连接成功时,API Gateway 将返回 200 OK 响应。

