5

我正在使用 Terraform 成功启动一些 Elastic Beanstalk 应用程序(单 Docker 配置)并在应用程序/环境创建过程中启用自动缩放。

这在我尝试过的大多数地区都可以正常工作,但是当我尝试在伦敦(eu-west-2)启动它时出现错误:

错误:应用计划时出错:

发生 1 个错误:

* aws_elastic_beanstalk_environment.my-service-env:发生 1 个错误:

* aws_elastic_beanstalk_environment.my-service-env:等待 Elastic Beanstalk 环境 (e-mt7f3i5bmq) 准备就绪时出错:发生 2 个错误:

* 2018-06-11 19:31:29.28 +0000 UTC (e-mt7f3i5bmq) :环境必须有与之关联的实例配置文件。
* 2018-06-11 19:31:29.39 +0000 UTC (e-mt7f3i5bmq) : 启动环境失败。

我发现如果我手动将 aws-elasticbeanstalk-ec2-role 附加为 IamInstanceProfile 它工作正常 - 但这依赖于之前自动创建的角色......

eu-west-2 区域是否有某些情况意味着 Beanstalk 应用程序不会像在其他区域那样使用实例配置文件创建?

我错过了什么?

谢谢你的帮助!

4

1 回答 1

10

对于其他陷入此问题的人,我通过直接添加实例配置文件作为设置找到了解决方案。此实例配置文件不会像通过控制台创建弹性 beanstalk 时那样自动添加。下面是定义的完整 beanstalk 环境资源:

resource "aws_elastic_beanstalk_environment" "beanstalkenvironment" {
  name                = "dev-example"
  application         = aws_elastic_beanstalk_application.beanstalkapp.name
  solution_stack_name = "64bit Amazon Linux 2018.03 v2.14.1 running Docker 18.09.9-ce"
  version_label       = aws_elastic_beanstalk_application_version.beanstalkapplicationversion.name
  setting {
      namespace = "aws:autoscaling:launchconfiguration"
      name = "IamInstanceProfile"
      value = "aws-elasticbeanstalk-ec2-role"
  }
  setting {
    namespace = "aws:autoscaling:launchconfiguration"
    name = "InstanceType"
    value = "t2.micro"
  }
  tags = {
    Name = "test"
    Environment = "test"
  }
}

用于修复此错误的确切设置是:

setting {
      namespace = "aws:autoscaling:launchconfiguration"
      name = "IamInstanceProfile"
      value = "aws-elasticbeanstalk-ec2-role"
  }

为了找到所需的值“aws-elasticbeanstalk-ec2-role”,我检查了通过控制台创建的现有弹性 beanstalk 实例。在环境下,配置中有一个安全部分。所需的角色名称列为“IAM 实例配置文件”。希望这可以帮助其他陷入此问题的人。

于 2020-02-14T15:37:46.420 回答