问题描述
在运行Packer时遇到了’InvalidSnapshot.NotFound’错误。他在运行以下命令时遇到了这个问题:
sudo packer2 build -debug template.json
用户提供了模板配置文件和相关代码,并附带了错误消息。用户还补充说,尽管遇到了这个错误,但是使用相同的“问题 AMI”可以创建工作实例。
解决方案
用户遇到的错误可能与指定的快照(Snapshot)无法找到有关。以下是解决此问题的可能步骤:
-
确认AMI和快照状态:首先,确保你指定的AMI和快照是有效的且存在的。你可以通过AWS控制台或AWS CLI来确认这些信息。
-
检查快照ID:确保在模板配置中使用的快照ID是正确的,并且与实际快照匹配。如果ID不正确,就会出现’InvalidSnapshot.NotFound’错误。
-
检查权限和区域设置:确认你的AWS账户对指定的AMI和快照有足够的权限。另外,确保Packer运行时使用了正确的AWS区域。
-
更新Packer版本:用户提到他在不同版本的Packer上使用了别名(alias),如果旧版本的Packer被别名为’packer’,而新版本为’packer2’,请确保在命令中使用正确的别名。
-
检查快照类型:用户提供了’Problematic AMI’的块设备信息,指出其使用的是gp2类型的快照。你可以尝试使用与’Working AMI’相同的块设备配置,或者尝试使用其他类型的快照。
-
更新Packer模板:在Packer模板中,你可以尝试更新快照的相关配置,例如
root_volume_type
属性,或者调整其他与快照相关的设置。
请注意,下面的步骤假设你已经排除了权限、区域和快照ID等常见问题,并且在Packer配置中使用了正确的AMI和快照信息。
解决方案示例
以下是可能的解决方案示例,假设你已经确认了快照和权限等问题,并且希望尝试更新Packer模板:
- 打开你的Packer模板文件
template.json
。 - 在
builders
部分中,尝试将root_volume_type
属性设置为其他类型,例如standard
。
"builders": [{
"type": "amazon-chroot",
"profile": "{{user `profile`}}",
"region": "{{user `region`}}",
"source_ami_filter": {
"filters": {
"virtualization-type": "hvm",
"name": "xxx-hvm-*",
"root-device-type": "ebs"
},
"owners": ["xxxx"],
"most_recent": true
},
"ami_name": "muchos-datos-{{timestamp}}",
"ami_description": "Muchos-Datos server",
"root_volume_type": "standard" // 尝试使用其他类型,如 "standard"
}],
- 保存并关闭模板文件。
- 在命令行中运行Packer命令,验证是否仍然出现错误。
备注
如果上述解决方案未能解决问题,建议进一步检查Packer模板的其他配置项,以及AWS账户和权限设置等因素。
请注意,Packer版本、AWS服务和环境等因素可能会影响解决方案的适用性和效果。在尝试任何更改之前,请确保做好充分备份,并在可能的情况下先在测试环境中进行验证。
此文章提供的解决方案示例可能不是适用于所有情况的唯一方法,你可以根据实际情况进行调整和尝试。