¿Instancia AWS EC2 auto-terminada?


¿Hay alguna forma de que las instancias EC2 de Amazon Web Services se puedan terminar automáticamente? ¿Amazon tiene algo que permita que una instancia termine por sí misma ("Hara-Kiri") después de ejecutarse durante más de una hora, por ejemplo? Podría cambiar los scripts en la instancia en ejecución para hacer esto por sí mismo, pero eso podría fallar y no quiero editar la imagen, por lo que me gustaría que Amazon matara la instancia.

Author: Arslan Ali, 2012-05-11

4 answers

Para que una instancia termine por sí misma, siga estos dos pasos:

  1. Inicie la instancia con --instance-initiated-shutdown-behavior terminate o su equivalente en la consola de AWS o la llamada a la API.
  2. Ejecute shutdown -h now como root. En Ubuntu, puedes configurar esto para que suceda en 55 minutos usando:

    echo "sudo halt" | at now + 55 minutes
    

Escribí un artículo hace un tiempo sobre otras opciones para lograr este mismo objetivo de" terminar en una hora":

Terminación automática de Instancias Temporales en Amazon EC2
http://alestic.com/2010/09/ec2-instance-termination

El artículo fue escrito originalmente antes de que instance-initiated-shutdown-behavior estuviera disponible, pero encontrarás actualizaciones y otras gemas en los comentarios.

 80
Author: Eric Hammond,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-12 16:10:14

Puedes hacer esto

ec2-terminate-instances $(curl -s http://169.254.169.254/latest/meta-data/instance-id)

El ec2 obtendrá su id de instancia actual y terminará por sí mismo.

 12
Author: Tommy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-07 13:18:18

Esperemos que esto funcione

instanceId = $(curl http://169.254.169.254/latest/meta-data/instance-id/)

/usr/bin/aws ec2 terminate-instances --instance-ids $instanceId --region us-east-1

Espero que esto te ayude !!!

 7
Author: Venu Gopal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-03 11:35:22

Aquí está mi guión para Auto-Terminación

$ EC2_INSTANCE_ID="`wget -q -O - http://instance-data/latest/meta-data/instance-id || die \"wget instance-id has failed: $?\"`"
$ echo "ec2-terminate-instances $EC2_INSTANCE_ID" | at now + 55 min || die 'cannot obtain instance-id'

Si desea asignar como paro automático en Auto-Terminación, usted puede hacerlo sólo una vez.

En su Consola EC2 vaya a Instance Settings, cambie Shutdown Behavior a Stop.
Configure /etc/cloud/cloud.cfg , puede referirse a cómo ejecutar un script de arranque usando cloud-init.
Seguir respuesta de Eric Hammond , ponga el comando en un archivo y ubíquelo en scripts-por-arranque ruta:

$ echo '#!/bin/sh' > per-boot.sh
$ echo 'echo "halt" | at now + 55 min' >> per-boot.sh
$ echo 'echo per-boot: `date` >> /tmp/per-boot.txt' >> per-boot.sh
$ chmod +x per-boot.sh
$ sudo chown -R root per-boot.sh
$ sudo mv -viu per-boot.sh /var/lib/cloud/scripts/per-boot

Reinicie su instancia, compruebe si se ejecuta el script:

$ cat /tmp/per-boot.txt 
per-boot: Mon Jul 4 15:35:42 UTC 2016

Si es así, en caso de que haya olvidado detener su instancia, se asegurará de que la instancia se termine como parada cuando se haya ejecutado durante 55 minutos o el tiempo que establezca en el script.

Broadcast message from root@ip-10-0-0-32
        (unknown) at 16:30 ...

The system is going down for halt NOW!

PD: Para todo el mundo quiere utilizar el Self-Stopping, una cosa que debe tener en cuenta que no todos los tipos de EC2 son auto recuperación al reiniciar. Recomiendo usar EC2-VPC / EBS con Horario de Encendido/Apagado.

 3
Author: Chetabahana,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:02:44