¿Instancia autónoma de AWS EC2?

¿Hay alguna forma de que las instancias de Amazon Web Services EC2 puedan darse por finalizadas? ¿Amazon tiene algo que permite que una instancia se termine sola (“Hara-Kiri”) después de correr durante más de una hora? Podría cambiar las secuencias de comandos en la instancia en ejecución para hacer esto, pero eso podría fallar y no quiero editar la imagen, por lo que me gustaría que Amazon elimine la instancia.

Para que una instancia se termine, siga estos dos pasos:

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

     echo "sudo halt" | at now + 55 minutes 

Hace un tiempo escribí un artículo sobre otras opciones para lograr este mismo objective 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 la instance-initiated-shutdown-behavior estuviera disponible, pero encontrará actualizaciones y otras gems en los comentarios.

Puedes hacerlo

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

El ec2 obtendrá su ID de instancia actual y se terminará a sí mismo.

Espero 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!

Aquí está mi script para autoliminar

 $ 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 asignarlo como autoatenible en autoterminación , puede hacerlo solo una vez.

En su consola EC2, vaya a Configuración de la instancia , cambie el Comportamiento de apagado a Detener .
Configure /etc/cloud/cloud.cfg , puede consultar cómo ejecutar un script de arranque usando cloud-init .
Siga la respuesta de Eric Hammond , coloque el comando en un archivo y ubíquelo en la ruta de scripts por inicio :

 $ 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, verifique si el script se ejecuta:

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

De ser así, solo en caso de que haya olvidado detener su instancia, le asegurará que la instancia se hará terminar como detenerse cuando se haya ejecutado durante 55 minutos o cualquier hora 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 que todos quieran usar el AutoParado , una cosa que debe tener en cuenta es que no todos los tipos de EC2 son auto recuperables al reiniciar. Recomiendo usar EC2-VPC / EBS con horario de encendido / apagado .