Amazon Simple Storage Service (Amazon S3) バケットへのエクスポートに失敗する Amazon CloudWatch ログをトラブルシューティングしたいと考えています。
解決策
**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、AWS CLI エラーのトラブルシューティングを参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
Amazon S3 バケットへのエクスポートに失敗するログのトラブルシューティングは、エクスポートタスクの作成時かまたは作成後かに基づいて行います。
エクスポートタスク作成中
作成時に失敗したタスクをトラブルシューティングするには、次の操作を行います。
- AWS リージョン: CloudWatch ログストリームと Amazon S3 バケットが同じリージョンにあることを確認します。
- Amazon S3 バケットポリシー: デフォルトでは、Amazon S3 バケットとオブジェクトはプライベートです。リソース所有者のみが、バケットおよびバケットに含まれるオブジェクトにアクセスできます。詳細については、ステップ 3: S3 バケットへのアクセス許可の設定を参照してください。
- **Amazon S3 バケットプレフィックス:**Amazon S3 バケットポリシーを設定するときは、ランダムに生成された文字列をバケットのプレフィックスとして含めることがベストプラクティスです。プレフィックスを使用する場合は、エクスポートタスクを作成するときに、Amazon S3 バケットプレフィックス設定でランダムに生成された文字列を指定する必要があります。そうしないと、エクスポートタスクの作成は失敗します。
- AWS Identity and Access Management (IAM) ポリシー: エクスポートタスクを作成した AWS Identity and Access Management (IAM) ユーザーまたはロールが、 Amazon S3 および CloudWatch ログにアクセスできることを確認します。詳細については、ステップ 2: アクセス許可の設定を参照してください。
- CloudTrail ログを確認する:AWS CloudTrail で CreateExportTask イベントを検索して、エラーメッセージを特定します。CreateExportTask は非同期操作です。必要な情報をすべて指定すると、エクスポートタスクが開始され、タスクの ID が返されます。タスクが開始されたら、DescribeExportTasks を使用してステータスを確認します。詳細については、エラーを参照してください。
- リソースクォータ:CloudWatch Logs サービスクォータでは、リージョンあたりの AWS アカウントごとに 1 つの実行中または保留中のエクスポートタスクのみ許可されます。このクォータは変更できません。許可されたクォータ内で操作していることを確認してください。
- **サーバー側の暗号化のタイプ:**Amazon S3 バケットでサポートされているサーバー側の暗号化を使用していることを確認します。サポートされている暗号化には、Advanced Encryption Standard (AES)-256 と AWS Key Management Service (AWS KMS) キーを使用するサーバー側の暗号化が含まれます。サポートされているこれらの暗号化は SSE-KMS と呼ばれます。
エクスポートタスク作成後
作成後に失敗したタスクをトラブルシューティングするには、時間範囲の設定を確認します。大量のデータを含むログストリームをエクスポートし、長い時間範囲を指定すると、エクスポートタスクが失敗することがあります。この問題を解決するには、時間範囲を短く設定して、データ量の少ないログストリームをエクスポートします。
時間範囲設定のステータスを確認するには、次の AWS CLI describe-export-tasks コマンドを実行します。
aws logs describe-export-tasks --task-id example-task-id
**注:**example-task-id の代わりにタスク ID を入力します。
Amazon S3 にデータをエクスポートするには、次の AWS CLI create-export-task コマンドを実行します。
aws logs create-export-task --task-name "example-task-name" --log-group-name "/aws/lambda/example-log-group-name" --destination "example-bucket-name --from 1710378735 --to 1710465135
**注:****example-task-name の代わりにタスク名を入力します。**example-log-group-name の代わりにロググループ名を入力します。example-bucket-name の代わりに宛先バケットを入力します。
エクスポートタスクのステータスを確認するには、次の AWS CLI describe-export-tasks コマンドを実行します。
aws logs describe-export-tasks --task-id example-task-id
**注:**example-task-id の代わりにタスク ID を入力します。
ログをエクスポートできるようになるまでには、最大 12 時間かかる場合があります。エクスポートタスクの処理には、最大で数時間かかる場合もあります。このプロセスは、エクスポートするデータのサイズによって異なります。ロググループレベルのサブスクリプションフィルタを使用してリアルタイムで処理するか、新しいデータを Amazon S3 に継続的にアーカイブするのがベストプラクティスです。詳細については、Real-time processing of log data with subscriptions を参照してください。
関連情報
ログデータを Amazon S3 にエクスポートするように Amazon CloudWatch を設定したのですが、ログデータが不足しているか、無効です。この問題を解決するにはどうすればよいですか?
CloudWatch Logs からログデータを取得するにはどうすればよいですか?
Amazon S3 へのログデータのエクスポート