Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
CloudWatch Logs で失敗したエクスポートタスクをトラブルシューティングする方法を教えてください。
Amazon CloudWatch Logs で失敗したエクスポートタスクをトラブルシューティングしたいです。
簡単な説明
同じアカウントまたは別のアカウント内の Amazon Simple Storage Service (Amazon S3) バケットのエクスポートタスクを設定できます。送信先の Amazon S3 バケットに必要なアクセス許可がない場合、次のエラーが表示されることがあります。
- エクスポートタスクを作成できませんでした。指定されたバケットでの GetBucketAcl 呼び出しが失敗しました。CloudWatch Logs にこの操作を実行するアクセス許可が付与されているかどうかを確認してください。
- エクスポートタスクを作成できませんでした。指定されたバケットでの PutObject 呼び出しが失敗しました。CloudWatch Logs にこの操作を実行するアクセス許可が付与されているかどうかを確認してください。
- エクスポートタスクを作成できません。リソース制限を超えました。
- 指定されたバケットでの PutObject 呼び出しが失敗しました。CloudWatch Logs にこの操作を実行するアクセス許可が付与されているかどうかを確認してください。これは、KMS キーまたはバケット暗号化の設定ミスが原因である可能性があります。
- 指定されたバケットでの GetBucketAcl 呼び出しが失敗しました。指定した Amazon S3 バケットが CloudWatch ログと同じ AWS リージョンにあるかどうかを確認してください。
解決策
CloudWatch Logs で失敗したエクスポートタスクをトラブルシューティングするには、次の手順を実行します。
エクスポートタスクにアクセス許可を付与する
エクスポートタスクに必要なアクセス許可を付与するには、ユーザー、グループ、またはロールで次のアクセス許可を使用します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-exported-logs/*" }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "ARN_OF_KMS_KEY" } ] }
エクスポートタスクを実行するには、必ずAWS Identity and Acccess Management (IAM) ロール AmazonS3ReadOnlyAccess を以下のアクセス許可で認証してください。
- logs:CreateExportTask
- logs:CancelExportTask
- logs:DescribeExportTasks
- logs:DescribeLogStreams
- logs:DescribeLogGroups
送信先の Amazon S3 バケットにアクセス許可を付与する
デフォルトでは、すべての Amazon S3 バケットとオブジェクトはプライベートです。リソース所有者またはバケットを作成した AWS アカウントのみが、バケットとバケット内のオブジェクトにアクセスできます。必要に応じて、リソース所有者はアクセスポリシーを作成して、他のリソースやユーザーにアクセス許可を付与することができます。
注: ポリシーを設定するときは、ランダムに生成された文字列をバケットのプレフィックスとして含めるのがベストプラクティスです。これにより、目的のログストリームのみをバケットにエクスポートできます。
送信先の Amazon S3 バケットにアクセス許可を付与するには、次の手順を実行します。
-
Amazon S3 コンソールを開き、ログのエクスポート先のバケットを選択します。
-
[アクセス許可] を選択し、次に [バケットポリシー] を選択します。
-
バケットポリシーエディタで、次のポリシーを追加します。
注: example-s3-bucket は、お使いの Amazon S3 バケットの名前に置き換えてください。また、Principal パラメータの example-region は、必要な AWS リージョンのエンドポイントに置き換えてください。
{ "Version": "2012-10-17", "Statement": [ { "Action": "s3:GetBucketAcl", "Effect": "Allow", "Resource": "arn:aws:s3:::exammple-s3-bucket", "Principal": { "Service": "logs.example-region.amazonaws.com" }, "Condition": { "StringEquals": { "aws:SourceAccount": [ "AccountId1", "AccountId2", ... ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:Region:AccountId1:log-group:", "arn:aws:logs:Region:AccountId2:log-group:", ... ] } } }, { "Action": "s3:PutObject", "Effect": "Allow", "Resource": "arn:aws:s3:::example-s3-bucket/", "Principal": { "Service": "logs.example-region.amazonaws.com" }, "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": [ "AccountId1", "AccountId2", ... ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:Region:AccountId1:log-group:", "arn:aws:logs:Region:AccountId2:log-group:", ... ] } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::create_export_task_caller_account:role/role_name" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::example-s3-bucket/", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ] } -
[保存] を選択します。上記のポリシーは、Amazon S3 バケットのアクセスポリシーとして設定されています。このポリシーにより、CloudWatch Logs はログデータを Amazon S3 バケットにエクスポートでき、バケット所有者はエクスポートされたすべてのオブジェクトに対する完全なアクセス許可を持つことになります。
SSE-KMS で暗号化されたバケットにタスクをエクスポートする
- AWS Key Management Service (AWS KMS) コンソールを開きます。AWS リージョンを変更するには、ページの右上隅にあるリージョンセレクターを使用します。
- 左側のナビゲーションバーで [カスタマーマネージドキー] を選択し、[キーを作成] を選択して、次の手順を実行します。
[キータイプ] で [対称] を選択します。
[キーの使用] で [暗号化と復号化] を選択します。
[次へ] を選択します。 - [ラベルを追加] に、キーのエイリアスを入力します。必要に応じて、説明またはタグを追加します。完了したら、**[次へ]**を選択します。
- [キー管理者] でこのキーを管理できるユーザーを選択したら、[次へ] を選択します。
- [キーの使用アクセス許可の定義] では何も変更せず、[次へ] を選択します。
- 設定を確認したら、[完了] を選択します。
- [カスタマーマネージドキー] ページに移動し、作成したキーの名前を選択します。
- [キーポリシー] タブを選択し、[ポリシービューへの切り替え] を選択します。
- [キーポリシー] セクションで、[編集] を選択します。
- 次のステートメントをキーポリシーステートメントリストに追加します。
注: **example-region ** は、ログのリージョンに置き換えてください。**example-account-arn ** を AWS KMS キーを所有するアカウントの ARN に置き換えてください。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow CWL Service Principal usage", "Effect": "Allow", "Principal": { "Service": "logs.example-region.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "" }, { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "example-account-arn" }, "Action": [ "kms:GetKeyPolicy", "kms:PutKeyPolicy", "kms:DescribeKey", "kms:CreateAlias", "kms:ScheduleKeyDeletion", "kms:Decrypt" ], "Resource": "*" }, { "Sid": "Enable IAM Role Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::create_export_task_caller_account:role/role_name" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "ARN_OF_KMS_KEY" } ] }
- [変更を保存] を選択します。
- Amazon S3 コンソールを開きます。
- CloudWatch ログのエクスポート先となるバケットを選択します。
- [プロパティ] タブを選択します。次に、[デフォルトの暗号化] で [編集] を選択します。
- [サーバー側の暗号化] で [有効] を選択します。
- [暗号化タイプ] で [AWS Key Management Serviceキー (SSE-KMS)] を選択します。
- [AWS KMS キーから選択] を選択し、作成したキーを探します。
- [バケットキー] で [有効] を選択します。
- [変更を保存] を選択します。
