Amazon Simple Storage Service (Amazon S3) バケットを使用して Elastic Load Balancing (ELB) アクセスログを設定する際に、エラーが発生します。
簡単な説明
ロードバランサーでアクセスログを使用するには、Amazon S3 バケットにバケットポリシーをアタッチする必要があります。バケットポリシーには、ELB がバケットに書き込むためのアクセス許可が必要です。
注: Network Load Balancers は、Transport Layer Security (TLS) リスナーのアクセスログのみをサポートします。アクセスログには、Network Load Balancer に対する TLS リクエストに関する情報が含まれています。Network Load Balancer では、伝送制御プロトコル (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 が設定されていることを確認します。
必要なアクセス許可の詳細については、次のトピックを参照してください。
Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3) を使用することで、ELB のアクセスログを暗号化できます。なお、Network Load Balancer は、アクセスログの暗号化に AWS Key Management Service (AWS KMS) カスタマーマネージドキーをサポートしています。ただし、ELB アクセスログの暗号化には、AWS KMS マネージドキーを使用することはできません。
バケットの名前空間に関するエラー
The value of 'access_logs.s3.prefix' cannot start with 'AWSLogs' ('access_logs.s3.prefix' の値の最初に、'AWSLogs' は使用できません) というエラーが発生します。
このエラーは、アクセスログにおいて、S3 バケットのプレフィックスに AWSLogs が含まれている場合に発生します。この問題を解決するには、アクセスログの S3 バケット用プレフィックスから AWSLogs を削除します。
その他のトラブルシューティング
S3 バケットのポリシーと設定が適切であるにもかかわらず、ログが表示されない場合は、ロードバランサーがトラフィックを受信していることを確認します。ロードバランサーのメトリクス ActiveConnectionCount および RequestCount を確認してください。