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

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

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

注記

AWS Batch コンソールでは、ジョブ定義を作成するときに ロギング設定 セクションで awslogs ログドライバーを設定できます。

注記

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

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

AWS Batch JobDefiniton データ型の 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 ジョブ定義のログ設定は次の図のように指定されています。

Log configuration interface showing awslogs driver with group and stream prefix options.

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