Elastic Load Balancing (ELB) のアクセスログを Amazon Simple Storage Service (Amazon S3) バケットを使用するように設定する際にエラーが発生します。
簡単な説明
ロードバランサーでアクセスログを使用するには、Amazon S3 バケットにバケットポリシーをアタッチする必要があります。バケットポリシーには、ELB がバケットに書き込むためのアクセス許可を含める必要があります。
**注: ** Network Load Balancer は、Transport Layer Security (TLS) リスナーのアクセスログのみをサポートしています。アクセスログには、Network Load Balancer への TLS リクエストに関する情報が含まれます。Network Load Balancer は Transmission Control Protocol (TCP) をサポートしていません。
解決策
AWS リージョンのバケットエラー
"S3Bucket: my-access-log-bucket is not located in the same region with ELB: app/my-load-balancer/50dc6c495c0c9188" というエラーメッセージが表示されます。
このエラーは、Amazon S3 バケットとロードバランサーが同じ AWS リージョンにない場合に発生します。Amazon S3 バケットは別の AWS アカウントにあってもかまいませんが、ロードバランサーと同じリージョンにある必要があります。
この問題を解決するには、S3 バケットをロードバランサーと同じリージョンに移動します。
バケットのアクセス許可に関するエラー
次のエラーメッセージが表示されます: "Access Denied for bucket: my-access-log-bucket.Please check S3bucket permission"。
このエラーは、Amazon S3 バケットにアクセスログを書き込むためのアクセス許可を付与するポリシーがない場合に発生します。
この問題を解決するには、ELB がバケットにログを書き込むためのアクセス許可を付与するバケットポリシーを S3 バケットにアタッチします。バケットの名前とプレフィックスのプレースホルダーが正しいことを確認してください。また、ロードバランサーのリージョンに基づいて、ELB の正しいアカウント ID を指定していることを確認してください。
必要なアクセス許可の詳細については、次のトピックを参照してください。
ELB のアクセスログを暗号化するには、Amazon S3 マネージドキーによるサーバーサイド暗号化 (SSE-S3) を使用できます。また、Network Load Balancer は、アクセスログを暗号化するために AWS Key Management Service (AWS KMS) のカスタマーマネージドキーをサポートしています。ただし、AWS KMS マネージドキーを使用して ELB アクセスログを暗号化することはできません。
バケットの名前空間に関するエラー
"The value of 'access_logs.s3.prefix' cannot start with 'AWSLogs'" というエラーメッセージが表示されます。
このエラーは、アクセスログの S3 バケットプレフィックスに AWSLogs が含まれている場合に発生します。この問題を解決するには、アクセスログの S3 バケットプレフィックスから AWSLogs を削除します。
その他のトラブルシューティング
S3 バケットポリシーと設定が正しいにもかかわらずログを表示できない場合は、ロードバランサーがトラフィックを受信していることを確認してください。次のロードバランサーメトリクスを確認してください。