如何实现重新烘焙 AMI 的一致性

How to achieve consistency of re-baking an AMI

我想知道烘焙 AMI 的最佳方法是什么。尽管它提供了很多一致性,但是当您因为一个小的安全更新或新的软件包版本而需要重新烘焙 AMI 时,很难达到一定程度的一致性,因为您很可能最终会更新您没有的其他软件包需要更新,这可能会导致某些东西损坏。

到目前为止,我正在烘焙我所有的软件包安装,包括 docker 和拉取基本图像(例如 Ubuntu)。

我知道在执行 apt-get install 或其等效的 cfn-init 时可以准确指定所需的软件包版本,但如果它不再受支持怎么办?我应该将我的包裹放在 S3 存储桶中吗?但是所有的依赖关系呢?有什么简单的方法可以从 s3 安装 apt-get 而不是去第 3 方回购?

我刚刚回答了一个类似的问题,关于将资源烘焙到 AMI 与使用 Chef、Puppet 等配置管理工具相比。

简短的回答是尝试不将软件烘焙到 AMI 中,而是在具有可重复 "recipes"(Chef 术语)的基础映像之上构建。

至于具体安装哪个版本的包,当然可以将软件依赖固定到具体的版本上。如果您没有对它们做任何特别的事情,我强烈建议您尽可能使用本机包管理器。至于不再可用的软件包,Ubuntu LTS 希望这不是什么大问题。