Amazon S3でバケット名が被らない!?新機能「Account regional namespaces」を試してみた

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

こんにちは!ES課の濱岡です!

最近暖かくなりましたね! そろそろ花見をしようかなと思う今日この頃です。

さて、今回はAmazon S3のちょっと嬉しい新機能、「Account regional namespaces」についてブログを書いてみました

今回のアップデートに関する公式のAWS News Blogは以下です

aws.amazon.com

S3バケット名の重複に悩まされたことはありませんか?

みなさんは、新しくプロジェクトを始めるときにS3バケットを作ろうとして、「指定したバケット名は既に存在しています」というエラーに遭遇したことはありませんか?

これまでのS3バケットは、世界中のすべてのAWSユーザーの中で一意である必要がありました。そのため、シンプルでわかりやすい名前をつけようと思っても、すでに他の誰かに使われていて泣く泣く複雑な名前にした…という経験があるのではないでしょうか?

今回の新機能、結局何が嬉しいの?

そんな悩みを解決してくれるのが、今回登場した「Account regional namespaces」です! 一言でいうと、「自分のAWSアカウントとリージョン専用サフィックスを自動的につけて、自由にバケットが作れるようになった!」ということです。 具体的には、自分がつけたいバケット名(プレフィックス)を指定するだけで、その後ろに自動的に「アカウントID」と「リージョン名」、そして専用のサフィックがくっついた名前になります。 たとえば、「mybucket」という名前を指定して東京リージョン(ap-northeast-1)で作ると、実際の名前は以下のようになります

mybucket-123456789012-ap-northeast-1-an

これなら、他のアカウントの人と同じ「mybucket」という名前を使おうとしても、後ろに専用のサフィックスが付与されるので、名前が被らなくなります! また、別のアカウントが自分のアカウントのサフィックスを使用してバケットを作成しようとするとそれは自動的に拒否されるようになっています。

どうやって使うの?

それでは、実際にどうやって作るのかを見ていきましょう!

マネジメントコンソールで作る場合

コンソール画面からの操作はとっても簡単です! 1. Amazon S3のコンソール画面を開き、[バケットを作成] を押下します。 2. バケットを作成する画面で、新しく追加された [Account regional namespace] を選択します。 3. 自分がつけたい名前を入力して作成します。

これだけで、世界中の名前被りを気にせず、簡単にバケットが作れちゃいます。

CloudFormationで作る場合(IaC)

AWS CloudFormation(インフラをコードで管理するサービス)を使っている方も多いですよね。 こちらも設定がとても簡単です! BucketNamePrefixという項目に好きな名前を指定し、今回の新機能を利用するための必須プロパティである BucketNamespace: "account-regional" を追加するだけで、自動的にアカウントIDやリージョンをくっつけて作成してくれます。 YAML形式で書くと以下のようになります。

Type: AWS::S3::Bucket
Properties:
  BucketNamePrefix: mybucket
  BucketNamespace:  "account-regional"

詳細は以下のドキュメントをご確認ください

docs.aws.amazon.com

ちょっとした注意点

とても便利な機能ですが、いくつか気をつけておきたいポイントもあります。

  • 対象は汎用バケットのみです
  • 既存のバケットの名前は変更できません
    • すでに作ってある従来Amazon S3バケットを、この新しい形式に変更することはできません。

まとめ

これからはバケットの命名規則に悩まされる時間が減りそうですね! さらに、組織の管理者側で「これからはAccount regional namespacesでしかバケットを作れないようにする」といった制限(IAMポリシーなど)をかけることもできるので、セキュリティや運用ルールの統一もグッと楽になるのではないでしょうか!

みなさまのお役に立てれば幸いです!

以上、濱岡でした!

はまおか(執筆記事の一覧)

アプリケーションサービス部

プログラムを書くことが好きです