使用Packer构建启用IMDS v2的AMI时遇参数报错问题
解决Packer构建AWS AMI时
imds_support参数报错问题 问题现象
使用Packer的amazon-ebs构建器创建启用IMDS v2的AWS AMI时,在顶级配置中添加imds_support = "v2.0"后,出现构建错误:
An argument named "imds_support" is not expected here
问题原因
imds_support并非顶级配置参数,而是属于metadata_options块的子参数。错误的层级位置导致Packer无法识别该参数。
官方参数说明(翻译自HashiCorp官方文档)
imds_support用于指定AMI支持的实例元数据服务(IMDS)版本,有效值为"v1.0"和"v2.0"。设置为"v2.0"时,需配合http_tokens = "required"来强制实例使用IMDS v2令牌认证。
解决方案
将imds_support = "v2.0"移动到metadata_options块内部,修正后的完整配置如下:
source "amazon-ebs" "ubuntu-builder-1" { ami_name = "ubuntu-AMI-2023-04-24T06-01-48Z" skip_create_ami = false instance_type = "t2.micro" communicator = "ssh" region = "us-east-1" subnet_id = "subnet-99999" source_ami_filter { filters = { name = "EC2-Ubuntu18.04-*" root-device-type = "ebs" virtualization-type = "hvm" } most_recent = true owners = ["22222"] } ami_regions = [] ami_users = [] winrm_username = "Administrator" ssh_username = "ubuntu" aws_polling { delay_seconds = 120 max_attempts = 60 } metadata_options { http_endpoint = "enabled" http_put_response_hop_limit = "1" http_tokens = "required" imds_support = "v2.0" # 移至此处 } force_deregister = false force_delete_snapshot = false iam_instance_profile = "AmazonSSMRoleForInstancesQuickSetup" }
额外注意事项
- 确保你的Packer Amazon插件版本≥1.2.0,该参数是在这个版本之后引入的,版本过低会导致参数不支持。
- 配置
http_tokens = "required"是强制启用IMDS v2的核心配置,imds_support则是明确标识AMI对IMDS v2的支持状态。
内容的提问来源于stack exchange,提问作者CloudEnthusiast
相关产品推荐
相关产品推荐

