【问题标题】:Attaching EBS during startup of Amazon EC2 Spot Instance在 Amazon EC2 Spot 实例启动期间附加 EBS
【发布时间】:2011-12-07 23:02:47
【问题描述】:

我想运行一个 Amazon EC2 现货实例作为 CI 服务器。 为了保留历史信息,我想将所有数据保留在单独的 EBS 卷上,因为每次终止 Spot 实例的 EBS 卷都会被删除。

如何在启动时挂载 EBS 卷?

谢谢你, 伊多。

【问题讨论】:

    标签: amazon-ec2 amazon-ebs


    【解决方案1】:

    你可以有一个init 脚本来附加已经可用的卷,使用这个命令:

    ec2-attach-volume volume_id --instance instance_id --device device 
    

    为此,您需要

    1. 机器上安装了EC2-API

    2. 您需要将EC2_PRIVATE_KEYEC2_CERT 作为环境变量,否则必须显式传递。

    3. 您尝试附加的卷应该可用。或者,您可以选择先强制detach the volume

    4. 您可以使用curl http://169.254.169.254/latest/meta-data/instance-id 获取当前实例的instance_id。

    参考:

    希望这会有所帮助。

    【讨论】:

    • 有没有办法用根卷做到这一点?大概你不能使用 init 脚本,因为如果它已经使用根磁盘来运行脚本,那么将现有的 EBS 磁盘设置为根卷已经太晚了?
    • 另外请注意,init 脚本由 root 运行,因此您的凭据需要以 root 身份添加。 awscli 特别需要这个。附加设备后,可能需要显式安装。
    【解决方案2】:

    您可以使用 EC2 API 和您的 EBS 卷 ID 知识来执行此操作。

    具体步骤取决于您的操作系统。这是一个显示如何在 Linux 上执行此操作的链接

    http://ec2dream.blogspot.com/search/label/EBS

    该特定脚本使用 Ruby,您可能需要根据您的 Linux 发行版进行安装。主体可以很容易地移植到例如bash.

    如果您的实例运行的是 Windows,请改为查看:

    Automount EBS volume in Amazon EC2 Windows Instance

    【讨论】: