Elasti c Beanstalk: настройка журнала задач на платформах Amazon Linux 2 - PullRequest
0 голосов
/ 14 апреля 2020

Мне интересно, как сделать настройку журнала задач в новой платформе Elasti c Beanstalk (основанной на Amazon Linux 2). В частности, я сравниваю:

  • Старый : один контейнер Docker, работающий на 64-битной Amazon Linux / 2.14.3
  • Новый : один контейнер Docker, работающий на 64-битной Amazon Linux 2 / 3.0.0

(Мой вопрос на самом деле не имеет ничего общего с Docker как таковым, я предполагаю проблема существует для любой из новых платформ Elasti c Beanstalk).

Раньше я мог следовать рецепту Amazon, то есть поместить файл в /opt/elasticbeanstalk/tasks/bundlelogs.d/, и тогда он будет обработан. Это больше не правда.

Это изменилось? Я не могу найти это задокументировано . Кто-нибудь преуспел в настройке журнала задач на новой платформе Elasti c Beanstalk? Если да, то как?

Минимальный рабочий пример

Я создал минимальный рабочий пример и развернут на обеих платформах.

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

Если я выполняю действие «Полные журналы» на старой платформе я получал бы ZIP с моим deeperlogs, включенным в var/log/eb-docker/containers/eb-current-app. На новой платформе у меня нет.

Расследование

Если вы посмотрите на диск, вы увидите, что у нового Elasti c Beanstalk нет папки /opt/elasticbeanstalk/tasks в все, в отличие от старого. Хм.

...