クラウド
Amazon S3とは?バケットとオブジェクトの仕組み、料金と公開設定
シリーズAWS 入門全8回
- Amazon S3
- バケット
- オブジェクトストレージ
- クラウド
- AWS
- オブジェクト
- キー
- プレフィックス
- ストレージクラス
- ライフサイクル
- S3 Glacier
- Intelligent-Tiering
- ブロックパブリックアクセス
- バケットポリシー
- 署名付き URL
- バージョニング
- 強い整合性
- CloudFront
- 料金
- Well-Architected
目次
Amazon S3(Simple Storage Service)は、AWS のオブジェクトストレージのサービスである1。オブジェクトストレージは、ファイルを、それを説明する情報(メタデータ)と一組にして「オブジェクト」として保存する仕組みで、S3 ではオブジェクトをバケットという入れ物に入れる1。バケットは、名前と、リージョン(AWS が設備を置く地域)を決めて作る1。
S3 は 2006 年 3 月(14 日、米国時間)に公開された2。S3 の VP でディスティングイッシュトエンジニアの Andy Warfield は、2025 年の寄稿で、S3 を AWS が一般に出した最初のサービスだと書いている3。AWS は、S3 のデータの耐久性を 99.999999999%(イレブンナイン)を超えるように設計しており、一つのゾーンにだけ置く一部のクラスを除いて、既定では少なくとも三つのアベイラビリティーゾーン(リージョンの中で互いに離れたデータセンターの群)にデータを分けて保存する4。
S3 とは何で、データをどんな形で置くのか。料金は何で決まるのか。バケットの中身を外に渡すとき、何に気をつければよいのか。
S3 は、バケットの中に、キーで名前を付けたオブジェクトを置くストレージである。料金は、保存した量と期間、ストレージクラス、リクエストの回数、外へのデータ転送で決まる。S3 のバケットとオブジェクトは、もともと既定で非公開である。2017 年には公開の設定の誤りによるデータの露出が相次いで報告された。AWS は 2018 年に公開を遮断する仕組みを加え、2023 年からはそれを新しいバケットの既定にした。AWS は遮断の設定をすべて有効にし、公開のバケットに頼る作りは慎重に決めるよう勧めている。
請求書の PDF を取引先に渡す
※ この節の数値は説明のための仮定で、測定値ではありません。
ある会社の経理の担当者が、取引先に渡す請求書の PDF を S3 に置くことにした。東京リージョンにバケットを作り、2026/10/invoice-1024.pdf というキーで請求書をアップロードした。キーは、バケットの中でオブジェクトを指す名前である1。
- 経理の担当者S31. キー 2026/10/invoice-1024.pdf で請求書を置く
- S3経理の担当者2. 置いた。既定で暗号化した
- 経理の担当者取引先3. オブジェクトの URL を送る
- 取引先S34. URL を開く
- S3取引先5. 拒否する。読む権限が無い
- 経理の担当者取引先6. 開けなかったと聞き、1 時間だけ使える署名付き URL を送り直す
- 取引先S37. 署名付き URL を開く
- S3取引先8. 期限内なので、請求書を返す
オブジェクトには、バケットの名前とキーからなる URL がある。しかし S3 のバケットとオブジェクトは、もともと既定で非公開で、誰かに読む権限を与えない限り、URL を知っていても読めない5。
署名付き URL は、担当者が自分の権限で作る、期限付きの URL である。バケットの設定を変えずに、決まったオブジェクトを期限まで読ませられる6。担当者は、バケットを公開に切り替えるのではなく、この URL で一つの請求書だけを渡した。
コンソール(AWS をブラウザから操作する画面)では、2026 と 10 というフォルダーの中に請求書があるように見える。しかし S3 のバケットに階層は無く、「2026/10/」はキーの先頭の文字列(プレフィックス)である7。
バケットとオブジェクトとキー
S3 のデータは、階層の無いフラットな構造で置かれる。バケットを作り、そこにオブジェクトを置く。バケットの中にバケットやフォルダーの階層は無く、キーの先頭の文字列と「/」の区切りで、階層があるように扱う7。オブジェクトは、ファイルとそれを説明するメタデータの組で、バケットはオブジェクトの入れ物である1。
バケットの名前は、既定では、同じ区分の中のすべてのアカウントとリージョンで一つだけでなければならない。区分は、通常のリージョン全体と、中国や米国政府向けなどのリージョンに分かれている8。
S3 は、マネジメントコンソール、コマンドで操作する AWS CLI、プログラムから使う SDK、そして HTTPS で呼ぶ操作の窓口(API)から使える1。2020 年 12 月からは、オブジェクトを書いた直後に読むと、必ず書いた内容が返る(強い整合性)。AWS は「書いたものが、そのまま読める」と説明している9。
料金とストレージクラス
S3 の料金は、主に次のもので決まる10。
- 保存: オブジェクトの大きさ、その月に保存した期間、ストレージクラス。
- リクエスト: 読み書きなどの要求の回数。削除の要求は無料。
- データ転送: S3 から外へ出すデータの量。インターネットから S3 へ入れるデータは無料で、インターネットへ出すデータも、AWS のサービス全体で月に最初の 100 GB までは無料。
- 取り出し: 一部のストレージクラスでは、読み出した量にも料金がかかる。
ストレージクラスは、データを読む頻度に合わせて選ぶ、保存の種類である。読む頻度が低いクラスほど保存の単価は下がるが、最低保存期間と取り出しの料金がかかる11。
| ストレージクラス | 向く |
|---|---|
| S3 Standard | よく |
| S3 Intelligent-Tiering | 読む頻度が |
| S3 Standard-IA | 月に |
| S3 One Zone-IA | 作り直せる |
| S3 Glacier の | 長く |
最低保存期間より前に消したり別のクラスへ移したりすると、残りの期間の分も料金がかかる1112。
クラスは、ライフサイクルの設定で自動で移せる。ライフサイクルは、オブジェクトの群に対して S3 が行う動作を決めた規則の組で、別のクラスへ移す動作と、期限が来たら消す動作がある13。AWS の Well-Architected フレームワークのコスト最適化の柱も、保存の期間と移し先を決めて自動で移し、消すことで、保存の費用を下げるよう勧めている14。
誰に読ませるか:既定の非公開と、公開の遮断
S3 の中身を誰が読めるかは、主に二つのポリシーで決まる。IAM(AWS の権限の仕組み)のポリシーは、ユーザーやロール(AWS を操作する ID)の側に付けて、何をしてよいかを書く。バケットポリシーは、バケットの側に付けて、そのバケットとオブジェクトに誰が触れるかを書く15。ほかに、バケットやオブジェクトに個別に付ける古い権限の仕組みとして ACL がある16。
既定では誰にも読ませないが、ポリシーや ACL で公開を許す設定を誤って付けると、中身が誰にでも読める。2017 年には、そうした事故が相次いで報告された。セキュリティの会社 UpGuard は、Verizon のパートナー企業、Dow Jones、Accenture のバケットが、外から読める状態になっていたと報告した171819。Dow Jones のバケットは、AWS のアカウントを持つ人なら誰でも読める設定だった18。
AWS は 2018 年に、公開を止める仕組みとして S3 ブロックパブリックアクセスを加えた5。設定は四つあり、アカウント、バケット、アクセスポイント(バケットへの専用の入口)のそれぞれに付けられる20。二つは ACL による公開を止め、残りの二つはバケットポリシーによる公開を止める。
- BlockPublicAcls と IgnorePublicAcls: 公開の ACL を新しく付けさせず、すでに付いている公開の ACL も無視する。
- BlockPublicPolicy と RestrictPublicBuckets: 公開のバケットポリシーを付けさせず、すでに付いている場合も、持ち主のアカウントと AWS のサービスからしか触れなくする。
AWS は、アカウントのすべてのバケットとオブジェクトの公開を確実に止めるため、アカウントで四つすべてを有効にするよう勧めている20。
2023 年には、AWS は既定の設定を変えた。1 月 5 日からは、S3 に新しく置くすべてのオブジェクトを、追加の料金なしで暗号化している。暗号化されていなかった既存のバケットにも既定の暗号化が入ったが、すでに置いてあったオブジェクトは暗号化されない2122。
4 月からは、新しいバケットで、ブロックパブリックアクセスを有効にし、ACL を無効にした状態を既定にし、4 月 27 日までにすべてのリージョンに広げた235。この二つは、変更の前から、コンソールで作るバケットでは既定になっていて、AWS が以前からベストプラクティスとして勧めてきたものだという。AWS は、公開のバケットや ACL に頼る新しいバケットは慎重に考えて作るよう勧め、ほとんどのアプリケーションには、そのどちらも要らないとしている5。Well-Architected のセキュリティの柱も、保存したデータを暗号化と適切なアクセスの制御で守るよう求めている24。
外に渡す方法:署名付き URL、CloudFront、静的サイト
公開の遮断を有効にしたまま中身を外に渡す方法は、主に二つある。
- 署名付き URL: 作った人の権限で、決まったオブジェクトを期限まで読ませる6。ただし、URL を手に入れた人は誰でも、期限までは何度でも使える6。渡す相手と期限を絞って使う。
- CloudFront: AWS のコンテンツ配信のサービスで、利用者の近くの拠点から S3 の中身を配る。バケットポリシーで、自分の CloudFront の配信だけにバケットを読ませれば、バケットそのものは公開しなくてよい25。ただし、配信された中身は、署名付きの URL などで制限を加えなければ、インターネットの誰でも読める。
S3 には、静的なウェブサイトを配る機能もある26。この機能でバケットから直接配るには、バケットを公開して誰でも読めるようにする必要がある2728。また、S3 のウェブサイトの入口は HTTPS に対応していない。AWS は、Amplify Hosting(CloudFront の配信網を使ってサイトを公開する AWS のサービス)か CloudFront を使って配るよう案内している2628。
消したときに戻す:バージョニング
バージョニングは、一つのオブジェクトの複数の版を、同じバケットに残す仕組みである。誤って消したり上書きしたりしたオブジェクトを戻せる。バージョニングを有効にしたバケットでオブジェクトを消すと、S3 は中身を消さずに「削除マーカー」を置く。バージョニングは、既定では無効である。残した古い版も保存の料金の対象になるので、ライフサイクルで古い版を消す規則と組み合わせる29。
データ転送の料金への異論
S3 の料金のうち、外へのデータ転送には異論もある。CDN(コンテンツ配信網)を提供する Cloudflare の Matthew Prince と Nitin Rao は 2021 年に、AWS はデータを入れるより出すほうに高い料金をかけていると書き、顧客をクラウドに閉じ込めるためだと主張した30。Cloudflare は AWS と競合する事業者で、これは同社の主張である。
S3 のバケットは、公開の遮断を有効のまま使う
S3 は、バケットの中に、キーで名前を付けたオブジェクトを置くストレージである。料金は、保存した量と期間、ストレージクラス、リクエスト、外へのデータ転送で決まり、使う頻度の低いデータはライフサイクルで安いクラスへ移せる。
S3 のバケットとオブジェクトは、もともと既定で非公開である。2017 年には公開の設定の誤りによる露出が相次いで報告された。AWS は 2018 年に公開を遮断する仕組みを加え、2023 年からは新しいバケットの既定にした。AWS は四つの遮断の設定をすべて有効にし、公開のバケットに頼る作りは慎重に決めるよう勧めている。決まった相手に渡すなら署名付き URL を、広く配るなら CloudFront を使えば、バケットそのものは公開しなくてよい。
出典30件
-
AWS「What is Amazon S3?」(Amazon S3 ユーザーガイド)2026年10月17日取得. https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html ↩ ↩2 ↩3 ↩4 ↩5 ↩6
-
Jeff Barr「Amazon S3」AWS News Blog、2006年3月14日、2026年10月17日取得. https://aws.amazon.com/blogs/aws/amazon_s3/ ↩
-
Andy Warfield「In S3 simplicity is table stakes」All Things Distributed、2025年3月、2026年10月17日取得. https://www.allthingsdistributed.com/2025/03/in-s3-simplicity-is-table-stakes.html ↩
-
AWS「Amazon S3 Storage Classes」2026年10月17日取得. https://aws.amazon.com/s3/storage-classes/ ↩
-
Jeff Barr「Heads-Up: Amazon S3 Security Changes Are Coming in April of 2023」AWS News Blog、2022年12月13日(2023年4月27日更新)、2026年10月17日取得. https://aws.amazon.com/blogs/aws/heads-up-amazon-s3-security-changes-are-coming-in-april-of-2023/ ↩ ↩2 ↩3 ↩4
-
AWS「Download and upload objects with presigned URLs」(Amazon S3 ユーザーガイド)2026年10月17日取得. https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-presigned-url.html — 期限までは何度でも使える。 ↩ ↩2 ↩3
-
AWS「Naming Amazon S3 objects」(Amazon S3 ユーザーガイド)2026年10月17日取得. https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html ↩ ↩2
-
AWS「General purpose bucket naming rules」(Amazon S3 ユーザーガイド)2026年10月17日取得. https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html — 区分は aws、aws-cn、aws-us-gov など。アカウントだけが使える名前空間を選ぶこともできる。 ↩
-
Jeff Barr「Amazon S3 Update – Strong Read-After-Write Consistency」AWS News Blog、2020年12月1日、2026年10月17日取得. https://aws.amazon.com/blogs/aws/amazon-s3-update-strong-read-after-write-consistency/ ↩
-
AWS「Amazon S3 Pricing」2026年10月17日取得. https://aws.amazon.com/s3/pricing/ ↩
-
AWS「Understanding and managing Amazon S3 storage classes」(Amazon S3 ユーザーガイド)2026年10月17日取得. https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html ↩ ↩2
-
AWS「Transitioning objects using Amazon S3 Lifecycle」(Amazon S3 ユーザーガイド)2026年10月17日取得. https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html ↩
-
AWS「Managing the lifecycle of objects」(Amazon S3 ユーザーガイド)2026年10月17日取得. https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html ↩
-
AWS「COST04-BP05 Enforce data retention policies」(Well-Architected コスト最適化の柱)2026年10月17日取得. https://docs.aws.amazon.com/wellarchitected/latest/cost-optimization-pillar/cost_decomissioning_resources_data_retention.html ↩
-
Kai Zhao ほか「IAM Policies and Bucket Policies and ACLs! Oh, My! (Controlling Access to S3 Resources)」AWS Security Blog、2023年7月7日、2026年10月17日取得. https://aws.amazon.com/blogs/security/iam-policies-and-bucket-policies-and-acls-oh-my-controlling-access-to-s3-resources/ ↩
-
AWS「Controlling ownership of objects and disabling ACLs」(Amazon S3 ユーザーガイド)2026年10月17日取得. https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html ↩
-
UpGuard「Cloud Leak: How A Verizon Partner Exposed Millions of Customer Accounts」2017年7月12日、2026年10月17日取得. https://www.upguard.com/breaches/verizon-cloud-leak ↩
-
UpGuard「Cloud Leak: WSJ Parent Company Dow Jones Exposed Customer Data」2017年7月17日、2026年10月17日取得. https://www.upguard.com/breaches/cloud-leak-dow-jones ↩ ↩2
-
UpGuard「System Shock: How A Cloud Leak Exposed Accenture’s Business」2017年10月10日、2026年10月17日取得. https://www.upguard.com/breaches/cloud-leak-accenture ↩
-
AWS「Blocking public access to your Amazon S3 storage」(Amazon S3 ユーザーガイド)2026年10月17日取得. https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html ↩ ↩2
-
AWS「Amazon S3 now automatically encrypts all new objects」2023年1月5日、2026年10月17日取得. https://aws.amazon.com/about-aws/whats-new/2023/01/amazon-s3-automatically-encrypts-new-objects/ ↩
-
AWS「Default encryption FAQ」(Amazon S3 ユーザーガイド)2026年10月17日取得. https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html ↩
-
AWS「Amazon S3 beginning to apply two security best practices to all new buckets by default」2023年4月5日、2026年10月17日取得. https://aws.amazon.com/about-aws/whats-new/2023/04/amazon-s3-two-security-best-practices-buckets-default/ ↩
-
AWS「Protecting data at rest」(Well-Architected セキュリティの柱)2026年10月17日取得. https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/protecting-data-at-rest.html ↩
-
AWS「Restrict access to an Amazon S3 origin」(Amazon CloudFront デベロッパーガイド)2026年10月17日取得. https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html ↩
-
AWS「Hosting a static website using Amazon S3」(Amazon S3 ユーザーガイド)2026年10月17日取得. https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html ↩ ↩2
-
AWS「Examples of Amazon S3 bucket policies」(Amazon S3 ユーザーガイド)2026年10月17日取得. https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html ↩
-
AWS「Website endpoints」(Amazon S3 ユーザーガイド)2026年10月17日取得. https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteEndpoints.html ↩ ↩2
-
AWS「Retaining multiple versions of objects with S3 Versioning」(Amazon S3 ユーザーガイド)2026年10月17日取得. https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html ↩
-
Matthew Prince、Nitin Rao「AWS’s Egregious Egress」The Cloudflare Blog、2021年7月23日、2026年10月17日取得. https://blog.cloudflare.com/aws-egregious-egress/ — 著者は AWS と競合する Cloudflare の経営陣。 ↩
この記事はAIを使用して執筆されました。内容には誤りが含まれる可能性があります。事実や数字の出典は脚注から確かめられます。