当公共子网 ACL 入站被全部拒绝时,VPC 私有子网中的 Elastic beanstalk 部署失败,并出现以下错误

当公共子网 ACL 入站被全部拒绝时,VPC 私有子网中的 Elastic beanstalk 部署失败,并出现以下错误

TLD:错误,当公共子网入站时,全部拒绝。

The EC2 instances failed to communicate with AWS Elastic Beanstalk,  
either because of configuration problems with the VPC or a failed EC2 instance.  
Check your VPC configuration and try launching the environment again.  

我的配置

我在 VPC 内有三个子网,公共子网也使用互联网时代的方式分配,两个私有子网都使用 nat 网关分配 在此处输入图片描述 添加了 SG 的 VPC 端点服务,允许来自 VPC 级别的所有流量,并添加了 private-1 和 private-2 子网 在此处输入图片描述

公共子网 ACL 入站 在此处输入图片描述

公共子网 ACL 出站 在此处输入图片描述

private-1 和 private-2 子网 ACL 入站 在此处输入图片描述

private-1 和 private-2 子网 ACL 出站 在此处输入图片描述

使用云形成模板在 private-1 子网中部署了节点 beanstalk 应用程序,ec2 和 ELB,其中 ELB 与内部模式安全组一起允许从 ELB SG 在实例上使用端口 80。

经过漫长的等待,Beanstalk 应用程序失败并出现错误

The EC2 instances failed to communicate with AWS Elastic Beanstalk,  
either because of configuration problems with the VPC or a failed EC2 instance.  
Check your VPC configuration and try launching the environment again.

我允许从公共子网到 private-1 的端口,并通过 ssh 隧道从实例公共子网连接到由 beanstalk 创建的 ec2 实例。实例上没有进行任何配置

  1. Node 应用程序未在端口 8081 上运行
  2. Nginx 未在端口 8080 上运行
  3. 没有针对端口 80 至 8080 的 IP 表转发规则 在此处输入图片描述

当我允许在公共子网上入站时,弹性 beantalk 应用程序已配置并且环境为绿色 在此处输入图片描述

我不明白如果我根本没有使用任何资源,为什么我需要允许公共子网 ACL 入站,以及为什么在这种情况下 beanstalk 没有配置实例?

在公共子网入站 ACL 中允许 1024-65535 个临时端口从互联网返回流量后,我仍然面临这个问题。

在公共子网入站 ACL 中添加端口 443 后,Beanstalk 能够成功启动 公共子网的新 ACL 在此处输入图片描述

由于不允许从公共子网到私有子网的网络,并且整个设置都在私有子网中,为什么端口 443 会破坏 beanstalk 环境?

答案1

我真的不明白为什么我需要允许公共子网 ACL 入站,如果我根本没有使用任何资源

但你确实有。你有一个 NAT 网关。NAT 网关为私有子网上的资源提供服务,但它们实际上位于公共子网上,并在面向 Internet 的一侧使用公共子网。

您正在阻止来自互联网的回复流量返回 NAT 网关。

那么为什么在这种情况下 beanstalk 没有配置实例?

从上面的内容中应该可以看出原因。如错误消息所示,实例未联系 EB 服务,因为它无法联系 EB 服务 - 您阻止了它 - 因此无法进行任何配置。

您可以使用任何您喜欢的 VPC 配置,只要它满足以下要求。

VPC 要求

互联网访问 – 实例必须通过以下方法之一访问互联网。

  • 公共子网 – 实例具有公共 IP 地址并使用 Internet 网关访问 Internet。

  • 私有子网 – 实例使用 NAT 设备访问 Internet。

https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/vpc.html


除非有特殊原因需要配置网络 ACL,否则最好不要使用它们。安全组足以满足大多数用途。

相关内容