我正在尝试在我正在编写的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.23
与aws provider 3.2.0
一起使用。我运行了terraform init -upgrade
,将我的AWS提供商从3.1.0提升到了3.2.0,认为可以解决该问题,但我仍然看到Unknown configuration setting
消息。
答案 0 :(得分:1)
对于基于 Amazon Linux 1 (AL1)的EB环境,我遇到了同样的问题。我认为AL1不支持该选项。但这在AL2中对我有用。
下面是我使用的示例。我还使用setting
作为设置的名称,而不是launch_configuration
和disable_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"
}
}