ALBのS3ログ配信でリージョン別アカウントIDが不要になった話

記事タイトルとURLをコピーする

はじめに

ALBのアクセスログをS3に配信する際、これまでリージョンごとに異なるAWSアカウントIDをバケットポリシーに記述する必要がありました。しかし、2025年9月10日のアップデートでlogdelivery.elasticloadbalancing.amazonaws.comというサービスプリンシパルを使用することで、全リージョン共通のポリシーが利用できるようになっています。

この変更により、マルチリージョン環境での運用が簡素化されます。

何が変わったのか

2025年9月10日より前の書き方を旧方式、それ以降、つまり今回のアップデートで利用できるようになった書き方については新方式としてどう変わったのかを説明します。

旧方式:リージョン別アカウントID指定

旧方式では、ALBのアクセスログをS3に配信するために、リージョンごとに異なるAWSアカウントIDをバケットポリシーに記述する必要がありました。

例えば東京リージョン(ap-northeast-1)の場合は以下のようになります。

{
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::582318560864:root"
    },
    "Action": "s3:PutObject",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/prefix/AWSLogs/123456789012/*"
}

582318560864はリージョンごとに異なります。リージョンが異なる場合は都度アカウントIDを調べたり、CloudFormationを利用する際はマッピングなどでリージョンを判断する書き方をする必要がありました。

新方式:サービスプリンシパル指定

新方式では、全リージョン共通のサービスプリンシパルが利用可能になりました:

{
    "Effect": "Allow",
    "Principal": {
        "Service": "logdelivery.elasticloadbalancing.amazonaws.com"
    },
    "Action": "s3:PutObject",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/prefix/AWSLogs/123456789012/*"
}

なお、新方式と呼んではいますが、2022年8月以降に利用可能となった新しめのリージョンでは、サービスプリンシパル指定によるポリシーの記述も可能でした。今回のアップデートで全リージョンで利用できるようになった形となります。

主な改善点

すべてのリージョンで新方式の記述が可能になったことにより、以下の点が改善されます。

  • リージョン依存の解消:どのリージョンでも同じポリシーが使用可能です
  • 管理の簡素化:リージョンごとのアカウントIDを調べる必要がありません
  • テンプレート化:Infrastructure as Codeでの管理が容易になります

既存環境への影響

旧方式も引き続きサポートされています。運用中の環境の急な変更は不要です。

まとめ

ALBのS3ログ配信において、リージョンに依存しないバケットポリシーが記述できるようになりました。

新規でALBのログ配信を設定する際は、ぜひ新方式を活用してください。

参考

ドキュメントでもおすすめされています。

以前は、2022 年 8 月より前に利用可能であったリージョンでは、リージョンに固有の Elastic Load Balancing アカウントにアクセス許可を付与するポリシーが必要でした。このレガシーポリシーは引き続きサポートされていますが、上記の新しいポリシーに置き換えることをお勧めします。レガシーポリシー (ここには示されていません) を引き続き使用してもかまいません。

Application Load Balancer のアクセスログを有効にする - Elastic Load Balancing

石田順一(記事一覧)

カスタマーサクセス部 CS3課