【小ネタ】東京リージョンでALBアクセスログ用のS3バケットポリシーにログ配信サービスを指定できるようになっていました。
はじめに
皆様こんにちは、あかいけです。
先日、ALBのアクセスログを設定するためにAWSのドキュメントを確認していたところ、日本語版と英語版で記述内容が異なることに気づきました。
調べてみると、東京リージョンでもバケットポリシーにログ配信サービスを指定できるようになっていました。
小さな発見ではありますが、同じように気づいていない方もいらっしゃるかもしれないと思い、共有させていただきます。
ドキュメントの記述について
まず日本語版ドキュメントですが、
リージョンが利用可能になった時期によって、バケットポリシーの記述方法が2種類記載されています。
東京リージョンは「2022 年 8 月より前に利用可能になったリージョン」なので、
私は今まで②のElastic Load Balancing アカウント IDを許可する方式で設定していました。
- パターン①:2022 年 8 月以降に利用可能になったリージョン
- プリンシパルにてログ配信サービスを許可する
{
"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/*"
}
]
}
- パターン②:2022 年 8 月より前に利用可能になったリージョン
- プリンシパルにてElastic Load Balancing アカウント IDを許可する
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/prefix/AWSLogs/123456789012/*"
}
]
}
次に英語版ドキュメントですが、
リージョンに関係なくログ配信サービスを指定する方式が利用できるとの記述がありました。
(以下は英語ドキュメントを日本語訳したものです)
レガシーバケットポリシー
これまで、2022年8月より前に利用可能になったリージョンでは、Elastic Load Balancing アカウントにリージョン固有の権限を付与するポリシーが必要でした。
このレガシーポリシーは引き続きサポートされますが、上記の新しいポリシーに置き換えることをお勧めします。
ここには記載されていませんが、引き続きレガシーポリシーをご利用いただくことも可能です。
従来のElastic Load Balancing アカウント 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/*"
}
]
}
結果として以下のように配信されていることを確認できたので、問題なくアクセスログを格納できています。
(アカウントIDとバケット名はマスクしています)
aws s3 ls s3://example-bucket/alb/AWSLogs/XXXXXXXXXXXX/elasticloadbalancing/ap-northeast-1/2025/10/01/
2025-10-02 00:38:54 936 XXXXXXXXXXXX_elasticloadbalancing_ap-northeast-1_app.dev-sample01-alb.801eed916e06fefd_20251001T1540Z_35.79.208.27_3ccffyyv.log.gz
2025-10-02 00:40:04 402 XXXXXXXXXXXX_elasticloadbalancing_ap-northeast-1_app.dev-sample01-alb.801eed916e06fefd_20251001T1540Z_35.79.208.27_51ais8l3.log.gz
2025-10-02 00:40:04 677 XXXXXXXXXXXX_elasticloadbalancing_ap-northeast-1_app.dev-sample01-alb.801eed916e06fefd_20251001T1540Z_54.238.114.85_40ti71l4.log.gz
またその他のリージョンは確認しておりませんが、
英語版ドキュメントの記述を見た限りでは、同様にログ配信サービスを指定する方式が使えるのではないかと思われます。
さいごに
今回は、東京リージョンでもALBアクセスログ用のS3バケットポリシーにログ配信サービスを指定できることを確認できました。
従来のElastic Load Balancing アカウント IDを指定する方式では、
リージョンごとに異なるアカウントIDを調べて設定する必要があり、特にマルチリージョン構成のIaCの記述が煩雑になりがちでした…。
一方、ログ配信サービスを指定する方式であれば、logdelivery.elasticloadbalancing.amazonaws.com
というサービスプリンシパルをすべてのリージョンで共通して使用できるため、テンプレート化やコード管理がしやすくなります。
かなり細かい変更点ではありますが、運用効率の向上につながる改善だと思いますので、
これから新規で設定する際や既存の設定を見直す機会があれば、ぜひ新しい方式を検討してみてください。