¿Cómo puedo crear trabajos cron en instancias de Amazon EC2 en entornos de Elastic Beanstalk?

3 minutos de lectura
0

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 de la web del repositorio de AWS GitHub. Como alternativa, puede crear o actualizar un archivo de configuración existente como en 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: Al asignar un nombre al archivo de configuración, tenga en cuenta que, cuando se ejecutan varios archivos de configuración del directorio .ebextensions, se hace por orden alfabético en función del 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:

  1. En la raíz de su carpeta de la aplicación, cree un directorio denominado .ebextensions.
  2. Mueva el archivo cron-linux.config que haya creado o actualizado a la carpeta .ebextensions.
  3. Cree una carpeta zip para los archivos de la aplicación, incluido 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:

|-- .ebextensions|        |-- cron-linux.config
|        |-- other .config files
|-- other application files

Información relacionada

Configuración de entornos de Elastic Beanstalk

Personalización de software en servidores Linux

Personalización de software en servidores Windows

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 8 meses