发布于: Oct 10, 2021

演示环境搭建步骤
创建演示 VPC 环境

在每个区域中通过 VPC Console 的向导创建一个带有公有子网和私有子网的 VPC, 同时在 cn-northwest-1 区域创建S3桶(具体步骤略)。下面是我的演示环境中的截图:
cn-north-1 区域 VPC 及子网:

cn-northwest-1 区域 VPC 及子网:

在两个 VPC 中都启用 DNS hostnames 和 DNS resolution:

cn-northwest-1 区域 S3 桶:

把两个区域中的 VPC 创建对等连接,更新路由表(具体步骤略),下面是我的演示环境中的截图:

VPC 对等连接:

在两个 VPC 对等连接中都启用 DNS 解析:

cn-north-1 区域路由表:

cn-northwest-1 区域路由表:

在 cn-north-1 公有子网和私有子网各创建一台 EC2 实例,公有子网的 EC2 作为跳板机连接到私有子网的 EC2。 同时在 cn-northwest-1 的私有子网创建一台 EC2 实例。
cn-north-1 区域 EC2:

cn-northwest-1 区域 EC2:

EC2 安全组入站:

EC2 安全组出站:

借助于公有子网的 EC2 跳板机, 验证从 cn-north-1 私有子网的 EC2(IP:172.31.30.22) 成功 SSH 到 cn-northwest-1 的 EC2 实例(IP:10.10.1.94 )。

首先为确保 Amazon Web Services 命令行工具(例如 Amazon CLI)可以通过 HTTPS 从 VPC 中的资源向 Amazon Web Services 服务发出请求,接口终端节点的安全组必须允许入站 HTTPS(端口 443)流量,所以在 cn-northwest-1 区域创建一个安全组,入站规则如下:

在 cn-northwest-1 区域的 VPC 创建 S3 的接口终端节点,关联对应的 VPC 和子网,来实现跨区域私有访问 S3。

接下来给接口终端节点关联之前创建的安全组,然后创建S3的接口终端节点。

创建完成后,会生成两种类型的S3接口终端节点的 DNS:

  • Regional DNS – 包括唯一的 VPC 端点 ID、服务标识符、Amazon Web Services区域和 amazonaws.com, 本实例中为 vpce-0257c85882d96cc95-vj9syim9.s3.cn-northwest-1.vpce.amazonaws.com.cn
  • Zone DNS – 包括可用区,如 vpce-0257c85882d96cc95-vj9syim9-cn-northwest-1a.s3.cn-northwest-1.vpce.amazonaws.com.cn,客户用这种类型的 DNS 来指定可用区,降低跨可用区数据传输成本

S3 接口终端节点在选择的子网中,使用分配私有 IP 的 ENI 创建 S3 接口终端节点,从而实现与 S3 的安全连接。

首先在 cn-north-1 创建 EC2 服务的 role, 赋予 S3 读写权限。

把创建的 EC2 服务的 role 赋予 cn-north-1 私有子网的 EC2IP172.31.30.22)。

验证从 EC2 不能直接访问 cn-northwest-1 的 s3 桶,因为 EC2 在私有子网,不能访问 public 网络访问 S3 Endpoint,命令会一直 hung 住直到超时。

注意:需要先把 Amazon CLI 升级到最新版本。

验证通过 VPC 对等连接和 S3 接口终端节点 DNS,cn-north-1 的私有子网的 EC2 可以成功访问位于 cn-northwest-1 的 s3 桶并上传文件。

S3 接口终端节点和之前的网关终端节点是可以共存的,建议本区域的 VPC 内应用程序通过网关终端节点私有安全 S3,这种方式不会产生额外的费用。对于其它区域和客户数据中心用接口终端节点, 通过 Amazon PrivateLink 以安全和私密的方式连接到 S3。推荐的架构如下:

对于本地数据中心访问 S3 接口终端节点 DNS, Amazon Global 区域可以结合Route53 Resolver(参考文档1);Amazon Web Services中国区可以搭建 DNS Proxy 来实现 DNS 解析(参考文档2)。

本文介绍了利用 Amazon S3 的接口终端节点和跨区域间的 VPC 对等连接,来实现跨区域私有访问 S3,网络流量通过 Amazon PrivateLink 全部保持在 Amazon 网络上。客户可以根据自己的需要,可以通过 Amazon Direct Connect 或 Amazon VPN 提供的安全连接从本地应用程序私有访问 S3。从本地应用程序向 S3 发出的 API 请求和 HTTPS 请求会自动通过接口终端节点进行定向,这些终端节点通过 PrivateLink 以安全和私密的方式连接到 S3。

相关文章