CloudWatchでECSのログを確認する
CloudWatchでECSのログを確認する方法をまとめました。

参考
前提
- プロジェクトがECSにデプロイされている
LaravelプロジェクトをECSにデプロイする方法についてはこちらをご覧ください。
設定手順
1. logConfigurationを追加する
task-definition.json に logConfiguration を追加します。
task-definition.json:
{
"requiresCompatibilities": [
"FARGATE"
],
"family": "my-fargate",
"containerDefinitions": [
{
"name": "my-container",
...
// logConfigurationを追加
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-create-group": "true",
"awslogs-group": "my-log-group",
"awslogs-region": "ap-northeast-1",
"awslogs-stream-prefix": "my-container"
}
},
...
各オプションの説明は以下の通りです。
| オプション | 説明 |
|---|---|
| awslogs-create-group | true にするとロググループが自動的に作成されます。 |
| awslogs-group | ログを送信するロググループ名を指定します。 |
| awslogs-region | ロググループがあるリージョンを指定します。 |
| awslogs-stream-prefix | ログストリームにつけるプレフィックスを指定します。 |
2. VPCエンドポイントを作成する
ECSのコンテナがプライベートサブネットにある場合、CloudWatch Logs用のVPCエンドポイントを作成する必要があります。
AWSマネジメントコンソールのVPCに移動します。
「Endpoints」をクリックします。

「Create endpoint」をクリックします。

名前を入力し、「Type」には「AWS services」を選択します。

com.amazonaws.region.logs を選択します。

VPC、プライベートサブネット、プライベート用のセキュリティグループを選択します。
「Create endpoint」をクリックします。
3. ECSタスク実行用IAMロールを編集する
ECSタスク実行用IAMロールにロググループの作成を許可するポリシーを追加します。
このIAMロールの詳細についてはこちらの記事を参照してください。
次のようなポリシーを追加します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "logs:CreateLogGroup",
"Resource": "arn:aws:logs:<ロググループのリージョン>:<アカウントID>:log-group:*"
}
]
}
もしECSタスク実行ロールに logs:CreateLogStream や logs:PutLogEvents が含まれていない場合は上記のポリシーに追加してください。
これでサービスをデプロイするとCloudWatchでECSのログを確認できるようになります。