从私有VPC子网访问Amazon S3


12

如果我正在运行VPC,并且该网络的专用部分中有一些服务器通过从Amazon s3下载文件来进行后端处理,我是否可以在内部访问S3来获取这些文件?还是我必须通过NAT访问公共互联网,通过https下载s3文件,然后进行处理?


请参阅我对stackoverflow.com/questions/25539057/…的答复,以了解一种方法,尽管我的答复更多地与设置S3存储桶有关,以便只能从特定的VPC对其进行访问,因此它只能部分答复您的SPC。题。
Eddie 2015年

Answers:


29

希望使用“ Internet”之类的用户名,您会知道这一点。但是既然你问...

:)

VPC 确实是私有的。只有您明确允许的流量才可以穿越VPC的边界。

因此,在VPC内部,需要为需要访问外部资源的实例分配一个EIP(在这种情况下,它们可以使用AWS的基础架构访问外部资源),或者您需要提供NAT主机(在这种情况下,所有流量出口通过您自己的NAT的VPC)。

如果您选择提供自己的NAT主机,请记住,您将需要在该实例上禁用源/目标检查,以及向指向NAT主机的专用子网添加默认路由。

更新(2015-05-10): 截至2015年5月11日,AWS 为S3发布了一个“ VPC端点”,它允许直接从VPC访问S3,而无需通过代理主机或NAT实例。值得庆幸的是,出于对VPC真正私有性质的尊重,此功能默认情况下处于关闭状态,但可以使用AWS控制台或通过其API轻松打开。


访问控制如何?当流量通过NAT实例到达时,S3存储桶策略如何工作(由于源已被NAT转换,S3如何知道请求数据的角色或用户)?
Tuukka Mustonen 2014年

@TuukkaMustonen唯一关心的是您是否具有基于源IP的策略。在这种情况下,您将需要使用NAT实例的公共IP作为源IP。
filipenf 2015年

2

如果您的实例位于VPC的公共子网中,则:

  • 您应该为您的实例分配公共IP地址
  • 或者您应该为实例分配弹性IP

如果您的实例位于VPC的专用子网中,则:

  • 您需要在公共子网中运行NAT设备。这样,VPC专用子网中的实例可以通过NAT访问Internet并访问S3。您可以使用AWS VPC NAT,也可以配置自己的(如果要设置自己的NAT,请使用Google进行配置)

底线,要访问S3,您必须能够访问Internet。


仅供参考:根据我的上述更新,不再需要互联网访问。
EEAA 2015年


-3

您无需“出门”或“后退”或更改任何有关在AWS区域内传输数据的方式。往返同一区域的存储桶不收费。您必须支付存储费用。


这不能回答OP的问题。
EEAA 2014年

目前尚不清楚他是指AWS之外的网络。感谢您的DVD!
quadruplebucky

您错过了重点。他在专用VPC子网中具有EC2实例。默认情况下,这些用户无权访问该VPC以外的任何内容。因此,正如我在回答中所述,他将需要采取以下两种选择之一来授予他们访问S3的权限。它与网络是否在AWS内部还是外部无关,而与在VPC外部进行访问无关。
EEAA 2014年

@quadruplebucky,我明确表示我正在访问“公共互联网”以通过HTTPS获取文件。
互联网

我要在这里鞠躬,这场比赛我没有狗。EEAA回答了您的问题。如果您跨地区,则需付费。
2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.