この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
コンニチハ、千葉です。
Elastic Beanstalk Docker(以下EB Docker)にて、Logging Driversを利用して、CloudWatchへログを出力してみました。
ポイント
まず、EB Dockerでは単一コンテナと複数コンテナタイプがありますが、複数コンテナを選択します。複数コンテナを利用すると、裏ではECSが起動します。このECSがLogging Driversに対応しています。
やってみた
デプロイ用のファイルを作成
EB Dockerへデプロイするためのzipファイルを作成します。
EB Dockerでは3つの、デプロイ方法を選べます
- Dockerファイル:単一コンテナ環境
- Dockerrun.aws.json v1:単一コンテナ環境
- Dockerrun.aws.json v2:複数コンテナ環境
今回は、複数コンテナ環境で利用するためDockerrun.aws.json
を選択します。
{
"AWSEBDockerrunVersion": 2,
"containerDefinitions": [
{
"name": "nginx",
"image": "nginx",
"essential": true,
"memory": 128,
"command": ["/usr/sbin/nginx", "-g", "daemon off;"],
"portMappings": [
{
"hostPort": 80,
"containerPort": 80
}
],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-region": "ap-northeast-1",
"awslogs-group": "eb-docker"
}
}
}
]
}
私の環境では以下にてzipを作成しました。
local$ ls
Dockerrun.aws.json
local$ zip ../myapp.zip -r * .[^.]*
updating: Dockerrun.aws.json (deflated 53%)
updating: .ebextensions/ (stored 0%)
updating: .ebextensions/ecs.config (deflated 10%)
local$
local$ ls ../myapp.zip
../myapp.zip
CloudWatch Logsの設定
ロググループを作成します。今回はeb-docker
としました。
EB Docker環境の構築
EBで新しい環境の作成をします。
環境タイプとして、Multi-Container Docker
を指定します。
先ほど作成したアプリケーション(zip)のアップロードをします。
インスタンスロールには、CloudWatch Logsへの書き込み権限を付与しておきます。
アクセスしてみます。
ちゃんとアクセスログが出力されました。
さいごに
EB DockerでCloudWatch Logsへのログ出力を試しました。今回の設定は、ECSでも利用できます。EBはDocker利用する場合、結構親和性が高いと思います。どんどん使っていきたいと思います!
参考
http://aws.typepad.com/sajp/2016/05/amazon-ecs-with-awslogs.html