はじめに
ALB/NLBのアクセスログ出力設定時によくあるエラーとして、
以下例の通り出力先バケットの権限エラー(Please check S3bucket permission)が挙げられるかと思います。
本記事はバケット権限エラーに直面した際の確認観点を共有させていただき、同様のエラー対応に悩んでいるかたの救いになれば幸いです。
エラー発生時の確認観点
①S3バケットポリシーを付与しているか
アクセスログを出力するためには、出力先S3バケットポリシーを付与する必要があります。
※S3のバケットポリシーはこちらを参考。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<elb-account-id(AWS公式指定のアカウント)>:root"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::<出力先S3バケット名>/AWSLogs/<自分のアカウント>/*"
}
]
}
※AWS公式指定の他アカウントを指定しているが、○○につき
閉域網であるプライベートサブネット内でも出力可能である。
②S3暗号化キーがタイプがSSE-KMSになっていないか
2022年8月現在、ALB/NLBのアクセスログ出力先バケットがKMS暗号化を行っていた場合、
直接的な出力が不可能である。
※本リンクに「Amazon S3 が管理する暗号化キー (SSE-S3) を使用して、Amazon S3 アクセスログバケットに対してサーバー側の暗号化を有効にできます。」との記載あり。SSE-KMS暗号化が利用できないと明記されてはいないが、AWSサポートに確認したところ使用できないとのこと。
そのため、「暗号化の無効化」もしくは、「Amazon S3 マネージドキー (SSE-S3)」で暗号する必要がある。
最後に
上記2つの観点を確認すれば、ひとまず「Please check S3bucket permission」は解消できるかと思います