使用AWS开发工具包通过Direct Connect,VPC和VPC端点从本地访问AWS S3

时间:2019-11-06 16:01:51

标签: amazon-web-services amazon-s3 routing amazon-vpc aws-direct-connect

我们的设置:

  • 我们有一个本地服务器,我们希望从该服务器将数据发送到S3(使用AWS Java SDK)
  • 我们的本地数据中心使用Direct Connect连接到AWS
  • 在AWS端,有一个VPC,它确实具有到S3的VPC端点

enter image description here

我们的假设是一切都已正确路由(内部部署可以看到AWS中的VPC)。假设VPC CIDR范围是10.10.10.0/24。

当我们在SDK中调用“ PutObject”(但可以是任何S3方法)并提供存储桶的名称时,SDK产生的请求将以公共S3 IP地址(52.xxx)为目标。但是,这不会被路由为:Direct Connect-> VPC-> VPC Endpoint-> S3,相反,我们的路由器会将流量路由到Internet代理(默认为0.0.0.0/0路由)-因为VPC CIDR范围是10.10.10.0/24。

我的问题是(很明显):是否有正确的方法来通过AWS Direct Connect而不是通过互联网路由流量

我希望有这样的东西:

  • SDK命令中有一个选项可以包括其他IP 应该先发送哪个请求
  • 内部有一些S3 我们可以提速的服务
  • 其中一些简单的按钮 涉及可以按下的服务。

免责声明:我并不是网络或AWS基础架构师,所以请谅解。

2 个答案:

答案 0 :(得分:1)

如果不使用proxies,则无法通过Direct Connect专用VIF访问VPC端点。

您可以分配一个公共VIF。在VGW中启用路由传播后,AWS会将所有公共路由发布到客户的路由器,因此,该区域中所有指向AWS服务的流量都将通过Direct Connect传输。

  

公共虚拟接口可以使用公共IP地址访问所有AWS公共服务。   公共虚拟接口允许您全局连接到所有AWS公共IP空间。任何Direct Connect位置的Direct Connect客户都可以创建公共虚拟接口来接收Amazon的全球IP路由

答案 1 :(得分:0)

使用公共VIF也有其缺点。客户喜欢利用高速AWS Direct Connect将文件复制到S3。由于S3是公共服务,因此当前的标准解决方案是使用公共VIF将整个S3公共地址范围播发到本地(如前所述)。但是,这意味着所有本地用户都可以上传到任何S3存储桶,包括通过自己的个人帐户上传到其个人S3存储桶。当前解决方案如下。

即使您使用S3私有端点服务,该端点仍由代表该地区AWS S3的公共CIDR块代表。请查看此内容,了解通过直接连接访问S3存储桶的另一种方法,而无需向外界开放它并放弃访问。

https://docs.aviatrix.com/HowTos/sfc_faq.html