AWS Beanstalk - 无法在没有来自 CLI 的负载均衡器的情况下在 VPC 中创建环境

Posted

技术标签:

【中文标题】AWS Beanstalk - 无法在没有来自 CLI 的负载均衡器的情况下在 VPC 中创建环境【英文标题】:AWS Beanstalk - can't create environment in VPC without load balancer from CLI 【发布时间】:2016-05-06 03:12:39 【问题描述】:

我想使用 AWS Elastic Beanstalk 创建一个简单的单实例环境。我可以从 AWS 控制台执行此操作,但是当我尝试从 CLI 执行此操作时,它会为我创建一个负载均衡器 - 似乎不管我在 option_settings 中放了什么。

这是我放在 .ebextensions 文件夹中的配置文件:


  "option_settings": [
    
      "namespace": "aws:autoscaling:launchconfiguration",
      "option_name": "InstanceType",
      "value": "t2.micro"
    ,
    
      "namespace": "aws:elasticbeanstalk:environment",
      "option_name": "EnvironmentType",
      "value": "SingleInstance"
    ,
    
      "namespace": "aws:autoscaling:launchconfiguration",
      "option_name": "SecurityGroups",
      "value": "sg-XXXXXXX"
    ,
    
      "namespace": "aws:autoscaling:launchconfiguration",
      "option_name": "EC2KeyName",
      "value": "XXXXXXXX"
    ,
    
      "namespace": "aws:ec2:vpc",
      "option_name": "VPCId",
      "value": "vpc-XXXXXX"
    ,
    
      "namespace": "aws:ec2:vpc",
      "option_name": "Subnets",
      "value": "subnet-XXXXXXX"
    ,
    
      "namespace": "aws:autoscaling:asg",
      "option_name": "MinSize",
      "value": 1
    ,
    
      "namespace": "aws:autoscaling:asg",
      "option_name": "MaxSize",
      "value": 1
    
  ],
  "packages": 
    "yum": 
      "postgresql94-devel": [],
      "git": []
    
  

我看到负载均衡器列在我的 EB 环境配置控制面板的“网络层”部分中,并且我已验证它是在 AWS 控制台的 EC2 部分中创建的。

如何在没有负载平衡器的情况下从 CLI 启动 Beanstalk 环境?任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

您使用的是 aws cli 或 eb cli 哪个 CLI?我猜是eb cli。

除了您在 ebextensions 中指定的选项设置之外,至少 eb cli 和 AWS 管理控制台会在 API 参数中默认传递一些选项设置。在 Web 控制台中,您将获得一个下拉菜单以选择负载平衡或单实例环境。在 EB CLI 中,我认为您会收到选择负载平衡环境的提示。您也可以将--single 选项传递给eb create。如果您未指定任何内容,则假定默认为负载平衡。因此,即使您在 ebextension 中指定了选项设置,也会在 API 参数中传递一个选项设置。 Elastic Beanstalk 优先考虑使用 API 设置的值,而不是 ebextension 中的值。

正如this 文档所说:

EB 命令行界面 (CLI) 和 Elastic Beanstalk 控制台为某些配置选项提供了推荐值。这些值可以不同于默认值,并在创建环境时在 API 级别设置。推荐值允许 Elastic Beanstalk 改进默认环境配置,而无需对 API 进行向后不兼容的更改。 例如,EB CLI 和 Elastic Beanstalk 控制台都为 EC2 实例类型(aws:autoscaling:launchconfiguration 命名空间中的 InstanceType)设置了配置选项。每个客户端都提供了覆盖默认设置的不同方式。在控制台中,您可以从“创建新环境”向导的“配置详细信息”页面上的下拉菜单中选择不同的实例类型。通过 EB CLI,您可以使用 --instance_type 参数进行 eb create。

【讨论】:

在我的 .ebextensions/options.config 文件中,我设置了实例类型和 VPC id 等,但是当我进行 eb create 时,它​​不使用这些设置。这是为什么呢? 你能仔细检查一下你为这些文件做了 git add 吗? "但是当我创建一个 eb 时,它不使用这些设置。这是为什么呢?"因为期权优先。您可以阅读更多内容 - docs.aws.amazon.com/elasticbeanstalk/latest/dg/…

以上是关于AWS Beanstalk - 无法在没有来自 CLI 的负载均衡器的情况下在 VPC 中创建环境的主要内容,如果未能解决你的问题,请参考以下文章

AWS Elastic Beanstalk httpd/conf.d/ssl.conf 无法识别

无法访问此站点以获取 AWS Elastic Beanstalk 环境 URL

来自 AWS Elastic Beanstalk 的 Mime 类型错误

无法使用模式 r 打开:fopen():AWS Elastic Beanstalk

AWS Elastic Beanstalk Docker 来自 ECR 错误“Dockerrun.aws.json 中未指定 Docker 映像”

无法延长 AWS 中 beanstalk 的超时时间