Docker Compose で AWS Logs を利用するための設定ガイド
Elastic BeanStalk で EC2 に docker compose を deploy したときに、CloudWatch にログを出力するにはどうしたものかと思った。
そしたらなんと AWS CloudWatch Logs (awslogs
)という、docker の log driverに設定することができ、それを使えば CloudWatch にログを出力できる。
なので Docker Compose ファイルを設定する方法を紹介します。
これにより docker logs
で出力されている内容が CloudWatch に出力されます。
Amazon CloudWatch Logs logging driver についてのドキュメントはこちら
Docker Compose YAML 設定
以下は、awslogs
ドライバーを使用する NGINX サービスのサンプル Docker Compose YAML 設定です:
version: "3.8"
services:
nginx:
image: public.ecr.aws/docker/library/nginx:stable-alpine3.19-slim
ports:
- "8080:8080"
- "443:443"
volumes:
- /home/ec2-user/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf
- /home/ec2-user/ssl:/etc/nginx/ssl
depends_on:
keycloak:
condition: service_started
app:
condition: service_started
logging:
driver: awslogs
options:
awslogs-region: us-east-1
awslogs-group: identity-server-develop/nginx
awslogs-create-group: "true"
credentialsに書いてあるとおり、EC2 インスタンスから CloudWatch へlogs:CreateLogStream
とlogs:PutLogEvents
のポリシーを追加しないといけないのでお忘れずに。