AWS ElasticBeanstalk Terraform DisableIMDSv1 未知配置设置
Posted
技术标签:
【中文标题】AWS ElasticBeanstalk Terraform DisableIMDSv1 未知配置设置【英文标题】:AWS ElasticBeanstalk Terraform DisableIMDSv1 Unknown Configuration Setting 【发布时间】: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.23
和aws provider 3.2.0
。我运行了一个 terraform init -upgrade
,它将我的 aws 提供程序从 3.1.0 提升到 3.2.0,我认为这可能会解决它,但我仍然看到 Unknown configuration setting
消息。
【问题讨论】:
【参考方案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"
【讨论】:
谢谢马尔辛!这就是问题所在。我正在使用64bit Amazon Linux 2018.03 v2.15.3 running Docker 19.03.6-ce
解决方案堆栈,将其更改为64bit Amazon Linux 2 v3.1.0 running Docker
解决方案堆栈使其适用。以上是关于AWS ElasticBeanstalk Terraform DisableIMDSv1 未知配置设置的主要内容,如果未能解决你的问题,请参考以下文章
从在 ElasticBeanstalk 中运行的 Flask 应用程序使用 AWS
在 AWS 上使用 ElastiCache 和 ElasticBeanstalk 配置 Redis
是否有任何东西可以将 AWS::ElasticBeanstalk::Environment 链接到它创建的嵌套堆栈?