由于 VPC/EC2 配置问题,EC2 实例无法与 AWS Elastic Beanstalk 通信

问题描述 投票:0回答:1

我一直在学习全栈课程,并且负责 AWS 部分,但我在让它工作时遇到了一些问题,因为它的视频现在与创建实例的布局不同。我尝试用我的直觉按照视频进行设置,但我无法让环境正常工作。我想知道是否有人可以帮忙。

August 15, 2024 16:36:06 (UTC+1)
ERROR
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.
August 15, 2024 16:36:06 (UTC+1)
ERROR
Stack named 'awseb-e-uxy3xm2t2p-stack' aborted operation. Current state: 'CREATE_FAILED' Reason: The following resource(s) failed to create: [AWSEBInstanceLaunchWaitCondition]. 
My template has this: 
Service role
arn:aws:iam::242201283214:role/ElasticBeanstalkEC2Role
EC2 key pair - amigoscode 
EC2 instance profile - ElasticBeanstalkEC2Role

Network VPC: vpc-04c0c33bb8d0003ad
Public IP address: true
Instance subnets: subnet-09c7948e5eed2ab71,subnet-05096597f42453378,subnet-0ee8a021de0a34c5d
Database Database availability: false
Has coupled database: true
Database deletion policy: Delete
Database engine: postgres
Database engine version: 16.3
Database instance class: db.t3.micro
Database password: ******
Database storage: 20
Database subnets: subnet-09c7948e5eed2ab71,subnet-05096597f42453378,subnet-0ee8a021de0a34c5d
Database username: amigoscode

尝试更改表格,重新运行它,尽我所能填写。

我希望 EC2 实例能够成功与 AWS Elastic Beanstalk 通信,从而允许环境部署和管理应用程序。

amazon-web-services docker amazon-elastic-beanstalk
1个回答
0
投票

我发现您的 EC2 实例无法与 AWS Elastic Beanstalk 通信,因此遇到了一些问题。这可能有点棘手,但别担心——我以前也遇到过类似的问题,所以让我们一起解决一下。

1。专有网络配置

首先,确保您的 VPC 和子网设置正确。如果您的实例位于公共子网中,则需要为它们分配公共 IP,否则它们将无法正常通信。如果您使用私有子网,请确保有 NAT 网关,以便您的实例可以访问互联网。 您可以检查子网设置以确保启用自动分配公共 IP。 这是执行此操作的快速命令:

aws ec2 modify-subnet-attribute --subnet-id subnet-09c7948e5eed2ab71 --map-public-ip-on-launch

2。安全组

接下来要检查的是您的安全组。如果您的应用程序需要公开访问,您需要确保 EC2 实例的安全组允许端口 80 (HTTP) 和 443 (HTTPS) 上的入站流量。此外,如果您的实例需要与其他服务通信,请确保您的安全组允许出站流量。 以下是允许入站流量的方法:

aws ec2 authorize-security-group-ingress --group-id sg-123abc456def --protocol tcp --port 80 --cidr 0.0.0.0/0

aws ec2 authorize-security-group-ingress --group-id sg-123abc456def --protocol tcp --port 443 --cidr 0.0.0.0/0

3.实例配置文件权限

您的 EC2 实例需要正确的权限才能与 AWS 服务进行通信。仔细检查您的实例配置文件 (ElasticBeanstalkEC2Role) 是否附加了 AWSElasticBeanstalkWebTier 策略。这使得您的实例可以与其他 AWS 资源(例如 S3 或 RDS)进行交互。

您可以像这样附上政策:

aws iam attach-role-policy --role-name ElasticBeanstalkEC2Role --policy-arn arn:aws:iam::aws:policy/AWSElasticBeanstalkWebTier

4。 Elastic Beanstalk 服务角色

同样,Elastic Beanstalk 的服务角色 (ElasticBeanstalkServiceRole) 需要正确的权限来管理您的资源。 AWSElasticBeanstalkService 策略应附加到此角色。

使用以下命令附加策略:

aws iam attach-role-policy --role-name ElasticBeanstalkServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalkService

5。检查日志

如果到目前为止一切看起来都不错,但您仍然遇到问题,我建议您检查 Elastic Beanstalk 控制台中的日志。您可以通过在控制台中转到您的环境并导航到“日志”选项卡来找到这些内容。日志应该为您提供有关可能出现问题的更具体信息。

最后的想法

这通常是一些小问题,例如安全组配置错误、缺少权限或 VPC 设置问题。如果您仍然遇到问题,请尝试使用默认 VPC 来简化您的设置,看看是否可以解决问题。一旦一切正常,您就可以转向更加自定义的设置。

祝你好运,如果您需要更多帮助,请随时与我们联系!

© www.soinside.com 2019 - 2024. All rights reserved.