AWS Beanstalk - 如果没有来自 CLI 的负载均衡器,则无法在 VPC 中创建环境

Bil*_*ers 2 amazon-web-services amazon-elastic-beanstalk

我想使用 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": []
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

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

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

Roh*_*nga 5

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

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

正如文档所述:

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

  • 你能仔细检查一下你是否对这些文件进行了 git add 操作吗? (2认同)
  • “但是当我执行 eb create 时,它​​不使用这些设置。为什么呢?” 因为选项优先。您可以阅读更多信息 - http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options.html#configuration-options-precedence (2认同)