'Self stopping EC2 once task complete?
I have a lambda starting an EC2 hourly. The (windows) operating system on the EC2 runs a script on startup. The task can take anything from 1 minute to 45 minutes. I would like the EC2 to stop once the script has run.
I can think of one way to achieve this. I could install the aws cli on the EC2 itself and run something like aws ec2 stop-instances --instance-ids i-07c1849fe7abcdef
. Doing so feels weird. Is there a better way?
Note
For complete clarity, I don't want to simply set a timer on the instance. Say I set a 45 minute timer, I would pay for 45 mniutes even when the task only takes 3 minutes. I would like the instance to stop immediately after the script has run, no matter how long the script took to run.
Solution 1:[1]
Your instance can use the operating system command to Power Off.
On Linux, it would be:
sudo shutdown now -h
(The -h
means Halt, which will trigger the power-off. If not included, the operating system will stop but the instance will keep running.)
This can be used in conjunction with the Instance Initiated Shutdown Behavior, which can either:
- Stop the instance (sounds like what you seek)
- Terminate the instance (good if a new instance is launched each time)
(source: amazon.com)
No IAM permissions are required for this method.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Glorfindel |