[アップデート] Amazon S3のサーバーアクセスログにソースリージョン情報が追加されました

[アップデート] Amazon S3のサーバーアクセスログにソースリージョン情報が追加されました

サーバーアクセスログの末尾にソースリージョン情報が追加されて、リージョン情報把握が簡単に。ログ形式に依存している処理などは変更必須なケースも。
2026.02.27

はじめに

おのやんです。

Amazon S3(以下、S3)のサーバーアクセスログにて、リクエスト元のAWSリージョン情報(ソースリージョン)が記録されるようになりました。

https://aws.amazon.com/jp/about-aws/whats-new/2026/02/amazon-s3-source-region-information/

もともとS3のサーバーアクセスログにはリクエスト元のIPアドレスなどは記録されていましたが、どのAWSリージョンから来たリクエストなのかは記録されていませんでした。それが、今回追加されたSource regionフィールドによって、リクエストが発生したAWSリージョンを特定できるようになっています。

サンプルとして、公式ドキュメント(Amazon S3 server access log format - Amazon Simple Storage Service)に載っているログを載せておきます。末尾にソースリージョンが記載されているのがわかります。

※ 記事執筆時点で、日本語版ドキュメントには反映されていませんでした。

79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 3E57427F3EXAMPLE REST.GET.VERSIONING - "GET /amzn-s3-demo-bucket1?versioning HTTP/1.1" 200 - 113 - 7 - "-" "S3Console/0.4" - s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 arn:aws:s3:us-west-1:123456789012:accesspoint/example-AP Yes us-east-1
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 891CE47D2EXAMPLE REST.GET.LOGGING_STATUS - "GET /amzn-s3-demo-bucket1?logging HTTP/1.1" 200 - 242 - 11 - "-" "S3Console/0.4" - 9vKBE6vMhrNiWHZmb2L0mXOcqPGzQOI5XLnCtZNPxev+Hf+7tpT6sxDwDty4LHBUOZJG96N1234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - - us-east-1
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be A1206F460EXAMPLE REST.GET.BUCKETPOLICY - "GET /amzn-s3-demo-bucket1?policy HTTP/1.1" 404 NoSuchBucketPolicy 297 - 38 - "-" "S3Console/0.4" - BNaBsXZQQDbssi6xMBdBU2sLt+Yf5kZDmeBUP35sFoKa3sLLeMC78iwEIWxs99CRUrbS4n11234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - Yes us-east-1
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:01:00 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 7B4A0FABBEXAMPLE REST.GET.VERSIONING - "GET /amzn-s3-demo-bucket1?versioning HTTP/1.1" 200 - 113 - 33 - "-" "S3Console/0.4" - Ke1bUcazaN1jWuUlPJaxF64cQVpUEhoZKEG/hmy/gijN/I1DeWqDfFvnpybfEseEME/u7ME1234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - - us-east-1
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:01:57 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be DD6CC733AEXAMPLE REST.PUT.OBJECT s3-dg.pdf "PUT /amzn-s3-demo-bucket1/s3-dg.pdf HTTP/1.1" 200 - - 4406583 41754 28 "-" "S3Console/0.4" - 10S62Zv81kBW7BB6SX4XJ48o6kpcl6LPwEoizZQQxJd5qDSCTLX0TgS37kYUBKQW3+bPdrg1234= SigV4 ECDHE-RSA-AES128-SHA AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - Yes us-east-1

なお、ソースリージョンが特定できないケースでは、フィールドに-(ハイフン)が記録されます。

This field shows a dash (-) when the origin region cannot be determined (such as PrivateLink connections, Direct Connect connections, Bring your own IP addresses (BYOIP), or non-AWS IP addresses) or when the log is generated by operations triggered based on customer-set policies or actions, such as lifecycle and checksum.

https://docs.aws.amazon.com/AmazonS3/latest/userguide/LogFormat.html

単純にログの形式が変わる訳なので、たとえば「取得したログを特定の書式に整形してから別のサーバーに保存する」みたいなシステムを運用している場合は、整形処理を変更したり、追加の対応が必要になるケースもありそうです。

実際にやってみた

ということで、実際にやってみます。今回はAWS CloudShell(以下、CloudShell)からS3にアクセスし、サーバーアクセスログを発行してから、ソースリージョンフィールドを実際に確認してみます。

まず検証用のS3バケットを2つ作成します。1つはアクセス対象のバケット、もう1つはログの配送先となるバケットです。

検証用の、アクセス元のS3バケットと、ログの配送先となるS3バケット

