使用用户指定的脚本重新启动现有的Amazon EC2实例?
使用用户指定的脚本重新启动现有的Amazon EC2实例?
虽然我找到了很多关于如何使用用户数据脚本创建新的 Amazon EC2 AMI 实例的文档(例如 Eric Hammond 的 这篇回答),但我没有看到一种在重新启动已存在但当前已停止的 Amazon EC2 实例时启动用户指定脚本的方法。
我有一些用于测试和灾难恢复的 Amazon EC2 Ubuntu 实例。我希望能够启动其中一个实例,并且例如,根据需要自动获取和恢复与我们的暂存或生产环境相对应的备份。我不想维护两个分别具有自己弹性 IP 的独立实例。
是否可以通过 Amazon ec2tools 的命令行方式来实现这一点,类似于使用 ec2-run-instances 命令?基本上,我希望能够传递一个以 root 用户身份运行的脚本,就像从 rc.local 或类似方式调用它一样。
Amazon EC2是一种弹性计算云服务,它允许用户在云中创建和管理虚拟服务器实例。有时,用户可能希望在EC2实例重新启动时运行特定的脚本。但是,EC2并没有直接提供这样的功能,所以用户需要找到一种解决方法。
一个可能的解决方法是使用Amazon的CloudFormation模板。CloudFormation模板是一种描述云基础设施的文本文件,它可以自动创建、配置和管理AWS资源。通过使用CloudFormation模板,用户可以定义EC2实例以及在实例启动时运行的脚本。
要使用CloudFormation模板来实现此目的,用户可以按照以下步骤操作:
1. 创建一个CloudFormation模板,描述所需的EC2实例和脚本。
2. 在模板中定义一个启动配置(Launch Configuration),其中包含运行脚本的命令。
3. 创建一个自动扩展组(Auto Scaling Group),将启动配置与EC2实例相关联。
4. 当实例重新启动时,自动扩展组将根据定义的启动配置创建新的实例,并自动运行脚本。
通过使用CloudFormation模板,用户可以轻松地实现在EC2实例重新启动时运行特定脚本的需求。
以上是一种解决方法,但并不代表唯一的解决方法。根据用户的具体需求和环境,可能还有其他的解决方案。使用CloudFormation模板是一种相对简单和可靠的方法,可以帮助用户实现在EC2实例重新启动时运行脚本的目标。
原因:用户想要通过自定义脚本重新启动现有的Amazon EC2实例。
解决方法:用户可以使用AWS命令行界面来停止/重新启动Amazon EC2实例的功能。具体方法如下:
1. 如果没有使用弹性负载均衡器:
aws ec2 stop-instances --instance-ids i-1a2b3c4d
aws ec2 start-instances --instance-ids i-1a2b3c4d
2. 如果有弹性负载均衡器但没有自动扩展:
aws elb deregister-instances-from-load-balancer --load-balancer-name elb-name --instances i-12ab34cd
aws elb register-instances-from-load-balancer --load-balancer-name elb-name --instances i-12ab34cd
3. 如果有弹性负载均衡器且有自动扩展:
aws autoscaling update-auto-scaling-group --auto-scaling-group-name "asg-name" --launch-configuration-name "launch-config-name" --min-size 0 --max-size 0
aws autoscaling update-auto-scaling-group --auto-scaling-group-name "asg-name" --launch-configuration-name "launch-config-name" --min-size 1 --max-size 1
问题的原因是,用户在Amazon EC2实例上设置的脚本只在实例从AMI创建时运行,而在重启或停止/启动实例后不会运行。
解决方法有以下几种:
1. 使用API工具。使用ec2-modify-instance-attribute
命令的--user-data
属性来修改实例的用户数据。
2. 在AWS控制台上,可以在停止的实例上执行相同的操作。
3. 通过SSH运行命令或脚本,作为最后一个参数,例如ssh [user@]hostname [command]
。
作者还提到,他们将联系亚马逊咨询此问题,并提供了一个链接,可能对读者也有兴趣:help.ubuntu.com/community/CloudInit。