amazon ec2 - east - ¿Instancia autónoma de AWS EC2?
aws tags (4)
¿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.
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
Reboot 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 .
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!
Para que una instancia se termine, siga estos dos pasos:
- Inicie la instancia con
--instance-initiated-shutdown-behavior terminate
o el equivalente en la consola de AWS o la llamada API. 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 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 la instance-initiated-shutdown-behavior
estuviera disponible, pero encontrará actualizaciones y otras gemas 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.