【发布时间】:2018-10-24 06:06:18
【问题描述】:
我有一个运行 Tomcat + Java 8 的 Elastic Beanstalk Web 服务。我还有一个 API 网关,它将包含一个指向 VPC 链接的端点。我在使用我认为应该使用的设置部署 Beanstalk 时遇到问题。我的目标是使 Beanstalk Web 服务只能通过 API Gateway 端点访问,因此没有外部用户/服务可以直接访问 xyz.us-east-2.elasticbeanstalk.com URL。
为此,我通过控制台创建了一个使用10.0.0.0/16 IPv4 块的 VPC。
我还创建了两组子网,“EC2Subnets”使用10.0.0.0/24,“ELBSubnets”使用10.0.1.0/24。
从 ebcli,我运行:
$eb create MyApp --elb-type network --vpc
提示输入一些信息:
Enter the VPC ID: vpc-myvpcID
Do you want to associate a public IP address? (Y/n): y
Enter a comma-separated list of Amazon EC2 subnets: subnet-myec2subnetID
Enter a comma-separated list of Amazon ELB subnets: subnet-myelbsubnetID
Enter a comma-separated list of Amazon VPC security groups:
Do you want the load balancer to be public? (Select no for internal) (Y/n): n
这样做会导致将 EC2 实例添加到 Beanstalk 时出现挂起,并最终导致错误:“EC2 实例无法与 AWS Elastic Beanstalk 通信,原因可能是 VPC 的配置问题或失败的 EC2 实例。检查您的 VPC 配置并尝试再次启动环境。”
我做错了什么?很明显我的网络出了点问题,但我很难弄清楚到底是什么。
编辑:设法弄明白了; VPC 需要将 Internet 网关添加到其路由表中。为此,我创建了一个 Internet 网关,将其附加到 VPC,然后进入该 VPC 的路由表并添加新创建的网关以对应于0.0.0.0/0。
【问题讨论】:
标签: amazon-web-services amazon-ec2 amazon-elastic-beanstalk amazon-vpc