サーバーのアクセスログ記録のトラブルシューティング - Amazon Simple Storage Service

サーバーのアクセスログ記録のトラブルシューティング

次のトピックは、Amazon S3 でログ記録された問題をトラブルシューティングするのに役立ちます。

ログ記録設定時のよくあるエラーメッセージ

AWS Command Line Interface (AWS CLI) と AWS SDK を使用してログ記録を有効にすると、次のようなエラーメッセージが表示されることがよくあります。

エラー: S3 ロケーションをまたがるロギングは許可されていません

送信先バケット (別名ターゲットバケット) がソースバケットとは別のリージョンに配置されている場合、Cross S3 location logging not allowed エラーが発生します。このエラーを解決するには、アクセスログを受信するように設定された送信先バケットがソースバケットと同じ AWS リージョン の AWS アカウント にあることを確認します。

エラー: ログを記録するバケットの所有者とターゲットバケットの所有者は同じである必要があります

サーバーアクセスのログ記録を有効にしている場合、指定された送信先バケットが別のアカウントに属している場合にこのエラーが発生します。このエラーを解決するには、送信先バケットがソースバケットと同じ AWS アカウント にあることを確認します。

注記

ソースバケットとは別のターゲットバケットを選択することをお勧めします。ソースバケットと送信先バケットが同じ場合、バケットに書き込まれるログに関する追加のログが作成され、ストレージ料金が増大する可能性があります。また、追加のログがあると、探している特定のログを見つけるのが難しくなることがあります。ログを管理しやすくするため、アクセスログは別のバケットに保存することをお勧めします。詳細については、「ログ配信を有効にするにはどうすればよいですか?」を参照してください。

エラー: ログ記録のターゲットバケットが存在しません。

送信先バケットは、設定する前に存在している必要があります。このエラーは、送信先バケットが存在しないか、見つからないことを示しています。バケット名のスペルが正しいことを確認してから、もう一度試してください。

エラー: バケット所有者が強制するバケットにターゲット許可が付与されていません

このエラーは、送信先バケットが S3 オブジェクト所有権のバケット所有者の強制設定を使用していることを示しています。バケット所有者の強制設定は、送信先 (ターゲット) 権限をサポートしていません。詳細については、「ログ配信許可」を参照してください。

配信失敗のトラブルシューティング

サーバーアクセスのログ記録の問題を回避するには、次のベストプラクティスに従っていることを確認してください。

  • S3 ログ配信グループに送信先バケットへの書き込みアクセス許可があること - S3 ログ配信グループは、送信先バケットにサーバーアクセスログを配信します。バケットポリシーまたはバケットアクセスコントロールリスト (ACL) を使用して、送信先バケットへの書き込みアクセスを付与できます。ただし、ACL の代わりにバケットポリシーを使用することをお勧めします。送信先バケットへの書き込みアクセスを許可する方法の詳細については、「ログ配信許可」を参照してください。

    注記

    送信先バケットが、オブジェクト所有権にバケット所有者の強制設定を使用している場合は、次の点に注意します。

    • ACL は無効になり、アクセス権限には影響しません。つまり、S3 ログ配信グループへのアクセスを許可すると、バケット ACL を更新できません。代わりに、ログサービスプリンシパルへのアクセスを許可するために、送信先バケットのバケットポリシーを更新する必要があります。

    • PutBucketLogging 設定には、送信先権限を含めることできません。

  • 送信先バケットのバケットポリシーがログへのアクセスを許可していること – ターゲットバケットのバケットポリシーを確認します。"Effect": "Deny" を含むステートメントをバケットポリシーで検索します。次に、Deny ステートメントがアクセスログのバケットへの書き込みを妨げていないことを確認します。

  • S3 オブジェクトロックがターゲットバケットで有効になっていないこと – ターゲットバケットでオブジェクトロックが有効になっているかを確認します。オブジェクトロックにより、サーバーアクセスログの配信をブロックします。オブジェクトロックが有効になっていない送信先バケットを選択する必要があります。

  • 送信先バケットでデフォルトの暗号化が有効になっている場合、Amazon S3 マネージドキー (SSE-S3) が選択されていること – Amazon S3 マネージドキー (SSE-S3) でサーバー側の暗号化を使用する場合に限り、送信先バケットでデフォルトのバケット暗号化を使用できます。サーバーアクセスのログ記録の送信先バケットでは、AWS Key Management Service (AWS KMS) キー (SSE-KMS) によるデフォルトのサーバー側の暗号化はサポートされていません。デフォルトの暗号化の有効にする方法の詳細については、「デフォルトの暗号化の設定」を参照してください。

  • ターゲットバケットでリクエスタ支払いが有効になっていないこと – サーバーアクセスのログ記録でのリクエスタ支払いバケットの使用はサポートされていません。サーバーアクセスログの配信を許可するには、ターゲットバケットのリクエスタ支払いオプションを無効にします。

  • AWS Organizations サービスコントロールポリシーを確認する - AWS Organizations を使用している場合は、サービスコントロールポリシーをチェックして、Amazon S3 へのアクセスが許可されていることを確認します。サービスコントロールポリシーは、影響を受けるアカウントのアクセス許可の上限を指定します。サービスコントロールポリシーに "Effect": "Deny" を含むステートメントを検索し、Deny ステートメントがバケットへのアクセスログの書き込みを妨げていないことを確認します。詳細については、「AWS Organizations ユーザーガイド」の「サービスコントロールポリシー (SCPs)」を参照してください。

  • 最新のロギング設定の変更が有効になるまで時間がかかること - サーバーアクセスのログ記録を最初に有効にした場合や、ログの送信先バケットを変更した場合は、すべてが有効になるまでに時間がかかります。すべてのリクエストが正しく記録され、配信されるまでに 1 時間以上かかる場合があります。

    ログ配信の失敗を確認するには、Amazon CloudWatch でリクエストメトリクスを有効にします。ログが数時間以内に配信されない場合は、ログ配信の失敗を示す 4xxErrors メトリクスを探してください。リクエストメトリクスの有効化の詳細については、「バケット内のすべてのオブジェクトに対する CloudWatch メトリクス設定を作成する」を参照してください。