

# Lambda 関数ログの操作
<a name="monitoring-logs"></a>

障害をトラブルシューティングできるよう、AWS Lambda はユーザーに代わって Lambda 関数を自動でモニタリングします。Lambda コンソール、CloudWatch コンソール、AWS Command Line Interface (AWS CLI)、あるいは CloudWatch API を使用して Lambda 関数のログを表示できます。Amazon S3 および Firehose にログを送信するように Lambda を設定することもできます。

関数の[実行ロール](lambda-intro-execution-role.md)が必要なアクセス許可を持っている限り、Lambda はその関数によって処理されるすべてのリクエストのログをキャプチャし、デフォルトの送信先である Amazon CloudWatch Logs に送信します。Lambda コンソールを使用して Amazon S3 または Firehose をログ記録先として設定することもできます。
+ **CloudWatch Logs** は、デフォルトの Lambda 関数のログ記録先です。CloudWatch Logs は、リアルタイムのログ表示および分析機能を提供し、ログデータに基づくメトリクスおよびアラームの作成をサポートします。
+ **Amazon S3** は経済的な長期ストレージを提供すると共に、Athena などのサービスを使用したログ分析を可能にします。通常は、高いレイテンシーが得られます。
+ **Firehose** は、さまざまな送信先にログのマネージドストリーミングを提供します。ログを他の AWS サービス (OpenSearch Service や Redshift Data API など) またはサードパーティプラットフォーム (Datadog、New Relic、Splunk など) に送信する必要がある場合、Firehose は事前構築済みの統合機能を提供することでこのプロセスを簡素化します。追加のインフラストラクチャを設定せず、カスタム HTTP エンドポイントにストリーミングすることもできます。

## ログを送信するサービス送信先の選択
<a name="choosing-log-destination"></a>

関数ログの送信先となるサービスを選択する際、以下の重要な要因を考慮してください。
+ **コスト管理はサービスによって異なります。**通常、Amazon S3 は最も経済的な長期ストレージオプションを提供しますが、CloudWatch Logs はリアルタイムでのログ表示、ログ処理、アラート設定を可能にします。Firehose のコストには、ストリーミングサービスおよびストリーミング先の設定に関連するコストの両方が含まれます。
+ **分析機能はサービスによって異なります。**CloudWatch Logs はリアルタイムのモニタリングに優れ、Logs Insights や Live Tail などの他の CloudWatch 機能とネイティブに統合します。Amazon S3 も Athena などの分析ツールと互換性があり、さまざまなサービスとの統合が可能ですが、追加のセットアップが必要になる場合があります。Firehose は事前構築された統合機能を提供することで、特定の AWS サービス (OpenSearch Service や Redshift Data API など) およびサポートされているサードパティプラットフォーム (Datadog や Splunk など) への直接ストリーミングを簡素化し、設定作業を軽減する効果があります。
+ **セットアップと使いやすさはサービスによって異なります。**CloudWatch Logs はデフォルトのログ送信先です。追加の設定なしですぐに実装でき、CloudWatch コンソール上でのシンプルなログ表示および分析機能を提供します。Amazon S3 にログを送信するには、Lambda コンソールで初期設定を行い、バケットのアクセス許可を設定する必要があります。OpenSearch Service やサードパーティ分析プラットフォームなどのサービスに直接ログを送信したい場合、Firehose でプロセスを簡素化することができます。

## ログ送信先の設定
<a name="configuring-log-destinations"></a>

AWS Lambda は、関数ログの複数の送信先をサポートします。このガイドでは利用可能なログ記録の送信先について説明し、ニーズに応じて適切なオプションを選択できるようにします。どの送信先を選択するかに関わらず、Lambda はログ形式、フィルタリング、配信を制御するオプションを提供します。

Lambda は、関数ログ形式として JSON 形式およびプレーンテキスト形式の両方をサポートします。JSON 構造化ログは検索可能性を高めて自動分析を可能にする一方、プレーンテキストログはシンプルさを提供し、ストレージコストを削減する効果が期待できます。システムログとアプリケーションログの両方についてログレベルを設定することで、Lambda がどのログを選択された送信先に送信するかをコントロールできます。フィルタリングによってストレージコストを管理し、デバッグ中に関連するログエントリを見つけやすくなります。

各送信先のセットアップ手順の詳細については、次のセクションを参照してください。
+ [Lambda 関数ログを CloudWatch Logs に送信する](monitoring-cloudwatchlogs.md)
+ [Firehose への Lambda 関数ログの送信](logging-with-firehose.md)
+ [Lambda 関数ログを Amazon S3 に送信する](logging-with-s3.md)

## Lambda 関数の高度なログ記録コントロールの設定
<a name="monitoring-cloudwatchlogs-advanced"></a>

関数ログのキャプチャ、処理、使用方法をより細かく制御できるよう、Lambda では次のログ記録設定オプションを用意しています。
+ **ログの形式** - 関数ログ形式として、プレーンテキスト形式または構造化 JSON 形式のいずれかを選択できます。
+ **ログレベル** - JSON 構造化ログの場合、Lambda が CloudWatch に送信するログの詳細レベル (`FATAL`、`ERROR`、`WARN`、`INFO`、`DEBUG`、`TRACE`) を選択できます。
+ **ロググループ** - 関数がログを送信する CloudWatch ロググループを選択できます。

高度なログ記録コントロールの設定の詳細については、以下のセクションを参照してください。
+ [JSON とプレーンテキストのログフォーマットの設定](monitoring-cloudwatchlogs-logformat.md)
+ [ログレベルのフィルタリング](monitoring-cloudwatchlogs-log-level.md)
+ [CloudWatch ロググループの設定](monitoring-cloudwatchlogs-loggroups.md)