Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

511
Vistas
Elastic Beanstalk: personalización de tareas de registro en plataformas Amazon Linux 2

Me pregunto cómo personalizar la tarea de registro en la nueva plataforma Elastic Beanstalk (la que está basada en Amazon Linux 2). Específicamente, estoy comparando:

  • Antiguo : Docker de un solo contenedor que se ejecuta en Amazon Linux/2.14.3 de 64 bits
  • Nuevo : Docker de un solo contenedor que se ejecuta en Amazon Linux 2/3.0.0 de 64 bits

(Mi pregunta en realidad no tiene nada que ver con Docker como tal, estoy especulando que el problema existe para cualquiera de las nuevas plataformas de Elastic Beanstalk).

Anteriormente, podía seguir la receta de Amazon, lo que significaba colocar un archivo en /opt/elasticbeanstalk/tasks/bundlelogs.d/ y luego se actuaba en consecuencia. Esto ya no es verdad.

¿Ha cambiado esto? No lo encuentro documentado . ¿Alguien ha tenido éxito en la personalización de tareas de registro en la nueva plataforma de Elastic Beanstalk? ¿Si es así, cómo?

Ejemplo de trabajo mínimo

Creé un ejemplo de trabajo mínimo y lo implementé en ambas plataformas.

Dockerfile :

 FROM ubuntu COPY daemon-run.sh /daemon-run.sh RUN chmod +x /daemon-run.sh EXPOSE 80 ENTRYPOINT ["/daemon-run.sh"]

Dockerrun.aws.json :

 { "AWSEBDockerrunVersion": "1", "Logging": "/var/mydaemon" }

daemon-run.sh :

 #!/bin/bash echo "Starting daemon" # output to stdout mkdir -p /var/mydaemon/deeperlogs while true; do echo "$(date '+%Y-%m-%dT%H:%M:%S%:z') Hello World" >> /var/mydaemon/deeperlogs/app_$$.log sleep 5 done

.ebextensions/mydaemon-logfiles.config :

 files: "/opt/elasticbeanstalk/tasks/bundlelogs.d/mydaemon-logs.conf" : mode: "000755" owner: root group: root content: | /var/log/eb-docker/containers/eb-current-app/deeperlogs/*.log

Si realizo la acción "Registros completos" en la plataforma anterior, obtendría un ZIP con mis deeperlogs incluidos dentro var/log/eb-docker/containers/eb-current-app . En la nueva plataforma no lo hago.

Investigación

Si observa el disco, verá que el nuevo Elastic Beanstalk no tiene ninguna carpeta /opt/elasticbeanstalk/tasks , a diferencia del anterior. Mmm.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

En Amazon Linux 2 la carpeta es:

 /opt/elasticbeanstalk/config/private/logtasks/bundle

El .ebextensions/mydaemon-logfiles.config debería ser:

 files: "/opt/elasticbeanstalk/config/private/logtasks/bundle/mydaemon-logs.conf": mode: "000644" owner: root group: root content: | /var/mydaemon/deeperlogs/*.log container_commands: append_deeperlogs_to_applogs: command: echo -e "\n/var/log/eb-docker/containers/eb-current-app/deeperlogs/*" >> /opt/elasticbeanstalk/config/private/logtasks/bundle/applogs

mydaemon-logfiles.config también agrega deeperlogs más profundos en el archivo applogs . Sin él, los registros más deeperlogs no se incluirán en el paquete zip de registro de descarga. Lo cual es interesante, porque la carpeta estará en la ubicación correcta, es decir, /var/log/eb-docker/containers/eb-current-app/deeperlogs/ . Pero sin aparecer explícitamente en los applogs de aplicaciones, se omitirá cuando se genere el paquete zip.

Lo probé con un entorno docker único (3.0.1).

El paquete de registro completo con éxito contenía registros deeperlogs con datos de registro correctos:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Espero que esto ayude. No he encontrado ninguna referencia para eso. La documentación de AWS no documenta esto, ya que se basa principalmente en Amazon Linux 1, no en Amazon Linux 2.

over 4 years ago · Santiago Trujillo Denunciar

0

Amazon solucionó este problema en la versión de las plataformas Elastic Beanstalk AL2 lanzada el 04-AGO-2020 .

Se ha corregido para que la personalización de tareas de registro en plataformas basadas en AL2 ahora funcione como siempre (es decir, en las plataformas AL2018 de generación de previsión) y, por lo tanto, puede seguir la documentación oficial para que esto suceda.

Probado con éxito con la plataforma "Docker ejecutándose en Amazon Linux 2/3.1.0 de 64 bits" . Si (todavía) usa "Docker ejecutándose en Amazon Linux 2/3.0.x de 64 bits" , entonces debe usar la solución no documentada descrita en la respuesta de Marcin, pero probablemente sea mejor que actualice la versión de su plataforma.

over 4 years ago · Santiago Trujillo Denunciar

0

A partir del 05/11/2021 , probé la respuesta aceptada y varios otros ejemplos, incluida la documentación oficial más reciente sobre el uso de la carpeta .ebextensions con archivos *.config sin éxito.

Lo más probable es que algo estaba haciendo mal, pero esto es lo que funcionó para mí. La versión que estoy usando: Docker ejecutándose en Amazon Linux 2/3.4.8 de 64 bits

Simplemente, agregue un volumen a su archivo docker-compose.yml para compartir los registros de su aplicación en el directorio de registros de Elastic Beanstalk.

Ejemplo docker-compose.yml:

 version: "3.9" services: app: build: . ports: - "80:80" user: root volumes: - ./:/var/www/html # "${EB_LOG_BASE_DIR}/<service name>:<log directory inside container> - "${EB_LOG_BASE_DIR}/app:/var/www/html/application/logs" # ADD THIS LINE env_file: - .env

Para obtener más información, aquí está la documentación que seguí.

Con suerte, esto ayudará a futuros lectores como yo 👍

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda