awslogs ログドライバーを使用する - AWS Batch

awslogs ログドライバーを使用する

デフォルトでは、AWS Batch は awslogs ログドライバが CloudWatch Logs にログ情報を送信することを可能にします。この機能により、コンテナからの異なるログを 1 か所で便利に表示できます。また、コンテナログがコンテナインスタンスのディスク容量を占めることも防止できます。このトピックでは、ジョブ定義で awslogs ログドライバーを設定する方法について説明します。

注記

ジョブのコンテナによってログ記録される情報のタイプは、ENTRYPOINT コマンドによって大きく異なります。デフォルトでは、キャプチャされるログは、コンテナをローカルに実行した場合にインタラクティブターミナルに表示されるコマンド出力 (STDOUT および STDERR I/O ストリーム) を示します。awslogsログドライバーは、これらのログを Docker から CloudWatch Logs に渡すだけです。Docker ログの処理方法 (ファイルデータやストリームをキャプチャする別の方法) の詳細については、Docker ドキュメントの「コンテナまたはサービスのログを表示する」を参照してください。

コンテナインスタンスから CloudWatch Logs にシステムログを送信するには、「AWS Batch での CloudWatch Logs の使用」を参照してください。CloudWatch Logs の詳細については、「」を参照してください。ログファイルのモニタリングおよびCloudWatch Logs クォータAmazon CloudWatch Logs ユーザーガイド

使用できる awslogs ログドライバーのオプション

awslogs ログドライバーは、AWS Batch ジョブ定義で以下のオプションをサポートします。詳細については、Docker ドキュメントの「CloudWatch Logs ロギングドライバーの設定」を参照してください。

awslogs-region

必須: いいえ

awslogs ログドライバーが Docker ログを送信するリージョンを指定します。デフォルトでは、使用されるリージョンはジョブのリージョンと同じです。CloudWatch Logs では、異なるリージョンのジョブからすべてのログを 1 つのリージョンに送信するように選択できます。これにより、それらを 1 つの場所からすべて表示できます。または、より詳細なアプローチのために、リージョンごとにそれらを分離することもできます。ただし、このオプションを選択する場合は、指定したロググループが、指定したリージョンに存在することを確認してください。

awslogs-group

必須:オプション

この awslogs-group オプションを選択すると、awslogs ログドライバーがログストリームを送信するロググループを指定できます。これを指定しない場合、aws/batch/job が使用されます。

awslogs-stream-prefix

必須:オプション

awslogs-stream-prefix オプションを使用して、指定したプレフィックス、コンテナ名、コンテナの所属先における AWS Batchジョブの Amazon ECS タスクの ID に、ログストリーミングを関連付けることができます。このオプションでプレフィックスを指定した場合、ログストリームの形式は以下のようになります。

prefix-name/default/ecs-task-id
awslogs-datetime-format

必須: いいえ

このオプションは、Python strftime 形式で複数行起動パターンを定義します。ログメッセージは、パターンに一致する 1 行と、それに続くパターンに一致しない行で構成されます。したがって、一致した行はログメッセージ間の区切り文字です。

この形式を使用する場合のユースケースの例としては、スタックダンプなどの解析された出力があり、これを使用しなければ、複数のエントリに記録されることになります。適切なパターンにより、単一のエントリにキャプチャさせます。

詳細については、「awslogs-datetime-format」を参照してください。

awslogs-datetime-formatawslogs-multiline-pattern の両方が設定されている場合、このオプションは常に優先されます。

注記

複数行のログ記録は、すべてのログメッセージの正規表現の解析とマッチングを実行します。これによりログ記録のパフォーマンスに悪影響が及ぶ可能性があります。

awslogs-multiline-pattern

必須: いいえ

このオプションでは、正規表現を使用して複数行起動パターンを定義します。ログメッセージは、パターンに一致する 1 行と、それに続くパターンに一致しない行で構成されます。したがって、一致した行はログメッセージ間の区切り文字です。

詳細については、Docker ドキュメントの「awslogs-multiline-pattern」を参照してください。

awslogs-datetime-format も設定されている場合は、このオプションは無視されます。

注記

複数行のログ記録は、すべてのログメッセージの正規表現の解析とマッチングを実行します。これによりログ記録のパフォーマンスに悪影響が及ぶ可能性があります。

awslogs-create-group

必須: いいえ

自動的に作成されたロググループが必要かどうかを指定します。このオプションを指定しない場合、デフォルトは false です。

警告

このオプションは推奨されません。各ジョブがロググループの作成を試みるため、ジョブが失敗する可能性が高くなるため、CloudWatch Logs CreateLogGroup API アクションを使用して、事前にロググループを作成することをお勧めします。

注記

logs:CreateLogGroup を使用しようとする前に、実行ロールの IAM ポリシーには awslogs-create-group アクセス権限が含まれている必要があります。

ジョブ定義でログ設定を指定する

デフォルトでは、AWS Batch が awslogs ログドライバーを有効にします。ここでは、ジョブの awslogs ログ設定をカスタマイズする方法について説明します。詳細については、「ジョブ定義の作成」を参照してください。

次のログ設定 JSON スニペットは、ジョブごとに logConfiguration オブジェクトが指定されています。1 つは awslogs-wordpress というロググループにログを送る WordPress のジョブで、もう 1 つは awslogs-mysql というロググループにログを送る MySQL コンテナのものです。どちらのコンテナも awslogs-example ログストリームプレフィックスを使用します。

"logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "awslogs-wordpress", "awslogs-stream-prefix": "awslogs-example" } }
"logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "awslogs-mysql", "awslogs-stream-prefix": "awslogs-example" } }

AWS Batch コンソールで、wordpress ジョブ定義のログ設定は次の図のように指定されています。


    コンソールのログ設定

awslogs ログドライバーを使用するタスク定義をジョブ定義ログ設定に登録すると、ジョブ定義を使用してジョブを送信し、CloudWatch Logsへのログの送信をスタートできます。詳細については、「ジョブの送信」を参照してください。