S3のバケット名、もう奪い合わなくていい? AWSが命名ルールを変更
AWS は Amazon S3 の汎用バケットに
「アカウントリージョン名前空間(Account-Regional Namespace)」を導入しました。
このアップデートにより、これまで必要だった グローバルに一意なバケット名を探す必要がなくなり、S3 のバケット命名や運用が大きく簡素化されます。
ただ、私も勘違いしていたのですが、
結論から言うと、「バケット名がグローバルに一意でなくてもよくなった」というわけではありません。
そもそも何が問題だったの?
AWS の S3 にファイルを保存するとき、「バケット」 という入れ物を作る必要があります。
このバケットに名前をつけるのですが、これが地味に大変でした。
なぜかというと、バケット名は世界中で一つしか使えないルールがあるからです。
たとえば mybucket という名前は、世界のどこかの誰かがすでに使っていれば、自分では使えません。人気のある名前は軒並み取られていて、チームやプロジェクトが増えるたびに「名前どうしよう…」という問題が起きていました。
これまでは以下の様に世界のどこかですでに使われている名前は使えませんでした。

「アカウントリージョン名前空間」 という仕組みで、一言でいうと:
バケット名の後ろに「自分のアカウント ID + リージョン名」が自動でつく というものです。
これにより、自分専用の名前空間が確保されます。
どうやって使うの?
コンソールから使う場合S3 コンソールで「バケットを作成」をクリック
- 「アカウントのリージョナル名前空間」 を選ぶ
- 好きな名前を入力 → 作成!

新機能を使って mybucket という名前でバケットを作ると、実際のバケット名はこうなります:
mybucket-123456789012-us-east-1-an
^^^^^^^^^^^^ ^^^^^^^^^
アカウントID リージョン名

|
パーツ |
内容 |
|
123456789012 |
自分の AWS アカウント ID |
|
us-east-1 |
バケットを作成したリージョン |
|
an |
Account Namespace の略。名前空間バケットであることを示す印 |
何がうれしいの? 3つのメリット
● 好きな名前が必ず使える
data、logs、backup など、シンプルでわかりやすい名前でも競合なしで使えます。
● 複数リージョンで名前がそろえられる
東京リージョンでも、バージニアリージョンでも、同じプレフィックスで統一したバケット名を作れます。
data-123456789012-ap-northeast-1-an ← 東京
data-123456789012-us-east-1-an ← バージニア
● 会社全体で命名ルールを強制できる
セキュリティチームが IAM ポリシーや SCP(組織単位のポリシー)を設定することで、「必ずアカウント名前空間内に作ること」 というルールを全員に適用できます。
S3 を日常的に使っている方にとっては、地味だけど確実にうれしい改善です。
特に複数チームで運用している場合や、リージョンをまたいだシステムを管理している方にとっては恩恵が大きいのではないでしょうか?
よく考えたら、結局グローバルで一意じゃない?
フルバケット名(プレフィックス + サフィックス)は、結局のところ世界で一意です。根本的なルールは変わっていません。
変わったのは「一意性をユーザーが自分で考えなくていい」という点です。
このバケット名使われへんのかい!のひと手間がなくなる感じですね。
つまり新機能の本質は「グローバル一意でなくなった」ではなく、
「一意性をユーザーが考えなくていいようになった」
ということです。
AWS新機能が解決したのは「考える手間」だった
自分のアカウント ID とリージョンが後ろにつく時点で衝突は起きないので、プレフィックスは自由に好きな名前を使えるようになっただけっぽいですね。