virginia pricing ec2 ebs east aws amazon-web-services amazon-ec2 ec2-ami

amazon web services - pricing - ¿Cómo disparar instancias EC2 y cargar/ejecutar un script de inicio en cada una de ellas?



aws ec2 pricing (2)

Quiero automatizar el lanzamiento de un conjunto de instancias Linux EC2.

Básicamente, quiero escribir un script / programa que:

  • Crea una instancia de N ocurrencias de un AMI mío dado.
  • Para cada instancia iniciada, cargaba un script personalizado y permitía que el script se ejecutara en la instancia.

Usando VMWare, normalmente lo haría usando vmrun o el SDK de Vix.

¿Cuáles son las opciones en Amazon AWS / EC2?


La respuesta depende un poco de qué AMI esté ejecutando, ya que las características proporcionadas dependen completamente de AMI.

El Amazon Linux AMIS y el oficial Ubuntu AMI tienen instalado el paquete cloud-init . Esto tiene varias formas de activar acciones de inicio, pero la que más se ajusta a su solicitud (y mi favorita porque yo la inventé) es el concepto de un script de datos de usuario .

Simplemente puede pasar cualquier script (comenzando con los dos caracteres #!) Como datos de usuario al iniciar las instancias de EC2. Se ejecutará como root en el primer arranque de la instancia.

Para un ejemplo específico de cómo funciona esto, utilizo esta técnica exacta en mi artículo reciente: Carga de la clave de host ssh conocida en el archivo de datos de usuario de EC2.

También quería ejecutar más de una instancia de EC2 con el mismo script. El comando ec2-run-instances y las API y la consola web relacionadas le permiten especificar cualquier número de instancias para comenzar con los mismos datos de usuario. Por ejemplo:

ec2-run-instances / --instance-count 10 / --user-data-file $MYSCRIPT / --key $USER / $SOMEAMI

Si actualmente está ejecutando un AMI que no tiene instalado cloud-init, puede hacer uno de los siguientes:

  • Cambiar a un AMI que tiene instalado cloud-init, o

  • Cree una versión personalizada de su AMI que tenga instalado cloud-init, o

  • Escriba una secuencia de comandos contenedora más complicada que haga un registro de todos los identificadores de instancia después de que se inicien, espera que todas las instancias pasen al estado en ejecución, espera que el sshd acepte conexiones, cargue su secuencia de comandos de inicio a cada instancia y ejecuta el script de inicio en cada instancia.


Tengo un tutorial para ejecutar el script en "cloud-init" que se ejecuta cada vez que AWS EC2 se inicia.

  • para configurar el archivo de configuración (AWS CentOS6) y

  • ejecutar los scripts cuando inicie el EC2

Para configurar el archivo de configuración en Linux, puede consultar la configuración de cloud-init en AWS Linux .

Personalmente utilizo AWS VPC / EBS que se configuró en Linux AMI, no toqué nada en el archivo de configuración /etc/cloud/cloud.cfg pero mi script de inicio en el cloud-init funciona bien.