ALBのアクセスログを有効化するときにS3で必要なS3バケットポリシーが自分の知ってた書き方から変わっていたので振り返りとして記載します。
結論
ALBのアクセスログを有効化するとき、S3に設定するS3バケットポリシーのPrincipalにはlogdelivery.elasticloadbalancing.amazonaws.comを使う。
リージョン毎に固有のアカウントIDは使わない。
きっかけ
ALBのアクセスログ設定をする機会があり、関連すドキュメントを改めて見直していたところ、バケットポリシーのPrincipalにlogdelivery.elasticloadbalancing.amazonaws.comというサービスプリンシパルを指定するだけのシンプルな記述が出てきました。
以前調べたときはリージョン毎のALB用AWSアカウントIDを指定する形式しか見た記憶がなかったです。
バケットポリシーの書き方
現在(2026年7月時点)でAWSが推奨しているバケットポリシーの書き方とリージョン毎にアカウントIDを指定する古い書き方を比較します。
これまでのバケットポリシーの書き方
リージョンごとに割り当てられたALB用のAWSアカウントIDをPrincipalに指定する形式です。
東京リージョンの場合、ALBのAWSアカウントIDは582318560864なので以下のようになります。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::582318560864:root"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/prefix/AWSLogs/123456789012/*"
}
]
}
※アカウントIDはリージョンごとに異なるので、他リージョンで使う場合は以下ドキュメントの一覧から該当リージョンのIDを確認してください。
新しいバケットポリシーの書き方
新しいポリシーは以下のようにサービスプリンシパルを指定するだけのシンプルな形式です。
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "logdelivery.elasticloadbalancing.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/prefix/AWSLogs/123456789012/*"
}
]
}
Resource内のamzn-s3-demo-bucket(S3バケット名)と123456789012(アカウントID)は各自のS3バケット・ログ配信元のALBがあるアカウントIDに書き換える必要があります。
※上記例はAWSドキュメントに記載のポリシーそのまま記載しています。
設定してみた
20260701-albという名前でALBログ用のS3バケットを作成し、バケットポリシーを以下画像のように設定しました。
設定したバケットポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "logdelivery.elasticloadbalancing.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::20260701-alb/*"
}
]
}
ALBのアクセスログに上記S3バケットを指定したところ、ELBAccessLogTestFileが保存されておりログがS3バケットに保存される状態になっていることが確認できました。
以上の検証から新しいS3バケットポリシーでも問題なくログ配信される設定になっていることが確認できました。
いつから新しいS3バケットポリシーが推奨されたのか
2025年9月10日から全リージョンで新しいシンプルなポリシーがサポートされるようになったそうです。
ドキュメントの記述からするに、2022年8月以降に新設されたリージョンでは最初から新しいシンプルなポリシーがサポートされていたらしいです。ただ、東京リージョンのようにそれ以前から存在するリージョンでは、古いバケットポリシー(アカウントID指定)が必須だったようです。
ドキュメント更新履歴は以下に記載されています。
まとめ・感想
新しい書き方が推奨されてるなら新しい方を使ったほうが良いですね。
古いバケットポリシーも引き続きサポートされているので、既存の設定を急いで書き換える必要はありませんが、新規で構築する場合はシンプルな新しい書き方を使っていけばよさそうです。
参考

