3秒でわかる
Amazon S3 でファイルを入れる最上位の入れ物。画像やログをサーバーのディスクから切り離して置くために使い、名前は全世界で一つしか取れません。
30秒図解
もう少し詳しく
どういうものか
バケットは、Amazon S3 に置くオブジェクト(ファイル)を収める一番外側の入れ物です。作るときにリージョンを一つ決め、名前を付けます。この名前は AWS 全体で重複できないため、他の誰かが使っている名前は取れません。
管理画面ではフォルダのような階層が見えますが、S3 に本当のディレクトリはありません。images/2026/logo.png という一続きのキーが付いているだけで、区切り文字を見て階層らしく表示しています。
なぜ必要か
アップロードされた画像や生成した PDF をアプリサーバーのディスクに置くと、三つの問題が同時に来ます。サーバーを 2 台に増やした瞬間、片方にしかファイルが無い状態になること。ディスク容量の上限が来ること。サーバーを作り直したらファイルごと消えること。
バケットは容量を気にせず置けて、複数台のサーバーから同じ URL で読めて、サーバーを捨てても残ります。CDN をかぶせて配信したり、期限付きの署名 URL で本人だけにダウンロードさせたりする使い方も、置き場所が独立しているから成り立ちます。
具体例
# バケットを作る(名前は全世界で一意)
aws s3api create-bucket --bucket harenohi-assets-2026 \
--region ap-northeast-1 \
--create-bucket-configuration LocationConstraint=ap-northeast-1
# 意図しない公開を止める(作成直後に必ず入れる)
aws s3api put-public-access-block --bucket harenohi-assets-2026 \
--public-access-block-configuration \
"BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true"
# アップロードと一覧
aws s3 cp ./logo.png s3://harenohi-assets-2026/images/2026/logo.png
aws s3 ls s3://harenohi-assets-2026/images/ --recursive
# 15分だけ有効なダウンロード用 URL を発行する
aws s3 presign s3://harenohi-assets-2026/images/2026/logo.png --expires-in 900つまずきやすいところ
事故として最も多いのが意図しない公開です。個人情報を含む CSV が誰でも読める状態だった、という報道の多くがこれにあたります。パブリックアクセスのブロックを既定で有効にしたまま、必要な公開だけを CDN 経由に限定するのが安全側の設計です。
権限は、バケット側のポリシーと利用者側の IAM ポリシーの両方で許可されて初めて通ります。片方だけ直して「設定したのに 403 のままだ」と止まるのが定番のつまずきです。
削除も一手間あります。中身が残っているバケットは消せません。バージョニングを有効にしている場合は、古いバージョンと削除マーカーまで消さないと空になりません。加えて、バケットのリージョンと利用側のリージョンがずれていると、通信料と遅延が余計にかかります。
似た用語との違い
| 用語 | 指すもの |
|---|---|
| バケット | オブジェクトを入れる最上位の入れ物 |
| オブジェクト | 実体のファイルとメタデータの組 |
| キー | バケット内でオブジェクトを一意に指す名前 |
| プレフィックス | キーの先頭部分。フォルダのように見える箇所 |
なお、ハッシュテーブルの解説に出てくる「バケット」は同じ語の別概念で、値を振り分ける格納先を指します。
覚え方
そのままバケツです。リージョンという場所に一つ置いた、名前入りのバケツにファイルを放り込む絵で覚えます。