我有一个AWS实例,它在启动时会进行一些网络数据收集。收集来自一个新的公共IP地址很重要-我无法通过在同一地址上再次运行收集来获得有用的数据。
现在,我可以停止实例,然后在EC2控制台中重新启动该实例,当它重新启动时,它将获得一个新的IP地址并收集更多有用的数据。 (只是重新启动实例并不会分配新的IP,我必须先停止,然后启动。)
我了解基于时间的实例启动计划,但是我想做的是从实例本身内部计划重启 。有点像at
的工作:at now + 5 minutes restart-this-instance ; shutdown -h now
。
或者,如果有一种释放和重新分配实例的公共IP的方法,那也可以。
答案 0 :(得分:2)
不,这是不可能的。
停止实例后,需要发出启动实例的命令。因此,实例无法发出命令来启动自身。
但是,它可能触发一些外部因素导致其发生,例如创建CloudWatch Rule或Lambda函数。
答案 1 :(得分:1)
我建议另一种方法...
目标是更改公共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