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

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

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

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

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

如果使用 VMWare,我通常会使用 vmrun 或 Vix SDK 来完成此操作。

Amazon AWS/EC2 有哪些选项?

最佳答案

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

Amazon Linux AMIS 和官方 Ubuntu AMI 具有 cloud-init软件包已安装。您可以通过多种方式触发启动操作,但最符合您的请求的一种(也是我最喜欢的,因为我发明了它)是 user-data script 的概念。 .

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

有关其工作原理的具体示例,我在最近的文章中使用了这种精确的技术:Uploading Known ssh Host Key in EC2 user-data Script

您还想使用同一脚本运行多个 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 接受连接,上传将启动脚本添加到每个实例,并在每个实例上运行启动脚本。

关于amazon-web-services - 如何启动 EC2 实例并在每个实例上上传/运行启动脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10125311/

相关文章:

amazon-web-services - 通过 Cloudformation 将 EFS ID 传递给 OpsWorks

amazon-web-services - 使用 http post flutter web 时出现 XMLHttpRequest 错误

amazon-web-services - 使用 AWS Application Load-Balancer (ALB) 到外部资源的基于路径的路由

amazon-web-services - 从 AMI 创建 EC2 Amazon 实例

amazon-s3 - 如何将 AMI 保存到 S3 存储桶?

java - 无法使用 AWS 安全 token 找到请求目标的有效证书路径

python - 如何更改 PIP 以使用 Python 2.7

python - 在 amazon ec2 或 picloud 中并行运行相同的 python 脚本涉及哪些步骤

amazon-ec2 - CloudFront 与一个 EC2 源之间的连接如何使用 HTTPS 进行?

amazon-web-services - 如何查看所有区域中所有正在运行的 Amazon EC2 实例?