AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 591521
Accepted
Alex B
Alex B
Asked: 2014-04-27 07:47:30 +0800 CST2014-04-27 07:47:30 +0800 CST 2014-04-27 07:47:30 +0800 CST

创建映像时自动终止 EC2 实例

  • 772

我想要一个自动创建 AMI 的过程,剩下的一件就是在创建映像后自动清理实例。

该实例使用执行必要设置的用户数据脚本启动,然后使用AWS CLI从自身开始创建映像。然后它关闭。我可以--no-reboot选择选项并在那里等到图像准备好,然后终止,但文档指出“无法保证创建的图像的文件系统完整性”,所以我想避免使用它。

完成映像创建后从自身中杀死实例的最佳方法是什么?

amazon-ec2
  • 2 2 个回答
  • 3831 Views

2 个回答

  • Voted
  1. Best Answer
    Eric Hammond
    2014-04-27T11:54:15+08:002014-04-27T11:54:15+08:00

    有几种方法可以考虑如何从自身终止实例:

    1. 启动 EC2 实例,将 instance-initiated-shutdown-behavior 设置为“terminate”,然后从实例内部设置“sudo halt”或等效项。

    2. 使用允许其自行终止的 IAM 角色启动 EC2 实例,然后从实例调用 ec2 terminate-instances API(例如,使用 aws-cli)。从实例元数据中获取实例 ID。

    第一种方法要容易得多,并且实例能够终止其他实例的风险较小,但是您已经从实例调用 AWS API,因此您已经完成了 rm /etc/rc2.d/S90halt- 的一半after-create-image 也是第二种方法。

    现在是关于如何在 create-image 重新启动后触发终止的问题。

    您可以简单地将所需的停止/终止命令放入 /etc/rc.local 之类的启动脚本中,当系统重新启动时它会运行。正如@AlexB 在评论中指出的那样,您需要确保这不会导致带有图像的新实例停止,因此也许可以测试 instance_id。

    无需等待新的 AMI 创建完成。即使您的实例不再运行,它也会很好地完成。

    这是一个有很大改进空间的快速技巧:

    # This would be dangerous in a non-EC2 environment or on an instance that
    # does not fit the criteria in the original question.
    original_instance_id=$(curl -s http://instance-data/latest/meta-data/instance-id)
    cat >/etc/rc2.d/S90halt-after-create-image <<EOF
    #!/bin/sh
    rm \$0
    instance_id=\$(curl -s http://instance-data/latest/meta-data/instance-id)
    test "\$instance_id" = "$original_instance_id" && sudo halt
    EOF
    chmod +x /etc/rc2.d/S90halt-after-create-image
    

    此代码创建一个启动脚本,如果某些条件为真,该脚本会自行删除并暂停系统。如果出现问题,可能会导致普遍的破坏。在 Ubuntu 12.04 上测试。可能无法在其他地方工作。

    • 6
  2. dmourati
    2014-05-02T19:50:36+08:002014-05-02T19:50:36+08:00

    查看来自HashiCorp的开源图像构建工具 packer.io。

    您应该使用它,因为它是 Google、Netflix、Target 等公司使用的标准工具。它还被合并到称为Spinnaker的更高阶开源 CD 工具中。

    您可以使用亚马逊 AMI 构建器。

    • 2

相关问题

  • 权限被拒绝(公钥)。从本地 Ubuntu 到 Amazon EC2 服务器的 SSH

  • 管理员如何管理他们的 EC2 EBS 和快照?

  • 云有多大?[关闭]

  • EC2 映像启动

  • 如何将安全组添加到正在运行的 EC2 实例?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve