こんにちは!
今回は「EC2内でdockerコンテナを起動し、ログをCloud Watchに出力する方法」についてお伝えしたいと思います。
EC2内のdockerコンテナのログをCloud Watcnに出力するのは意外と簡単にできます。
最近はECSでコンテナを起動することも多く、ECSだとデフォルト設定でCloud Watchにログ出力してくれるので、需要は少ないかもしれませんが。。(笑)
Contents
docker-compose.ymlファイルを修正し、dockerコンテナ内のログ出力先をCloud Watchに設定する
dockerにはロギング・ドライバの機能があり、こちらを使います。
今回はdocker-compose
を使用する前提でお話しさせてください。
Cloud Watchにロググループを作成する
AWS マネジメントコンソール>Cloud Watch>ロググループ
からロググループを新規作成します。
docker-compose.yml設定
docker-compose.yml
ファイルを以下のように修正します。
例はnodeコンテナのログをCloud Watchに出力する例です。
sample-node:
command: [sh, -c, npm install && npm start]
logging:
driver: awslogs
options:
awslogs-region: ap-northeast-1 # 東京リージョン
awslogs-group: /aws/EC2/test # 作成したロググループ名
EC2にIAMロールを設定する
AWS マネジメントコンソール>EC2>アクション>セキュリティ>IAMロールを変更
IAMロールにはCloud Watchの書き込み権限のあるロールを設定します。(ロールがなければ新規作成)
ざっくりとしてますが、これでEC2→Cloud Watch出力はできます。
ただし、ローカル環境を立ち上げる際、上記の.ymlファイルだとエラーになってしまうため、
必要であれば環境ごとに.ymlファイルを読みかえてあげてください。
以上、お疲れ様でしたー!🍵