是否可以从实例中安排AWS实例的启动?

时间:2019-02-26 09:33:27

标签: amazon-web-services amazon-ec2 aws-cli

我有一个AWS实例,它在启动时会进行一些网络数据收集。收集来自一个新的公共IP地址很重要-我无法通过在同一地址上再次运行收集来获得有用的数据。

现在,我可以停止实例,然后在EC2控制台中重新启动该实例,当它重新启动时,它将获得一个新的IP地址并收集更多有用的数据。 (只是重新启动实例并不会分配新的IP,我必须先停止,然后启动。)

我了解基于时间的实例启动计划,但是我想做的是从实例本身内部计划重启 。有点像at的工作:at now + 5 minutes restart-this-instance ; shutdown -h now

或者,如果有一种释放和重新分配实例的公共IP的方法,那也可以。

2 个答案:

答案 0 :(得分:2)

不,这是不可能的。

停止实例后,需要发出启动实例的命令。因此,实例无法发出命令来启动自身。

但是,它可能触发一些外部因素导致其发生,例如创建CloudWatch Rule或Lambda函数。

答案 1 :(得分:1)

我建议另一种方法...

目标是更改公共IP地址,以衡量以前看到的IP地址的缓存和重复流量如何影响测得的主系统性能。

因此,我建议:

  • 具有与实例关联的弹性IP地址
  • 当需要新的IP地址时:
    • 取消关联弹性IP地址
    • 发布弹性IP地址
    • 分配一个弹性IP地址
    • 将新的弹性IP地址与实例关联

您可以使用以下脚本:

INSTANCE=`curl -s http://169.254.169.254/latest/meta-data/instance-id/`

ALLOC=`aws ec2 describe-addresses --filters Name=instance-id,Values=$INSTANCE --query Addresses[].AllocationId --output text`

aws ec2 release-address --allocation-id $ALLOC

NEW=`aws ec2 allocate-address --domain vpc --query AllocationId --output text`

aws ec2 associate-address --allocation-id $NEW --instance-id $INSTANCE