アクセス対象バケットのサーバーアクセスログを有効化し、ログをもう一方のバケットへ配送するよう設定します。

アクセス元のS3バケットのサーバーアクセスログ設定

ログ配送先バケットのバケットポリシーを編集します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "S3ServerAccessLogsPolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "logging.s3.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::aws-test-bucket-logs-s3-source-region-123456789012/logs/*",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:s3:::aws-test-bucket-s3-source-region-123456789012"
                },
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                }
            }
        }
    ]
}

続いて、東京リージョンのCloudShellからS3のコマンドを叩いてみます。

# オブジェクトをアップロード
aws s3api put-object \
  --bucket aws-test-bucket-s3-source-region-123456789012 \
  --key test.txt \
  --body test.txt

# オブジェクトを取得
aws s3api get-object \
  --bucket aws-test-bucket-s3-source-region-123456789012 \
  --key test.txt \
  /tmp/downloaded-test.txt

# バケット内のオブジェクト一覧の取得
aws s3api list-objects-v2 \
  --bucket aws-test-bucket-s3-source-region-123456789012

しばらく待ってからログを確認してみます。こちらがオブジェクトをアップロード(s3api put-object)した時のログです。末尾のリージョン情報は確認できず、ハイフン(-)になっています。

abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234 aws-test-bucket-s3-source-region-123456789012 [27/Feb/2026:02:51:57 +0000] 3.112.200.24 arn:aws:sts::123456789012:assumed-role/example-user/example-user 63W9228NE53AM2ED REST.PUT.OBJECT test.txt "PUT /test.txt HTTP/1.1" 200 - - 5 39 19 "-" "aws-cli/2.33.28 md/awscrt#0.31.2 ua/2.1 os/linux#6.1.161-183.298.amzn2023.x86_64 md/arch#x86_64 lang/python#3.13.11 md/pyimpl#CPython exec-env/CloudShell m/Z,E,b,W,z cfg/retry-mode#standard md/installer#exe md/distrib#amzn.2023 sid/353222a8c4b2 md/prompt#off md/command#s3api.put-object" - jU4gs1CILqzMBERFk3d8ENtYZUzxFIoa50vWSfpm1PCfQ1q//lBdv+6ySbluqNovC0gGSRZNteO8IB4rhWg/VbSK9xc5qFlY SigV4 TLS_AES_128_GCM_SHA256 AuthHeader aws-test-bucket-s3-source-region-123456789012.s3.ap-northeast-1.amazonaws.com TLSv1.3 - -

アップデートのページには「今後数週間かけて」とあるので、推測ですが一部のAPIではまだソースリージョンが記録されていないのかな、と思われます。

This feature will be available in all AWS Regions in the coming weeks at no additional cost.

こちらがオブジェクトを取得(s3api get-object)した時のログです。こちらはアップデート通り末尾にap-northeast-1のリージョン情報が確認できます。

abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234 aws-test-bucket-s3-source-region-123456789012 [27/Feb/2026:02:52:07 +0000] 3.112.200.24 arn:aws:sts::123456789012:assumed-role/example-user/example-user 193BTR010HY2WRA8 REST.GET.OBJECT test.txt "GET /test.txt HTTP/1.1" 200 - 5 5 35 34 "-" "aws-cli/2.33.28 md/awscrt#0.31.2 ua/2.1 os/linux#6.1.161-183.298.amzn2023.x86_64 md/arch#x86_64 lang/python#3.13.11 md/pyimpl#CPython exec-env/CloudShell m/E,z,b,Z cfg/retry-mode#standard md/installer#exe md/distrib#amzn.2023 sid/353222a8c4b2 md/prompt#off md/command#s3api.get-object" - YIhpU/fmJYk6WIfrHAVRV01hOdW2/L1LoTGRKRn5hHr0bsupt+7vt8phqqI/pbNKVZIKC0I7QNM= SigV4 TLS_AES_128_GCM_SHA256 AuthHeader aws-test-bucket-s3-source-region-123456789012.s3.ap-northeast-1.amazonaws.com TLSv1.3 - - ap-northeast-1

こちらがオブジェクト一覧を取得(s3api list-objects-v2)した時のログです。末尾のリージョン情報は確認できず、ハイフン(-)になっています。

abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234 aws-test-bucket-s3-source-region-123456789012 [27/Feb/2026:02:52:17 +0000] 3.112.200.24 arn:aws:sts::123456789012:assumed-role/example-user/example-user D6Y9GGFAJ1RDN73A REST.GET.BUCKET - "GET /?list-type=2&encoding-type=url HTTP/1.1" 200 - 597 - 33 32 "-" "aws-cli/2.33.28 md/awscrt#0.31.2 ua/2.1 os/linux#6.1.161-183.298.amzn2023.x86_64 md/arch#x86_64 lang/python#3.13.11 md/pyimpl#CPython exec-env/CloudShell m/E,b,z,Z,C cfg/retry-mode#standard md/installer#exe md/distrib#amzn.2023 sid/353222a8c4b2 md/prompt#off md/command#s3api.list-objects-v2" - 6mWUlGF7dYa40yGUr52WP40LvcGax91qCrslfJgVqKDgB9AJRtG7c6Ga6tgSSIDcBCHb72CF8uo= SigV4 TLS_AES_128_GCM_SHA256 AuthHeader aws-test-bucket-s3-source-region-123456789012.s3.ap-northeast-1.amazonaws.com TLSv1.3 - -

バージニアリージョン(us-east-1)のCloudShellからも同じようにアクセスしてみます。

# us-east-1のCloudShellで実行
aws s3api get-object \
  --bucket aws-test-bucket-s3-source-region-123456789012 \
  --key test.txt \
  /tmp/downloaded-test.txt 

# バケット内のオブジェクト一覧の取得
aws s3api list-objects-v2 \
  --bucket aws-test-bucket-s3-source-region-123456789012

こちらがオブジェクトを取得(s3api get-object)した時のログです。末尾にus-east-1のリージョン情報が確認できます。

abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234 aws-test-bucket-s3-source-region-123456789012 [27/Feb/2026:07:39:08 +0000] 44.193.202.243 arn:aws:sts::123456789012:assumed-role/example-user/example-user MVJ3ZBSGCVM5MHSQ REST.GET.OBJECT test.txt "GET /test.txt HTTP/1.1" 200 - 5 5 30 29 "-" "aws-cli/2.33.23 md/awscrt#0.31.1 ua/2.1 os/linux#6.1.161-183.298.amzn2023.x86_64 md/arch#x86_64 lang/python#3.13.11 md/pyimpl#CPython exec-env/CloudShell m/E,z,b,Z cfg/retry-mode#standard md/installer#exe md/distrib#amzn.2023 md/prompt#off md/command#s3api.get-object" - 6dAleS9zAdldzDflAyct24Pwv4ECKojTNoUxJclJzuVA0KVTroTH8T+W6uL+yBXyMDwjBal4e3/62xePZjaZ0Uk89j3Uxuab SigV4 TLS_AES_128_GCM_SHA256 AuthHeader aws-test-bucket-s3-source-region-123456789012.s3.ap-northeast-1.amazonaws.com TLSv1.3 - - us-east-1

こちらがオブジェクト一覧を取得(s3api list-objects-v2)した時のログです。末尾にus-east-1のリージョン情報が確認できます。

abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234 aws-test-bucket-s3-source-region-123456789012 [27/Feb/2026:07:39:18 +0000] 44.193.202.243 arn:aws:sts::123456789012:assumed-role/example-user/example-user V2SP5E5SZ958TBJ3 REST.GET.BUCKET - "GET /?list-type=2&encoding-type=url HTTP/1.1" 200 - 597 - 29 29 "-" "aws-cli/2.33.23 md/awscrt#0.31.1 ua/2.1 os/linux#6.1.161-183.298.amzn2023.x86_64 md/arch#x86_64 lang/python#3.13.11 md/pyimpl#CPython exec-env/CloudShell m/C,b,E,Z,z cfg/retry-mode#standard md/installer#exe md/distrib#amzn.2023 md/prompt#off md/command#s3api.list-objects-v2" - JIp03howdij1EBWHZVRxN0c/YiwoxgFgmYAnW8CZ1JBEOJ3Y1ePaJVXnabwtNdFg940Kg2iaXNzCNYNmUa7CzEOnO5eQiVZU SigV4 TLS_AES_128_GCM_SHA256 AuthHeader aws-test-bucket-s3-source-region-123456789012.s3.ap-northeast-1.amazonaws.com TLSv1.3 - - us-east-1

まとめ

S3サーバーアクセスログの形式が変更され、ソースリージョンフィールドが新しく追加されました。ログから直接リージョンを参照できるようになったほか、要件によっては追加で対応が必要になるケースもありますので、ドキュメントなどを参考に確認をお願いします。では!

この記事をシェアする

FacebookHatena blogX

関連記事