【问题标题】:AWS ElasticBeanstalk Terraform DisableIMDSv1 Unknown Configuration SettingAWS ElasticBeanstalk Terraform DisableIMDSv1 未知配置设置
【发布时间】:2020-12-09 04:52:56
【问题描述】:

我正在尝试在我正在编写的 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 选项可能是对可用 beanstalk 设置选项的新增功能。 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 消息。

【问题讨论】:

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


    【解决方案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"
      }  
      
    }
    

    【讨论】:

    • 谢谢马尔辛!这就是问题所在。我正在使用64bit Amazon Linux 2018.03 v2.15.3 running Docker 19.03.6-ce 解决方案堆栈,将其更改为64bit Amazon Linux 2 v3.1.0 running Docker 解决方案堆栈使其适用。
    猜你喜欢
    • 2017-08-17
    • 2018-03-28
    • 2020-12-14
    • 2017-12-23
    • 2020-09-01
    • 2021-05-01
    • 2021-01-15
    • 2018-11-01
    • 2021-02-28
    相关资源
    最近更新 更多