【小ネタ】東京リージョンでALBアクセスログ用のS3バケットポリシーにログ配信サービスを指定できるようになっていました。

【小ネタ】東京リージョンでALBアクセスログ用のS3バケットポリシーにログ配信サービスを指定できるようになっていました。

2025.10.02

はじめに

皆様こんにちは、あかいけです。

先日、ALBのアクセスログを設定するためにAWSのドキュメントを確認していたところ、日本語版と英語版で記述内容が異なることに気づきました。
調べてみると、東京リージョンでもバケットポリシーにログ配信サービスを指定できるようになっていました。

小さな発見ではありますが、同じように気づいていない方もいらっしゃるかもしれないと思い、共有させていただきます。

ドキュメントの記述について

まず日本語版ドキュメントですが、
リージョンが利用可能になった時期によって、バケットポリシーの記述方法が2種類記載されています。

https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/enable-access-logging.html

東京リージョンは「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を許可する方式はレガシーバケットポリシーと呼ばれているようで、
現在ではログ配信サービスを指定する方式が推奨されているようです。

https://docs.aws.amazon.com/elasticloadbalancing/latest/application/enable-access-logging.html

設定してみた

というわけで実際に東京リージョンでログ配信サービスを指定する方式を設定してみました。

			
			{
  "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 というサービスプリンシパルをすべてのリージョンで共通して使用できるため、テンプレート化やコード管理がしやすくなります。

かなり細かい変更点ではありますが、運用効率の向上につながる改善だと思いますので、
これから新規で設定する際や既存の設定を見直す機会があれば、ぜひ新しい方式を検討してみてください。

この記事をシェアする

FacebookHatena blogX

関連記事

【小ネタ】東京リージョンでALBアクセスログ用のS3バケットポリシーにログ配信サービスを指定できるようになっていました。 | DevelopersIO