重新捆绑(或更新)EC2 AMI?

重新捆绑(或更新)EC2 AMI?

我已经捆绑了一个我相当满意的 AMI。但是我知道最终我需要修改它(例如,为了进行 Debian 安全更新或更新 AMI 中的其他系统软件)。捆绑映像后是否可以更新映像?如果我捆绑了具有相同名称、清单和 S3 位置的新 AMI,会怎么样?EC2 会在一段时间内缓存 AMI;如果 AMI 在启动之间发生变化,它会措手不及吗?

我确实知道我可以简单地捆绑一个全新的 AMI,尽管我想避免镜像激增。将至少部分软件(例如 JRuby 等)存储在 EBS 卷上而不是 AMI 本身上是否更好?

请注意,我指的“软件”不是包括我自己的可部署单元,而是第三方软件。

答案1

我所做的是将 AMI 与相同的名称捆绑在一起。然后在实例运行时删除 AMI,然后上传并注册新的 AMI。至于哪种方式更适合存储您的软件,这实际上取决于您更新或修改软件的频率。如果您不介意完成捆绑过程,那么只需将其留在 AMI 中即可。

附言:捆绑 AMI 的便捷技巧是在屏幕会话这样您就可以摆脱成像过程,而不必担心 SSH 连接中断。

答案2

虽然现在它可能对你没有帮助。但它很多更容易捆绑 EBS 支持的实例。它就像以某种方式“停止”实例一样简单(通过 ec2-stop-instances 或 xfs freeze,或者只是试试正在运行的实例),然后只需快照 EBS 卷并注册它。唯一棘手的部分是启动新实例时要确保使用相同的 AKI,可以在当前正在运行的实例的信息中找到它。此外,来自 EBS 支持映像的 AMI 不存储在您的标准 S3 存储桶中,因此您不必太担心扩散,只需在完成后取消注册它们即可。

或者,您可以尝试将常规 AMI 捆绑包写入附加驱动器,然后对其进行快照并注册,尽管我目前还没有取得很大成功。目前将实例存储移动到 EBS 支持并不完全顺利。


Amazon 通过 AMI ID(ami-1a2s3d4f)跟踪 AMI,而不是通过 S3 中的位置和名称,因此您可以删除旧的 AMI 并捆绑具有相同名称的另一个 AMI。

相关内容