巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3

巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

摘要 亚马逊云科技在2021年2月正式发布了适用于 Amazon S3 的 Amazon PrivateLink,Amazon PrivateLink 使用虚拟网络中的私有 IP 提供 Amazon Simple Storage Service (S3) 与本地资源之间的专用连接。借助此功能,您现在可以使用 Virtual Private Cloud 中的接口 VPC 终端节点,在安全的虚拟网络中直接访问作为私有终端节点的 Amazon S3。通过允许您使用私有 IP 地址访问Amazon S3,这扩展了现有网关终端节点的功能。从本地应用程序向 Amazon S3 发出的 API 请求和 HTTPS 请求会自动通过接口终端节点进行定向,这些终端节点通过 PrivateLink 以安全和私密的方式连接到 Amazon S3。

  • 适用于 Amazon S3 的Amazon PrivateLink
    https://docs.aws.amazon.com/A...
  • Amazon PrivateLink
    https://aws.amazon.com/privat...
  • Amazon Simple Storage Service (S3)
    https://aws.amazon.com/s3/
  • Virtual Private Cloud
    https://aws.amazon.com/vpc/
本文档介绍的方案是通过利用跨区域间的VPC对等连接和Amazon S3的接口终端节点,来实现跨区域私有访问Amazon S3。客户可以根据自己的需要,可以通过 Amazon Direct Connect 或 Amazon VPN 提供的安全连接从本地应用程序私有访问 Amazon S3。
  • Amazon Direct Connect
    https://aws.amazon.com/direct...
  • Amazon VPN
    https://aws.amazon.com//
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

想要了解更多亚马逊云科技最新技术发布和实践创新,敬请关注2021亚马逊云科技中国峰会!点击图片报名吧~更多精彩内容,敬请期待8.19-20北京、9.15深圳分会吧!
服务介绍 早在 2015 年,Amazon S3 是第一个支持添加 VPC 终端节点的服务;通过VPC网关终端节点提供与 Amazon S3 的安全连接,而不需要网关或 NAT 实例。其原理是在指定的路由表里,创建到Amazon S3服务的路由,与路由表相关联的每个子网都可以访问终端节点,随后通过终端节点将来自这些子网实例的流量路由到Amazon S3服务。在下图中,子网2中的实例可通过网关终端节点访问Amazon S3。
  • Amazon S3 是第一个支持添加 VPC 终端节点的服务
    https://aws.amazon.com/blogs/...
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

这种新的灵活性深受客户欢迎,但是也有它的局限性 – 不支持跨区域和本地数据中心私有访问Amazon S3,最新推出的Amazon S3接口终端节点则可以满足这种需求,其通过在选择的子网中,使用分配私有IP的ENI创建Amazon S3接口终端节点,从而实现与Amazon S3的安全连接。VPC内应用程序,或者是通过Amazon Direct Connect或Amazon VPN等安全连接到接口终端节点的本地应用程序,都可以通过接口终端节点私有访问 Amazon S3。当从本地应用程序连接到 Amazon S3 时,通过消除配置防火墙规则或互联网网关的需要,接口终端节点可简化您的网络架构。
  • Amazon Direct Connect
    https://aws.amazon.com/direct...
  • Amazon VPN
    https://aws.amazon.com//
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

Amazon S3两种终端节点的对比:
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

演示环境整体架构 巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

演示环境的VPC设置:
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

注意:
  • VPC 对等连接的2个VPC的CIDR块不能有重叠
  • 使用具有接口 VPC 终端节点的私有 DNS (Amazon PrivateLink),则必须将enableDnsHostnames
  • 和enableDnsSupport 属性设置为 true
  • 在两个VPC对等连接中都需要启用DNS解析
  • 接口终端节点的安全组必须允许入站 HTTPS(端口 443)流量
演示环境搭建步骤 4.1 创建演示VPC环境
在每个区域中通过VPC Console的向导创建一个带有公有子网和私有子网的VPC, 同时在cn-northwest-1区域创建Amazon S3桶(具体步骤略)。下面是我的演示环境中的截图:
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

cn-north-1区域VPC及子网
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

cn-northwest-1区域VPC及子网
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

