Packer无法找到私有AMI问题求助
解决Packer无法找到私有基础AMI的问题
核心排查与修复步骤
1. 为数据源指定目标区域
你的amazon-ami数据源未设置region参数,Packer会默认使用本地AWS配置的区域(大概率不是你创建AMI的eu-west-2)。修改数据源配置,添加区域匹配项:
data "amazon-ami" "cocktails" { region = "eu-west-2" # 与source块的region保持一致 filters = { virtualization-type = "hvm" name = "test-ami-24112022" root-device-type = "ebs" } owners = ["my-account-id"] most_recent = true }
2. 确认AMI名称完全匹配
检查手动创建的AMI名称是否和test-ami-24112022完全一致——大小写、空格、后缀等任何细微差异都会导致过滤器匹配失败。
3. 验证AWS账号ID准确性
确保owners字段中的my-account-id是你的12位AWS账号数字ID,没有输入错误。可以通过AWS控制台右上角的账号信息查看准确ID。
4. 检查AMI权限与凭证有效性
- 确认该AMI是私有且归属于你的账号,未被误共享到其他账号或设为公开。
- 用Packer使用的AWS凭证执行CLI命令测试权限:
aws ec2 describe-images --region eu-west-2 --owners 你的账号ID --filters "Name=name,Values=test-ami-24112022" "Name=virtualization-type,Values=hvm" "Name=root-device-type,Values=ebs"
如果命令返回空结果,说明凭证无权限或AMI不存在;能返回AMI信息则说明Packer配置需调整。
5. 直接指定AMI ID(备选方案)
若以上步骤无效,可跳过数据源查询,直接在source块中填入手动创建的AMI ID:
source "amazon-ebs" "cocktails" { instance_type = "t2.micro" region = "eu-west-2" ssh_username = "ec2-user" ami_name = "test-${uuidv4()}" source_ami = "ami-xxxxxxxxx" # 替换为你的私有AMI ID }
内容的提问来源于stack exchange,提问作者srk786
相关产品推荐
相关产品推荐

