Docker Compose で AWS Logs を利用するための設定ガイド

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:CreateLogStreamlogs:PutLogEventsのポリシーを追加しないといけないのでお忘れずに。

関連記事