Мне интересно, как сделать настройку журнала задач в новой платформе 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
в все, в отличие от старого. Хм.