我做错了什么,或者AWS VPC ec2实例无法到达任何AWS托pipe服务(s3 / sns / sqs),而无法通过公网路由到路由表中的Internet网关?
我在这里被告知Aws vpc在CloudFormation中的默认路由表 ,AWS VPC默认routetable默认没有公共路由,所以它可以“保护”VPC。
但是,如果我不能在没有公共路由的情况下访问AWS服务……那只是为了实现为所有路由表添加公共路由而打破目的?
我做错了什么,或者AWS VPC ec2实例无法到达任何AWS托pipe服务(s3 / sns / sqs),而无法通过公网路由到路由表中的Internet网关?
这是正确的。 如果您需要使用这些服务,您的实例将需要EIP或公共IP,否则您将需要VPC中的NAT主机。 一个VPC是真正的私人的,它运行在一个维护良好的公司networking的同样的方式:只允许你明确允许的stream量。
值得注意的是:RDS,Elasticache,Redshift等托pipe服务确实可以在您的VPC中运行。
AWS最近(2015年5月)增加了对S3的VPCterminal的支持,至less在没有公共互联网访问的情况下,您可以使用S3。
AWS在用户指南中指出,他们将在未来添加VPCterminal以获得更多服务。
具有公用和专用子网(NAT)的VPC
此场景的configuration包括具有公有子网和专用子网的虚拟私有云(VPC)。 如果您希望运行面向公众的Web应用程序,并维护不可公开访问的后端服务器,则我们推荐使用此scheme。 一个常见的例子是多层网站,Web服务器位于公有子网中,数据库服务器位于私有子网中。 您可以设置安全性和路由,以便Web服务器可以与数据库服务器进行通信。
公有子网中的实例可以直接从Internet接收入站stream量,而私有子网中的实例则不能。 公有子网中的实例可以将出站stream量直接发送到Internet,而私有子网中的实例则不能。 相反,私有子网中的实例可以通过驻留在公有子网中的networking地址转换(NAT)网关访问Internet。 数据库服务器可以使用NAT网关连接到Internet进行软件更新,但Internet无法启动到数据库服务器的连接。
注意
您还可以使用VPC向导来configuration具有NAT实例的VPC; 但是,我们build议您使用NAT网关。 有关更多信息,请参阅NAT网关。
通常Lambda函数不能访问VPC内的专用networking。 但他们可以设置访问专用networking。 将Lambda函数设置为可以访问私有VPC
然后用下面的方法,可以使用Lambda作为私有networking内的任何代理。 这样你就不需要提供任何公共的资源访问。 您生成公共API网关,并通过Lambda代理提供对内部私有资源的访问。
将Lambda设置为API网关代理
同样重要的是要记住,即使您的公共networking使用公共网关,也可以使用安全组和networkingACL来限制每个资源的stream量。 所以你最终得到的是一个非常可控的设置。