サブスクリプションフィルタ、Logs Insights クエリ、Amazon Simple Storage Service (Amazon S3) エクスポート、CloudWatch API を使用して Amazon CloudWatch Logs からログデータを取得して、CSV ファイルとしてダウンロードしたいと考えています。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
CloudWatch Logs からログデータを取得するには、ユースケースに基づいて、次のいずれかのベストプラクティスを使用します。
サブスクリプションフィルターを使用してログデータをストリーミングする
CloudWatch Logs からログデータをリアルタイムで取得するには、サブスクリプションフィルターを使用します。ログデータのサブスクリプションフィルターは CloudWatch API のスロットリングを防止します。詳細については、「サブスクリプションを使用したログデータのリアルタイム処理」および「ロググループレベルのサブスクリプションフィルター」を参照してください。
注: Amazon Kinesis Data Streams の場合、スロットリングされたサービス API は自動的に再試行されます。
CloudWatch API を使用する
ログデータを手動で見つけるには、GetLogEvents または FilterLogEvents CloudWatch API オペレーションを使用します。1 秒あたりのトランザクション数 (TPS) クォータがあるため、これらの API オペレーションをスケーリングすることはできません。GetLogEvents API オペレーションは、トークンを介して利用できるログイベントが他にもある場合、空の結果を返すことがあります。現在のクォータについては、「CloudWatch Logs クォータ」を参照してください。API スロットリングが発生する場合は、サブスクリプションフィルターを使用してください。
CloudWatch Logs Insights クエリを実行する
ログデータを検索して分析するには、CloudWatch Logs Insights でクエリを実行します。クエリは、問題への対応や原因の特定に役立ち、その他のトラブルシューティングにも役立ちます。詳細については、「CloudWatch Logs Insights を使用してログデータを分析する」を参照してください。
ログデータを Amazon S3 にエクスポートする
バッチユースケースでは、CloudWatch Logs データを Amazon S3 にエクスポートできます。ログデータを CloudWatch Logs からエクスポートできるようになるまでに最大 12 時間かかる可能性があります。リアルタイムの分析と処理には、サブスクリプションフィルターを使用してください。
注: AWS アカウントでは、PENDING、PENDING_CANCEL、またはRUNNING 状態のログデータに対して実行できるエクスポートタスクは 1 つのみです。
ログを .csv ファイルにダウンロードする
CloudWatch コンソール、AWS CLI、または CloudWatch Logs Insights を使用してログデータを取得できます。CloudWatch コンソールを使用してください。
次の手順を実行します。
- CloudWatch コンソールを開きます。
- 該当するロググループを選択します。
- ダウンロードするログイベントを含むログストリームを選択します。
- [アクション] を選択してから、[検索結果をダウンロード] を選択します。
AWS CLI を使用する
.csv ファイル形式のログイベントを取得するには、次の get-log-events AWS CLI コマンドを実行します。
aws logs get-log-events --log-group-name example-loggroup-name --log-stream-name example-logstream-name --start-time 1705147529 --end-time 1705233929 log_events.csv
注: **example-loggroup-name ** は実際のロググループ名に、example-logstream-name は実際のログストリーム名に、1705147529 は実際の開始時間に、1705233929 は実際の終了時間に置き換えてください。
.csv ファイルは、コマンドの開始元と同じディレクトリに保存されます。また、AWS CLI は、ワークステーションに対して設定されたデフォルトの AWS リージョンとプロファイルを使用します。前述の AWS CLI コマンドでワークステーションのリージョンを指定します。
CloudWatch Logs Insights を使用してログデータを取得する
クエリを実行してログデータを取得します。ログが 10,000 件未満のデータをエクスポートするには、[結果をエクスポート] を選択します。また、10,000 を超えるログのデータをエクスポートするには、ログを S3 バケットにエクスポートし、そのデータを .csv ファイルにダウンロードします。