¿Cómo puedo crear trabajos cron en instancias de Amazon EC2 en entornos de Elastic Beanstalk?
Quiero crear un trabajo cron que ejecute un script personalizado en todas las instancias de Amazon Elastic Compute Cloud (Amazon EC2). Las instancias de Amazon EC2 se encuentran en un entorno de AWS Elastic Beanstalk existente.
Breve descripción
Use archivos de configuración de Elastic Beanstalk, denominados .ebextensions, para crear trabajos cron que se ejecuten en todas las instancias de Amazon EC2 en un entorno de Elastic Beanstalk. En el archivo zip de la aplicación Elastic Beanstalk, cree un directorio denominado .ebextensions. El archivo zip contiene archivos de configuración que se ejecutan cuando la aplicación se despliega en instancias de Amazon EC2.
Nota: Los pasos de este ejemplo añaden un trabajo cron que se ejecuta a la vez en todas las instancias de Amazon EC2 en un entorno de Elastic Beanstalk. Si tiene que ejecutar una tarea periódica en una sola instancia, use el archivo cron-leaderonly-linux.config para entornos web. Para usar el archivo cron-leaderonly-linux-config, consulte cron-leaderonly-linux.config en el sitio web de GitHub. Si tiene un entorno de trabajo específico, utilice tareas periódicas.
Solución
Creación o actualización de un archivo de configuración
Hay dos claves en el archivo cron-linux.config: files y commands. La clave files especifica la ubicación de los archivos cron mycron y myscript.sh en las instancias de Elastic Beanstalk con los permisos de archivo necesarios. La clave commands especifica una lista de comandos que se ejecutarán en las instancias. Descargue la plantilla cron-linux.config del sitio web de GitHub. También puede crear o actualizar un archivo de configuración existente según el siguiente ejemplo:
files: "/etc/cron.d/mycron": mode: "000644" owner: root group: root content: | * * * * * root /usr/local/bin/myscript.sh "/usr/local/bin/myscript.sh": mode: "000755" owner: root group: root content: | #!/bin/bash date > /tmp/date # Your actual script content exit 0 commands: remove_old_cron: command: "rm -f /etc/cron.d/mycron.bak"
Nota: Los diversos archivos de configuración del directorio .ebextensions se ejecutan en orden alfabético por nombre de archivo. Puede asignar al archivo de configuración el nombre cron-linux.config.
El archivo cron-linux.config crea un archivo cron denominado /etc/cron.d/mycron y está configurado para ejecutar un script a cada minuto. El script myscript.sh genera la fecha y, a continuación, se cierra cuando se ejecuta. Cada vez que se aplica cron-linux.config durante los despliegues, se crea una copia de seguridad del archivo /etc/cron.d/mycron, denominada /etc/cron.d/mycron.bak. El último comando de cron-linux.config limpia el directorio /etc/cron.d y elimina /etc/cron.d/mycron.bak. Para obtener más información, consulte Personalización avanzada de entornos con archivos de configuración (.ebextensions).
Creación de un paquete fuente de la aplicación
Para añadir el archivo de configuración al código fuente de la aplicación web, siga estos pasos:
- En la raíz de su carpeta de la aplicación, cree un directorio denominado .ebextensions.
- Mueva el archivo cron-linux.config que haya creado o actualizado a la carpeta .ebextensions.
- Cree una carpeta zip para los archivos de la aplicación e incluya el nuevo archivo de configuración.
En el siguiente ejemplo se muestra la estructura del directorio .ebextensions y del archivo cron-linux.config en el archivo zip de la aplicación:
~/my-app/ |-- .ebextensions/ | |-- cron-linux.config | `-- other.config |-- other application files
Información relacionada
Configuración de entornos de Elastic Beanstalk
Contenido relevante
- ¿Cómo puedo transferir variables de mi entorno de Elastic Beanstalk a instancias de Linux y Windows?OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 8 meses
- OFICIAL DE AWSActualizada hace un año