Packer中的’InvalidSnapshot.NotFound’错误及解决方案

38次阅读
没有评论

问题描述

在运行Packer时遇到了’InvalidSnapshot.NotFound’错误。他在运行以下命令时遇到了这个问题:

sudo packer2 build -debug template.json

用户提供了模板配置文件和相关代码,并附带了错误消息。用户还补充说,尽管遇到了这个错误,但是使用相同的“问题 AMI”可以创建工作实例。

解决方案

用户遇到的错误可能与指定的快照(Snapshot)无法找到有关。以下是解决此问题的可能步骤:

  1. 确认AMI和快照状态:首先,确保你指定的AMI和快照是有效的且存在的。你可以通过AWS控制台或AWS CLI来确认这些信息。

  2. 检查快照ID:确保在模板配置中使用的快照ID是正确的,并且与实际快照匹配。如果ID不正确,就会出现’InvalidSnapshot.NotFound’错误。

  3. 检查权限和区域设置:确认你的AWS账户对指定的AMI和快照有足够的权限。另外,确保Packer运行时使用了正确的AWS区域。

  4. 更新Packer版本:用户提到他在不同版本的Packer上使用了别名(alias),如果旧版本的Packer被别名为’packer’,而新版本为’packer2’,请确保在命令中使用正确的别名。

  5. 检查快照类型:用户提供了’Problematic AMI’的块设备信息,指出其使用的是gp2类型的快照。你可以尝试使用与’Working AMI’相同的块设备配置,或者尝试使用其他类型的快照。

  6. 更新Packer模板:在Packer模板中,你可以尝试更新快照的相关配置,例如root_volume_type属性,或者调整其他与快照相关的设置。

请注意,下面的步骤假设你已经排除了权限、区域和快照ID等常见问题,并且在Packer配置中使用了正确的AMI和快照信息。

解决方案示例

以下是可能的解决方案示例,假设你已经确认了快照和权限等问题,并且希望尝试更新Packer模板:

  1. 打开你的Packer模板文件 template.json
  2. 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"
}],
  1. 保存并关闭模板文件。
  2. 在命令行中运行Packer命令,验证是否仍然出现错误。

备注

如果上述解决方案未能解决问题,建议进一步检查Packer模板的其他配置项,以及AWS账户和权限设置等因素。

请注意,Packer版本、AWS服务和环境等因素可能会影响解决方案的适用性和效果。在尝试任何更改之前,请确保做好充分备份,并在可能的情况下先在测试环境中进行验证。

此文章提供的解决方案示例可能不是适用于所有情况的唯一方法,你可以根据实际情况进行调整和尝试。

正文完