AWS ElasticBeanstalk Terraform DisableIMDSv1未知配置设置

时间:2020-08-19 21:17:35

标签: amazon-web-services amazon-ec2 amazon-elastic-beanstalk terraform

我正在尝试在我正在编写的ElasticBeanstalk模块中禁用IMDSv1。我正在查看可用的EB自动缩放设置选项here。它表明DisableIMDSv1是有效设置,但是当我运行terraform apply时,它给了我这个错误。

ConfigurationValidationException: Configuration validation exception: Invalid option specification (Namespace: 'aws:autoscaling:launchconfiguration', OptionName: 'DisableIMDSv1'): Unknown configuration setting.
        status code: 400

我正在使用变量来遍历我的设置,所以这就是带有DisableIMDSv1的变量代码的样子。

    launch_configuration = {
      namespace = "aws:autoscaling:launchconfiguration"
      name      = "IamInstanceProfile"
      value     = "some-role"
    }
    disable_imds_v1 = {
      namespace = "aws:autoscaling:launchconfiguration"
      name      = "DisableIMDSv1"
      value     = "true"
    }

如果我注释掉disable_imds_v1部分,则可以成功运行terraform apply

DisableIMDSv1选项似乎是可用beantalk设置选项的新增功能。 Added June 2020

这是terraform问题,他们没有可用的选项,或者我需要升级到terraform 0.13.x?我正在将terraform version 0.12.23aws provider 3.2.0一起使用。我运行了terraform init -upgrade,将我的AWS提供商从3.1.0提升到了3.2.0,认为可以解决该问题,但我仍然看到Unknown configuration setting消息。

1 个答案:

答案 0 :(得分:1)

对于基于 Amazon Linux 1 (AL1)的EB环境,我遇到了同样的问题。我认为AL1不支持该选项。但这在AL2中对我有用。

下面是我使用的示例。我还使用setting作为设置的名称,而不是launch_configurationdisable_imds_v1,就像您的情况一样。

例如,我使用了aws_elastic_beanstalk_environment

resource "aws_elastic_beanstalk_environment" "ebenv" {

  # ...

  # DisableIMDSv1 option will NOT work in AL1 
  #solution_stack_name = "64bit Amazon Linux 2018.03 v2.9.9 running PHP 7.2"

  # but it will work with AL2 
  solution_stack_name = "64bit Amazon Linux 2 v3.1.0 running PHP 7.4"
  
  setting {
    namespace = "aws:autoscaling:launchconfiguration"
    name  = "EC2KeyName"
    value = aws_key_pair.key.key_name
  }
 
  setting {
    namespace = "aws:autoscaling:launchconfiguration"
    name      = "DisableIMDSv1"
    value     = "true"
  }  
  
}