Amazon Simple Storage Service (Amazon S3) バケットを使用して Elastic Load Balancing (ELB) アクセスログを設定しているときにエラーが発生します。
簡単な説明
ロードバランサーでアクセスログを使用するには、Amazon S3 バケットにバケットポリシーをアタッチする必要があります。バケットポリシーは、ELB がバケットに書き込むためのアクセス許可を追加する必要があります。表示されるエラーメッセージに応じて、関連する解決策のセクションを参照してください。
注: Network Load Balancers は、Transport Layer Security (TLS) リスナーのアクセスログのみをサポートします。アクセスログには、Network Load Balancer に対して行われた TLS リクエストに関する情報が含まれています。Transmission Control Protocol (TCP) はサポートされていません。
解決策
バケットリージョンエラー
エラーメッセージ: 「S3Bucket: my-access-log-bucket is not located in the same region with ELB: app/my-load-balancer/50dc6c495c0c9188」(S3Bucket: my-access-log-bucket が ELB と同じリージョンにありません: app/my-load-balancer/50dc6c495c0c9188)
このエラーは、Amazon S3 バケットとロードバランサーが同じ AWS リージョンにない場合に発生します。Amazon S3 バケットは別のアカウントにあってもかまいませんが、ロードバランサーと同じリージョンにある必要があります。
このエラーを解決するには、S3 バケットとロードバランサーが同じリージョンにあることを確認します。
バケット権限エラー
エラーメッセージ: 「バケットのアクセスが拒否されました: my-access-log-bucket。S3 バケット許可を確認してください」
このエラーは、Amazon S3 バケットにアクセスログを書き込む許可を付与するポリシーがない場合に発生します。
このエラーを解決するには、バケットポリシーがバケットにログを書き込む許可を ELB に付与していることを確認します。バケットの名前とプレフィックスに正しいプレースホルダーがあることを確認します。ロードバランサーのリージョンに基づいて、ELB の AWS アカウントの正しい ID であることを確認します。
必要な許可の詳細については、以下を参照してください。
Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3) を使用して ELB のアクセスログを暗号化できます。さらに、Network Load Balancer は AWS Key Management Service (AWS KMS) カスタマーマネージドキーをサポートし、アクセスログを暗号化します。ELB アクセスログの暗号化に AWS KMS マネージドキーを使用することはできません。
バケット名前空間エラー
エラーメッセージ: 「リクエストされたバケット名は利用できません。バケット名前空間は、システムのすべてのユーザーによって共有されます。別の名前を選択して、もう一度お試しください。」
このエラーは、アクセスログのバケットプレフィックスに「AWSLogs」が含まれている場合に発生します。
このエラーを解決するには、アクセスログのバケットプレフィックスから「AWSLogs」を削除します。
その他のトラブルシューティング
S3 バケットのポリシーと設定を確認してもログが表示されない場合は、ロードバランサーがトラフィックを受信していることを確認します。ロードバランサーがトラフィックを受信するかどうかを確認するには、ActiveConnectionCount および RequestCount メトリクスを確認します。