きっかけ
S3を使ってCDNの機能を作る時にバケットを作成するが、IAMの情報でS3のバケットにアクセスするのにそのバケット名がグローバルで一意にならなければいけない理由がわからなかったのでまとめました。
s3のバケット名の概要
グローバルな名前空間:
S3のバケットはグローバルに一意な名前空間を持ちます。つまり、S3に作成された全てのバケット名は、AWSの全リージョンにわたって一意である必要があります。これにより、どの地域からでも特定のバケットにアクセスしやすくなります。
DNSに基づいたアドレッシング:
S3バケットはDNS(ドメインネームシステム)に基づいてアドレス指定されます。バケット名がURLの一部として使用されるため、一意でなければなりません。例えば、バケット名が my-unique-bucket であれば、そのバケットのURLは my-unique-bucket.s3.amazonaws.com になります。
シンプルな管理とアクセス:
一意のバケット名により、開発者や管理者は特定のバケットに簡単にアクセスし、管理できます。名前が重複すると、どのバケットがどのユーザーに属しているのかを区別することが難しくなります。
セキュリティとプライバシーの確保:
一意のバケット名は、名前の衝突や誤ったデータアクセスを防ぐのに役立ちます。これにより、ユーザー間でのデータの混在や不正アクセスを防ぐことができます。
まとめ
IAMの情報はあくまでS3にアクセスできるか否かを定義するもので、s3のバケット名はDNSでURLの一部になるためグローバルで一意にならなければいけないことがわかりました。