在 eu-west-2 区域中使用 Terraform 时不会自动创建 Elastic Beanstalk 实例配置文件

Mat*_*bbs 5 amazon-web-services amazon-elastic-beanstalk terraform aws-iam

我正在使用 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 应用程序不会像在其他地区那样使用实例配置文件创建?

我错过了什么?

谢谢你的帮助!

小智 10

对于其他卡在这个问题上的人,我通过直接添加实例配置文件作为设置找到了一个解决方案。此实例配置文件不会像通过控制台创建弹性 beantalk 时那样自动添加。下面是定义的完整 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"
  }
}
Run Code Online (Sandbox Code Playgroud)

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

setting {
      namespace = "aws:autoscaling:launchconfiguration"
      name = "IamInstanceProfile"
      value = "aws-elasticbeanstalk-ec2-role"
  }
Run Code Online (Sandbox Code Playgroud)

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

  • 发布的问题是,默认情况下不会创建该角色,只有当您根据 aws 文档从 cli 或 aws 控制台执行第一个 eb 时:“当您使用 Elastic Beanstalk 控制台或 EB CLI 启动环境时,Elastic Beanstalk 会创建名为 aws-elasticbeanstalk-ec2-role 的默认实例配置文件,并向其分配具有默认权限的托管策略。” (2认同)