【小ネタ】S3 API における「Owner.DisplayName」ってなんだろう。
はじめに
皆様こんにちは、あかいけです。
先日AWS Health Dashboardにて、S3に関連する特定のAPIについて通知がありました。
2025 年 11 月 21 日より Owner.DisplayName がレスポンスに含まれなくなるとのことです。
以下は通知内容です。
2025 年 11 月 21 日をもって、 Amazon Simple Storage Service (Amazon S3) はすべてのリクエストレスポンスについて Owner.DisplayName を返却しなくなります。
Owner.DisplayName は、AWS アカウント ID と IAM ARN に置き換えられたため、多くのモダンなアプリケーションでは使用されていないレガシーフィールドです。
2025 年 11 月 21 日まで、S3 はリクエストレスポンスからこのフィールドを徐々に削除します。
この日付を過ぎると、Amazon S3 に対して行われたリクエストに対して Owner.DisplayName が全く返されなくなります。
Owner.DisplayName パラメータは、8 個の AWS リージョンの 8 個の Amazon S3 API でのみサポートされています。
オブジェクトの所有権を確認するためにこの動作に依存するアプリケーションがある場合は、Owner.DisplayName の代わりに、正規 ID (AWS アカウントの一意の識別子)、AWS アカウント ID (12 桁の識別子)、または IAM ARN (完全なリソース名) を使用することをおすすめします。
この変更は次の AWS リージョンに影響します。:
US-EAST-1 リージョン、US-WEST-1 リージョン、US-WEST-2 リージョン、AP-SOUTHEAST-1 リージョン、AP-SOUTHEAST-2 リージョン、AP-NORTHEAST-1 リージョン、EU-WEST-1 リージョン、SA-EAST-1 リージョン
これは S3 ドキュメント [1] でも説明されています。
重要な日程:
* 今から 2025 年 11 月 21 日まで: S3 は Owner.DisplayName の返却を徐々に停止します。
* 2025 年 11 月 21 日以降: Owner.DisplayName は、どの AWS リージョンでも Amazon S3 へのすべてのリクエストで返却されなくなります。
推奨するアクション:
1. レスポンスの一部として Owner.DisplayName 属性を返す以下の API を確認し、ユーザーがすべての参照を完全に削除していることを確認します。
REST.GET.ACL - GetBucketAcl, GetObjectAcl
REST.GET.BUCKET - ListObjects
REST.GET.BUCKETVERSIONS - ListObjectVersions
REST.GET.LOGGING_STATUS - GetBucketLogging
REST.GET.SERVICE - ListBuckets
REST.GET.UPLOAD - ListParts
REST.GET.UPLOADS - ListMultipartUploads
REST.PUT.BUCKET - CreateBucket
2. Owner.DisplayName 属性の代わりに正規 ID を使用するようにアプリケーションを更新します。
3. Owner.DisplayName 属性 [2] [3] が見つからない場合の適切なエラー処理を実装します。
4. Owner.DisplayName 属性をレスポンスから削除されたときのアプリケーションをテストします。
5. 正規 ID を使用して所有者の確認を行います。
6. Owner.DisplayName 属性を参照するランブックとアプリケーションを確認して更新してください。
ご質問やご不明点等ございましたら、AWS サポート [4] までお問い合わせください。
[1] https://docs.aws.amazon.com/AmazonS3/latest/API/API_Owner.html
[2] https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html
[3] https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/troubleshoot-403-errors.html
[4] https://aws.amazon.com/support
で、この「Owner.DisplayName」について通知内容だけだといまいち何に紐づいているのかわからなかったので、調べてみました。
結論
「Owner.DisplayName」 は 「バケットやオブジェクトの所有者」 を表しています。
マネジメントコンソールで見ると、以下の部分が該当します。
確認方法
ドキュメント
まずはドキュメントで確認してみます。
owner's display name and ID
とのことなので、
おそらく所有者に関連した情報かな?ということがわかります。
Container for the owner's display name and ID.
ただこれ以上の情報がないので、いまいち何を指しているかわかりません…。
コマンド
次に実際のコマンドのレスポンスを確かめてみます。
以下はバケット内のオブジェクトの一覧を表示するコマンドです。
(Owner.DisplayName と Owner.ID は念のため隠しています)
- 東京リージョン
$ aws s3api list-objects --bucket test-bucket-nandesu-tokyo
{
"Contents": [
{
"Key": "sample.txt",
"LastModified": "2025-09-01T08:50:19+00:00",
"ETag": "\"d41d8cd98f00b204e9800998ecf8427e\"",
"ChecksumAlgorithm": [
"CRC64NVME"
],
"ChecksumType": "FULL_OBJECT",
"Size": 0,
"StorageClass": "STANDARD",
"Owner": {
"DisplayName": "XXXXXXXXXXXXX",
"ID": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
}
],
"RequestCharged": null,
"Prefix": ""
}
- 大阪リージョン
$ aws s3api list-objects --bucket test-bucket-nandesu-osaka
{
"Contents": [
{
"Key": "sample.txt",
"LastModified": "2025-09-01T08:50:25+00:00",
"ETag": "\"d41d8cd98f00b204e9800998ecf8427e\"",
"ChecksumAlgorithm": [
"CRC64NVME"
],
"ChecksumType": "FULL_OBJECT",
"Size": 0,
"StorageClass": "STANDARD",
"Owner": {
"ID": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
}
],
"RequestCharged": null,
"Prefix": ""
}
元々Owner.DisplayNameが表示されない大阪リージョンと比較すると、
東京リージョンのOwner.DisplayNameは存在することが確認できます。
これが最終的には大阪リージョン同様に、レスポンスに含まれなくなると考えられます。
またマネジメントコンソールにて確認してみると、
Owner.DisplayNameはオブジェクトの所有者と値が合致します。
さいごに
以上、S3 API における「Owner.DisplayName」の正体についてでした。
所有者を表すパラメータなので、そもそもこの値を参照するようなことはあまりないと思いますが、
アプリ側の実装に関わる部分なので、実際に調査するとなるとちょっと面倒ですね…。
幸い2025 年 11 月 21 日とまだ若干遠い日付なので、早めに確認しておきましょう。