是我做错了什么,还是 AWS VPC ec2 实例由于没有到路由表中的 Internet 网关的公共路由而无法访问任何 AWS 托管服务 (s3/sns/sqs)?
我被告知这里CloudFormation 中的 Aws vpc 默认路由表AWS VPC 默认路由表默认没有公共路由,因此它可以“保护”VPC。
但是,如果没有公共路由,我就无法访问 AWS 服务……这实际上就违背了目的,因为我实际上是在将公共路由添加到所有路由表?
答案1
是我做错了什么,还是 AWS VPC ec2 实例由于没有到路由表中的 Internet 网关的公共路由而无法访问任何 AWS 托管服务 (s3/sns/sqs)?
没错。如果您需要使用这些服务,您的实例将需要 EIP 或公共 IP,或者您需要 VPC 中的 NAT 主机。VPC 是确实私密的,并且它的运行方式与维护良好的企业网络相同:只允许您明确允许的流量。
值得注意的是:RDS、Elasticache、Redshift 等托管服务 能确实在您的 VPC 内运行。
答案2
AWS 为各种服务添加了 VPC 端点,包括 S3 (2015)、EC2 (2017)、SNS (2018) 和 SQS (2018),让您无需公共互联网访问即可使用这些服务。
答案3
具有公有子网和私有子网的 VPC (NAT)
此方案的配置包括具有公共子网和私有子网的虚拟私有云 (VPC)。如果您想运行面向公众的 Web 应用程序,同时维护不可公开访问的后端服务器,我们建议您使用此方案。一个常见示例是多层网站,其中 Web 服务器位于公共子网中,数据库服务器位于私有子网中。您可以设置安全性和路由,以便 Web 服务器可以与数据库服务器通信。
公有子网中的实例可以直接从 Internet 接收入站流量,而私有子网中的实例则不能。公有子网中的实例可以将出站流量直接发送到 Internet,而私有子网中的实例则不能。相反,私有子网中的实例可以使用位于公有子网中的网络地址转换 (NAT) 网关访问 Internet。数据库服务器可以使用 NAT 网关连接到 Internet 进行软件更新,但 Internet 无法发起与数据库服务器的连接。
笔记
您还可以使用 VPC 向导配置带有 NAT 实例的 VPC;但我们建议您使用 NAT 网关。有关更多信息,请参阅 NAT 网关。
答案4
通常 Lambda 函数无法访问 VPC 内的私有网络。但可以将其设置为可以访问私有网络。 设置 Lambda 函数以便能够访问私有 VPC
然后,使用以下方法,您可以使用 Lambda 作为私有网络内部任何内容的代理。这样,您就不需要提供对资源的任何公共访问权限。您生成一个公共 API 网关,它通过 Lambda 代理提供对内部私有资源的访问。
还需记住的是,即使您拥有带有公共网关的公共网络,您也会使用安全组和网络 ACL 限制每个资源的流量。因此,您最终会得到一个受控程度相当高的设置。