既存の ECS クラスターに対して ECS Exec のログ記録を有効化する方法を教えてください

既存の ECS クラスターに対して ECS Exec のログ記録を有効化する方法を教えてください

Clock Icon2025.03.31

困っていること

既存の ECS クラスターにて ECS Exec のログ記録を有効化したいと考えています。
しかしながら、マネジメントコンソールから有効化しようとしたところ、対象の設定を編集可能な画面を見つけることができませんでした。
有効化するための方法を教えてください。

どう対応すればいいの?

AWS CLI で ecs update-cluster コマンドを実行してください。
この際、--configuration executeCommandConfiguration を引数として指定する必要があります。
具体的なコマンドは各出力先の場合で以下の通りです。

S3 にログを出力する場合

aws ecs update-cluster \
    --cluster <対象の ECS クラスター> \
    --configuration executeCommandConfiguration="{ \
        kmsKeyId=<暗号化に使用する KMS キー ID>, \
        logging=OVERRIDE, \
        logConfiguration={ \
            s3BucketName=<出力先 S3 バケット名>, \
            s3EncryptionEnabled=<出力先 S3 が暗号化している場合は true そうでない場合は false>, \
            s3KeyPrefix=<出力先 S3 プレフィックス名> \
        } \
    }"

CloudWatchLogs にログを出力する場合

aws ecs update-cluster \
    --cluster <対象の ECS クラスター> \
    --configuration executeCommandConfiguration="{ \
        kmsKeyId=<暗号化に使用する KMS キー ID>, \
        logging=OVERRIDE, \
        logConfiguration={ \
            cloudWatchLogGroupName=<出力先 CloudWatchLogs グループ>, \
            cloudWatchEncryptionEnabled=<暗号化する場合は true そうでない場合は false> \
    } \
}"

S3 と CloudWatchLogs 両方にログを出力する場合

aws ecs update-cluster \
    --cluster <対象の ECS クラスター> \
    --configuration executeCommandConfiguration="{ \
        kmsKeyId=<暗号化に使用する KMS キー ID>, \
        logging=OVERRIDE, \
        logConfiguration={ \
            cloudWatchLogGroupName=<出力先 CloudWatchLogs グループ>, \
            cloudWatchEncryptionEnabled=<暗号化する場合は true そうでない場合は false>, \
            s3BucketName=<出力先 S3 バケット名>, \
            s3EncryptionEnabled=<暗号化する場合は true そうでない場合は false>, \
            s3KeyPrefix=<出力先 S3 プレフィックス名> \
        } \
    }"

KMS キーによる暗号化が不要な場合は、kmsKeyId を指定する必要はありません。
また、暗号化された CloudWatchLogs や S3 に対してログを出力する場合、ECS のタスクロールに追加のアクセス権限付与が必要な場合があるのでご注意ください。[1]

やってみた

実際に ECS Exec のログ出力を既存クラスターで有効化してみます。
CloudShell を開き、以下 CLI コマンドを実行して S3 へのログ出力を有効化します。
スクリーンショット 2025-03-31 102720

コマンド実行後、対象クラスターの設定画面でログ記録設定が有効化されていることが確認できました。
スクリーンショット 2025-03-31 102737

クラスター内で稼働しているタスクに ECS Exec で接続し、ログが出力されるか確認します。
スクリーンショット 2025-03-31 105207

無事に S3 バケット上に ログが出力されていることが確認できました。
スクリーンショット 2025-03-31 105745
スクリーンショット 2025-03-31 105804

脚注
  1. ECS Exec を使用して Amazon ECS コンテナをモニタリングする ↩︎

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.