如何启动 EC2 实例并在每个实例上上传/运行启动脚本?

2024-05-06

我想自动启动一组 Linux EC2 实例。

基本上,我想编写一个脚本/程序:

  • 实例化我的给定 AMI 的 N 次出现。
  • 对于每个启动的实例,它会上传自定义脚本并让脚本运行到实例中。

使用 VMWare,我通常会使用vmrun或 Vix SDK。

亚马逊 AWS/EC2 有哪些选项?


答案在一定程度上取决于您运行的 AMI,因为提供的功能完全依赖于 AMI。

Amazon Linux AMIS 和官方 Ubuntu AMI 具有云初始化 https://help.ubuntu.com/community/CloudInit软件包已安装。您可以通过多种方式触发启动操作,但最符合您的要求的一种(也是我最喜欢的,因为我发明了它)是用户数据脚本 http://alestic.com/2009/06/ec2-user-data-scripts.

在启动 EC2 实例时,您可以简单地传递任何脚本(以两个字符 #! 开头)作为用户数据。它将在实例首次启动时以 root 身份运行。

对于其工作原理的具体示例,我在最近的文章中使用了这种精确的技术:在 EC2 用户数据脚本中上传已知的 ssh 主机密钥 http://alestic.com/2012/04/ec2-ssh-host-key

您还希望使用同一脚本运行多个 EC2 实例。 ec2-run-instances 命令以及相关 API 和 Web 控制台允许您指定任意数量的实例以使用相同的用户数据启动。例如:

ec2-run-instances            \
  --instance-count 10        \
  --user-data-file $MYSCRIPT \
  --key $USER                \
  $SOMEAMI

如果您当前运行的 AMI 未安装 cloud-init,您可以执行以下操作之一:

  • 切换到已安装 cloud-init 的 AMI,或者

  • 构建已安装 cloud-init 的 AMI 自定义版本,或者

  • 编写一个更复杂的包装脚本,在启动后记录所有实例 ID,等待所有实例进入运行状态,等待 sshd 接受连接,将启动脚本上传到每个实例,并在每个实例上运行启动脚本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何启动 EC2 实例并在每个实例上上传/运行启动脚本? 的相关文章

随机推荐