🤫

AWS S3のバケット作成で名前がなぜか重複エラーが出る件

2024/08/28に公開

経緯

実務でS3を触ることになったから、先に色々触っておかないとなー。まずはデータを保存する場所(バケット)を適当な名前で作成してと、、、

あれ、バリデーション引っかかった。どこだろ

作った記憶なんて全くないのに🤖

hogehogeがなぜか重複している

rootアカウントや他のIAMユーザーでもバケットを作ってない。
AWS公式では全AWSアカウントで一意と書いてあったのは見たし、自分の持ってるアカウントの中の全ユーザ確認したけど重複はなかった(そもそもバケット作ったの初めてだし)。
なぜ...?

世界中の全部のAWSアカウントのことだった (解決)

こちらの記事に理由も含めて分かりやすく解説してくれてました。本当に感謝です。

〇〇名とか聞くと人名とか重複しうるものをイメージしたので、これを世界中で一意はないだろうと勝手に考えてしまいましたね。
思いこみ、よくない。

この後hogeで探ってたら無事作成できました、良かった。

おまけ

名前の重複って、作成ボタンを押すまで分からないんですか?となった方。AWS CLI(or SDK)でチェックできます。詳細は自分が調べてて分かりやすい記事があったので共有しておきます。

公式のサンプルコードをいじって、自分がよく使うSDKだとこんな感じです。

import { S3Client, HeadBucketCommand } from "@aws-sdk/client-s3"; // ES Modules import
// const { S3Client, HeadBucketCommand } = require("@aws-sdk/client-s3"); // CommonJS import
const client = new S3Client(config); // configは確か{region: "ap-northeast-1"}みたいな

const command = new HeadBucketCommand({
  Bucket: "hogehogehogehogehoge"
});
const response = await client.send(command);

もし指定のバケット名が誰かに使われてて自分がアクセスできないと、responseの中のステータスコードが400系になります。詳細は公式に説明があるので気になる方はこちらを一読してみてください。

参考

https://qiita.com/tako_tako/items/e815cfac0e3e73d12795
https://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/defining-bucket-names-data-lakes/faq.html

Discussion