新しいElastic Beanstalkプラットフォーム(Amazon Linux 2ベースのプラットフォーム)で log task customization を実行する方法を知りたいです。具体的には、私は比較しています:
(私の質問は実際にはDocker自体とは何の関係もありません。問題は新しいElastic Beanstalkプラットフォームのいずれかに存在すると推測しています)。
以前は、Amazonのレシピに従うことができました。つまり、ファイルを/opt/elasticbeanstalk/tasks/bundlelogs.d/
に入れると、そのファイルが処理されます。これはもはや真実ではありません。
これは変わりましたか?見つかりません ドキュメント 。新しいElastic 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
古いプラットフォームで「フルログ」アクションを実行すると、deeperlogs
がvar/log/eb-docker/containers/eb-current-app
に含まれているZipが表示されます。新しいプラットフォームでは私はしません。
ディスクを見ると、古いものとは異なり、新しいElastic Beanstalkには/opt/elasticbeanstalk/tasks
フォルダーがまったくありません。うーん。
Amazon Linux 2では、フォルダーは次のとおりです。
/opt/elasticbeanstalk/config/private/logtasks/bundle
.ebextensions/mydaemon-logfiles.config
は次のようになります。
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
は、deeperlogs
をapplogs
ファイルに追加します。これがない場合、deeperlogs
はダウンロードログのZipバンドルに含まれません。フォルダは正しい場所、つまり/var/log/eb-docker/containers/eb-current-app/deeperlogs/
にあるため、どちらが魅力的ですか。ただし、applogs
に明示的にリストされていない場合は、Zipバンドルの生成時にスキップされます。
単一のDocker環境(3.0.1)でテストしました。
成功した完全なログバンドルには、正しいログデータを含むdeeperlogs
が含まれています。
これが役立つことを願っています。そのための参照は見つかりませんでした。 AWS documentaitonはこれを文書化していません。これは主にAmazon Linux 2ではなく、Amazon Linux 1に基づいているためです。