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

関連記事