【问题标题】:Update EC2 AMI root drive更新 EC2 AMI 根驱动器
【发布时间】:2015-01-02 05:28:42
【问题描述】:

我有一个 EC2 AMI,我从中创建实例以用于执行构建。我现在需要修改这个 AMI,因为我需要在上面安装一个额外的程序。我想要做的是让我的 AMI 指向另一个快照以用作其根驱动器(安装了新程序的快照),一切都会很好。但是,我找不到这样做的方法。论坛上的亚马逊有人说不可能,但我不太确定。所以,我想在这里问。

我知道我可以获取我想要的更新快照并从中创建一个全新的 AMI,但这会产生一个新的 AMI ID,现在我需要更改我的脚本用来启动新实例的 AMI ID .我不想每次意识到我需要更改我的 AMI 设置时都这样做。

【问题讨论】:

  • 我不是专家或任何东西,但 AMI 本质上不是实例根驱动器的映像吗?如果是这种情况,AMI 将“指向”快照用作其根驱动器是没有意义的。从 AMI 创建的新实例将被分配一个新卷用作其根。如果我是对的,那么唯一的解决方案是使用新程序从正在运行的实例中保存新的 AMI。
  • 感谢您以这种方式分解它;我认为你是对的。
  • 你可能自己想出来了,@gfree,但你可能想把你的脚本使用的 AMI ID 放在所说的脚本之外(例如,在环境中),所以你只有一个地方当您使用新的 AMI 时,您需要进行更改。对不起,如果我说的很明显。

标签: amazon-web-services amazon-ec2 amazon-ami


【解决方案1】:

您可以从现有的 ec2 实例构建私有 AMI(当然您也可以公开它)。然后,您可以直接从“我的 AMI”启动一个新的 ec2 实例,其中包含所有已安装的应用程序/包。

看看这个文档

Amazon Machine Images (AMI)

AWS 上个月推出了Docker 等新功能,但目前还没有准备好公开使用。

创建私有 AMI 映像的另一个好处是,它可以在您需要启动新实例时为您节省大量时间。

如果您需要更新配置文件,在创建新的 AMI 后,我建议您创建一个 CI 触发器(例如通过 Jenkins)。在脚本中运行 awscli 命令,它将轻松更新您的配置文件。所有这些任务,包括创建新的 AMI、更新配置文件等都可以在 Jenkins/bamboo 下自动完成。

如果你对这种方式没有信心,那就考虑cloudformation模板吧。它将大大改善您的系统。但是如果你完全设置好了,cloudformation的方式会在以后的改动中为你节省很多时间。

在 Cloudformation 中,您需要设置启动配置及其自动缩放组,您仍然需要创建私有 AMI 镜像,但每次创建新镜像后,您需要触发脚本来更新其启动配置中的 ami 镜像,之后,任何新实例都会自动使用新的 AMI。

【讨论】:

  • 是的,我知道这一点。但是,这会产生一个新的 AMI ID,这正是我不想要的,因为我必须更新我的代码或配置文件。如果我可以通过“别名”或其他方式而不是 AMI ID 启动,那也可以。
猜你喜欢
  • 2017-03-22
  • 2013-06-24
  • 2020-05-15
  • 1970-01-01
  • 2012-11-09
  • 1970-01-01
  • 2019-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多