¿Cómo puedo utilizar los datos del usuario para ejecutar automáticamente un script con cada reinicio de mi instancia de Amazon EC2 Linux?
Quiero utilizar los datos del usuario para ejecutar un script cada vez que se reinicie mi instancia de Amazon Elastic Compute Cloud (Amazon EC2). ¿Cómo puedo hacerlo?
Descripción corta
De forma predeterminada, los scripts de datos de usuario y las directivas de inicio en la nube solo se ejecutan durante el primer ciclo de arranque cuando se lanza una instancia de EC2. Sin embargo, puede configurar el script de datos de usuario y las directivas de inicio en la nube con un archivo MIME de varias partes. Un archivo MIME de varias partes permite que el script anule la frecuencia con la que se ejecutan los datos de usuario en el paquete cloud-init. A continuación, el archivo ejecuta el script de usuario. Para obtener más información sobre los archivos de varias partes de Mime, consulte Archivo de varias partes de Mime en el sitio web cloud-init.
**Nota:**Se recomienda crear una instantánea de la instancia antes de continuar con la siguiente resolución.
Resolución
**Advertencia:**Antes de iniciar este procedimiento, revise lo siguiente:
- Al detener e iniciar la instancia, se borran los datos de los volúmenes del almacén de instancias. Asegúrese de hacer una copia de seguridad de los datos de los volúmenes del almacén de instancias que desee conservar. Para más información, consulte Determinar el tipo de dispositivo raíz de AMI.
- Si la instancia de EC2 tiene una dirección IPv4 pública asignada automáticamente, al detener e iniciar la instancia, la dirección IPv4 cambiará. Si necesita que la instancia tenga una dirección IPv4 pública estática, considere usar una dirección IP elástica. Las direcciones IP elásticas persisten después de detener e iniciar una instancia.
1. Asegúrese de que la versión más reciente de cloud-init esté instalada y funcione correctamente en su instancia de EC2.
2. Por razones de seguridad cree una política IAM para restringir a los usuarios para que no puedan añadir o eliminar datos de usuario a través de user data de la ](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceAttribute.html) API [ModifyInstanceAttribute.
3. Abra la consola de Amazon EC2.
5. Elija Acciones, elija Configuración de instancia, y, a continuación, elija Editar datos de usuario.
6. Copie el script de usuario en el cuadro Editar datos de usuario y, a continuación, seleccione Guardar.
El siguiente ejemplo es un script de shell que escribe «Hello World» en un archivo testfile.txt del directorio /tmp .
Content-Type: multipart/mixed; boundary="//" MIME-Version: 1.0 --// Content-Type: text/cloud-config; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="cloud-config.txt" #cloud-config cloud_final_modules: - [scripts-user, always] --// Content-Type: text/x-shellscript; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="userdata.txt" #!/bin/bash /bin/echo "Hello World" >> /tmp/testfile.txt --//--
De forma predeterminada, cloud-init solo permite un tipo de contenido en los datos de usuario a la vez. Sin embargo, este ejemplo muestra los tipos de contenido text/cloud-config y text/x-shellscript en un archivo MIME de varias partes.
El tipo de contenido text/cloud-config anula la frecuencia con la que se ejecutan los datos de usuario en el paquete cloud-init al establecer el parámetro SCRIPTS-USER en ALWAYS.
El tipo de contenido text/x-shellscript proporciona el script de usuario real que ejecutará el módulo cloud-init cloud\ _final\ _modules. En este ejemplo, solo hay que ejecutar una línea, que es /bin/echo «Hello World». «>> /tmp/testfile.txt.
Nota: Reemplace la línea /bin/echo «Hello World». «>> /tmp/testfile.txt con el script de shell que quieres ejecutar durante el arranque de la instancia.
7. Vuelva a iniciar la instancia de EC2 y compruebe que el script se ejecute correctamente.
Información relacionada
Ejecute comandos en su instancia de Linux en el momento del lanzamiento
Ejecute comandos en su instancia de Windows en el momento del lanzamiento
Vídeos relacionados
Contenido relevante
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace 2 años