首页 > 解决方案 > 无法将使用 EB cli 创建的 elasticbeanstalk 环境添加到 VPC:此环境不是 VPC 的一部分

问题描述

首先,用例:我有一个大型 Spring Boot 单体,它伴随着一些用于执行某些任务的小型 go 服务。目前,它们被私有地简单地托管在同一台服务器上,因此可以使用 localhost 进行内部通信。我正在考虑将它作为 ElasticBeanstalks 部署到 AWS,目前正在使用免费套餐来评估它。我希望 Spring Boot 应用程序是公开可见的,并且 Go 服务可用于 Spring Boot 应用程序但不向公众提供。我的印象是我想将它们部署为单独的 ElasticBeanstalk 环境,但将它们分配给同一个 VPC。如果这是错误的假设,请告诉我正确的假设!

如果那是我们想要的,那么这就是我当前的初始问题。我已经设置了 VPC(使用默认值)并在我的本地存储库中使用eb initeb create来部署应用程序。当它部署并运行时,我进入ConfigurationEB 的 AWS 控制台,然后网络部分简单地说This environment is not part of a VPC.。我已经测试选择经典、应用程序和网络作为负载均衡器,但结果相同。我需要在此期间做些什么eb create吗?

我已经尝试过eb create --vpc,但老实说,我不知道要为所有提示填写什么:

Enter the VPC ID: xxxxxxxxxxxxxxxxx
Do you want to associate a public IP address? (Y/n): Y
Enter a comma-separated list of Amazon EC2 subnets: ?
Enter a comma-separated list of Amazon ELB subnets: ?
Do you want the load balancer to be public? (Select no for internal) (Y/n): ?
Enter a comma-separated list of Amazon VPC security groups: 

我应该寻找什么才能进入这里?我假设的 VPC ID 是我创建的 VPC 的 VPC ID,但我很难理解其余部分。如果我尝试简单地运行,eb create --vpc.id <XXXXXXXXXXXXXXXXXX>那么我会得到ERROR: ServiceError - Configuration validation exception: Invalid option value: 'internal' (Namespace: 'aws:ec2:vpc', OptionName: 'ELBScheme'): Internal load balancers are valid only in a VPC; however, your environment is currently not running in a VPC.

感谢帮助!

标签: amazon-elastic-beanstalkamazon-vpcvpc

解决方案


对于面向公众的应用程序,您不需要两个单独的 VPC。在同一个 vpc 中,您可以创建一个负载均衡器 asInternal并创建另一个负载均衡器 as Internet facing

这是有关字段的一些信息。

  • 输入VPC ID:vpc-abc123

  • 是否要关联公共 IP 地址?(是/否):如果面向互联网,是的。这将为负载均衡器分配一个公共 IP 地址

  • 输入以逗号分隔的 Amazon EC2 子网列表:? 您可以输入私有子网列表,无法直接从 Internet 访问私有子网,这就是为什么您创建面向公众的负载均衡器(用于面向 Internet 的应用程序)接收 Web 流量并转发到实例的原因。

  • 输入以逗号分隔的 Amazon ELB 子网列表:?对于面向 Internet 的应用程序,您需要选择公共子网。对于内部应用,您需要选择私有子网

您希望负载均衡器公开吗?(为内部选择否)(是/否):?

  • 对于面向 Internet 的应用程序,是

  • 对于内部应用,否

输入以逗号分隔的 Amazon VPC 安全组列表:应为 VPC 创建安全性。换句话说,如果您检查安全组,您应该会看到您的 vpc id。


推荐阅读