在两个VPC中都启用DNS hostnames 和 DNS resolution:
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

cn-northwest-1区域Amazon S3桶

4.2 搭建跨区域VPC对等连接
把两个区域中的VPC创建对等连接,更新路由表(具体步骤略),下面是我的演示环境中的截图:
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

VPC对等连接
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

【巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3】在两个VPC对等连接中都启用DNS解析
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

cn-north-1区域路由表
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

cn-northwest-1区域路由表
4.3 验证跨区域VPC对等连接
在cn-north-1公有子网和私有子网各创建一台EC2实例,公有子网的EC2作为跳板机连接到私有子网的EC2。同时在cn-northwest-1的私有子网创建一台EC2实例。
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

cn-north-1区域EC2
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

cn-northwest-1区域EC2
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

EC2安全组入站
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

EC2安全组出站
借助于公有子网的EC2跳板机, 验证从cn-north-1私有子网的EC2(IP:172.31.30.22) 成功SSH到cn-northwest-1的EC2实例(IP:10.10.1.94 )。
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

4.4 创建Amazon S3接口终端节点
首先为确保亚马逊云科技命令行工具(例如 Amazon CLI)可以通过 HTTPS 从 VPC 中的资源向亚马逊云科技服务发出请求,接口终端节点的安全组必须允许入站 HTTPS(端口 443)流量,所以在cn-northwest-1区域创建一个安全组,入站规则如下:
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

在cn-northwest-1区域的VPC创建Amazon S3的接口终端节点,关联对应的VPC和子网,来实现跨区域私有访问Amazon S3。
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

接下来给接口终端节点关联之前创建的安全组,然后创建Amazon S3的接口终端节点。
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

创建完成后,会生成两种类型的Amazon S3接口终端节点的DNS:
  • Regional DNS – 包括唯一的VPC端点ID、服务标识符、Amazon区域和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来指定可用区,降低跨可用区数据传输成本
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

Amazon S3接口终端节点在选择的子网中,使用分配私有IP的ENI创建Amazon Amazon S3接口终端节点,从而实现与Amazon S3的安全连接。
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

4.5 测试验证
首先在cn-north-1创建EC2 服务的role, 赋予Amazon S3 读写权限。
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

把创建的EC2 服务的role赋予cn-north-1私有子网的EC2(IP:172.31.30.22)。
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

验证从EC2不能直接访问cn-northwest-1的Amazon s3桶,因为EC2在私有子网,不能访问public网络访问Amazon S3 Endpoint,命令会一直hung住直到超时。
注意:需要先把Amazon CLI升级到最新版本。
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

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

巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

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

对于本地数据中心访问Amazon S3接口终端节点DNS, 亚马逊云科技 Global区域可以结合Route53 Resolver(参考文档1);亚马逊云科技中国区可以搭建DNS Proxy来实现DNS解析(参考文档2)。
总结 本文介绍了利用Amazon S3的接口终端节点和跨区域间的VPC对等连接,来实现跨区域私有访问Amazon S3,网络流量通过Amazon PrivateLink全部保持在Amazon网络上。客户可以根据自己的需要,可以通过Amazon Direct Connect或Amazon VPN提供的安全连接从本地应用程序私有访问Amazon S3。从本地应用程序向Amazon S3发出的 API 请求和 HTTPS 请求会自动通过接口终端节点进行定向,这些终端节点通过PrivateLink以安全和私密的方式连接到Amazon S3。
  • Amazon Direct Connect
    https://aws.amazon.com/direct...
  • Amazon VPN
    https://aws.amazon.com//
参考文档
  • https://docs.aws.amazon.com/z...
  • https://aws.amazon.com/blogs/...
  • https://aws.amazon.com/cn/blo...
  • https://docs.aws.amazon.com/z...
  • https://docs.aws.amazon.com/z...
本篇作者
巧用Amazon PrivateLink——轻松访问私有终端节点Amazon S3
文章图片

朱士洋
亚马逊云科技技术客户经理
负责企业级客户的架构和成本优化、技术支持等工作,致力于AdTech等行业,曾供职于IBM,拥有15+年的产品设计、开发/测试、技术支持经验。

    推荐阅读