Amazon S3とは?クラウドストレージの基本とS3 Files解説
Amazon S3はクラウドストレージの標準。基本概念・ストレージクラス・コスト管理から、ファイルシステムとしてマウントできる新機能S3 Mountpointまで網羅解説します。
Amazon S3とは?
Amazon S3(Amazon Simple Storage Service)は、Amazon Web Services(AWS)が提供するオブジェクトストレージサービスです。2006年にリリースされたS3は、クラウドコンピューティングの歴史において最も初期から存在し、今なお業界標準として広く利用されているクラウドストレージソリューションです。
Webサイトの静的ファイル配信、バックアップストレージ、ビッグデータ分析のデータレイク、アプリケーションのデータ永続化など、その利用シーンは多岐にわたります。世界中の企業・開発者から信頼され、数百万のアクティブユーザーが利用しているとされています。
本記事では、Amazon S3の基本概念からストレージクラス、料金体系、そしてファイルシステムとして利用できる新機能「Mountpoint for Amazon S3(S3 Files)」まで、網羅的に解説します。
Amazon S3の基本概念
オブジェクトストレージとは
S3は「オブジェクトストレージ」と呼ばれるアーキテクチャを採用しています。従来のファイルストレージ(フォルダ階層でデータを管理)やブロックストレージ(固定サイズのブロック単位で管理)とは異なり、データを「オブジェクト」として一つひとつ独立して保存します。
各オブジェクトには、データ本体(ボディ)とメタデータ、そして一意の識別子(キー)が付与されます。この設計により、非常に大規模なスケーラビリティを実現しています。
バケット(Bucket)
バケットはS3におけるデータの最上位コンテーナです。すべてのオブジェクトは、いずれかのバケットに格納されます。バケット名はグローバルで一意である必要があり、一度作成すると変更できません。
バケットにはリージョン(地理的リージョン)が紐づけられます。たとえば「ap-northeast-1(東京リージョン)」に作成されたバケットは、物理的に東京近郊のデータセンターにデータが保存されます。データの近接性やコンプライアンス要件に応じて、適切なリージョンを選択することが重要です。
オブジェクトとキー
オブジェクトはバケット内の「キー(Key)」によって識別されます。キーはファイルパスに似た文字列ですが、S3は階層的なフォルダ構造を実質的に持たない点が特徴です。
たとえば「photos/2024/vacation.jpg」というキーであっても、S3内部では「photos/2024/vacation.jpg」という1つの文字列として扱われます。「/」は視覚的な区切り文字に過ぎず、実際のフォルダ構造としては存在しません。このため、S3は「フラットなストレージ」とも表現されます。
バージョニングとライフサイクル
S3のバージョニング機能を有効にすると、同一キーのオブジェクトを複数のバージョンとして保持できます。誤った上書きや削除からデータを保護する際に非常に有用です。
ライフサイクルルールを設定すれば、オブジェクトの経過日数やバージョンに基づいて、自動的にストレージクラスを変更したり、オブジェクトを削除したりすることが可能です。コスト最適化のための重要な機能です。
S3の主要機能
高耐久性・高可用性
S3は設計上、年間耐久性99.999999999%(11の9)を提供しています。これは、10億個のオブジェクトを保存した場合、年間で平均1個未満のデータ損失が発生する計算です。データは複数の施設(アベイラビリティゾーン)に自動的に複製されるため、ハードウェア障害や災害にも強い耐性を持ちます。
拡張性とパフォーマンス
S3は事実上無制限のストレージ容量を提供し、データ量の増減に応じて自動的にスケールします。また、パフォーマンス面でも、1秒あたり数千リクエストから数万リクエストまで対応可能で、マルチパートアップロードやMultipart Uploadによる大容量ファイルの効率的な転送にも対応しています。
セキュリティ機能
S3には多層にわたるセキュリティ機能が備わっています。アクセス制御には、バケットポリシー、ACL(アクセスコントロールリスト)、IAMポリシーが利用可能です。すべての通信はHTTPS(TLS)で暗号化され、保存時の暗号化オプションとしてSSE-S3、SSE-KMS、SSE-Cが用意されています。
さらに、S3 Block Public Access機能によって、誤った設定による公開アクセスを防止できます。組織全体でこの機能を有効にすれば、バケットの誤公開リスクを大幅に軽減できます。
S3 Replication
S3のクロスリージョンレプリケーション(CRR)や_same-regionレプリケーション(SRR)を使えば、バケット間でオブジェクトを自動的に複製できます。災害復旧(DR)や、グローバルなユーザーへの低レイテンシ配信、コンプライアンス要件への対応などに活用されます。
S3 Event Notifications
バケットにオブジェクトが作成・削除された際のイベント通知を、Amazon Lambda、Amazon SQS、Amazon SNSに送信できます。これにより、データのアップロードをトリガーとして自動処理を実行するサーバーレスアーキテクチャを構築できます。
S3ストレージクラス:コストとパフォーマンスの最適化
S3には、アクセス頻度やパフォーマンス要件に応じた複数のストレージクラスが用意されています。適切なクラスを選択することで、コストを大幅に削減できます。
S3 Standard
最も一般的なストレージクラスです。頻繁にアクセスされるデータ向けに設計されており、高い耐久性(11の9)と可用性(99.99%)を提供します。データの冗長化は3つのアベイラビリティゾーンにまたがって行われます。
S3 Intelligent-Tiering
アクセスパターンが不明確なデータに最適なクラスです。アクセスパターンを継続的に監視し、90日以内のアクセスがなければ自動的に低コストな層にデータを移動します。月額の監視料はかかりますが、アクセス頻度に応じて最適なコストを自動的に実現します。
S3 Standard-IA(Infrequent Access)
月に数回程度アクセスされるデータ向けです。S3 Standardと同等の耐久性を維持しながら、ストレージコストを削減できます。ただし、取得(GET)コストがS3 Standardよりも高くなるため、アクセス頻度の正確な見込みが必要です。
S3 One Zone-IA
耐久性を3つのアベイラビリティゾーンではなく1つのみに限定することで、さらにコストを削減したクラスです。再作成可能なデータや、コピーを別のリージョンに保持しているデータに向いています。
S3 Glacier Instant Retrieval
アーカイブデータ向けで、ミリ秒単位でデータを取得できます。S3 One Zone-IAよりもさらに低コストですが、最低90日間の保存と、取得コストの上昇を考慮する必要があります。
S3 Glacier Flexible Retrieval
数分から数時間の取得時間を要するアーカイブクラスです。コストはさらに低くなりますが、データの即時取得はできません。バッチ復元リクエストを使用すれば、無料で大量データの復元も可能です。
S3 Glacier Deep Archive
最もコストの低いストレージクラスで、データの復元には12時間以上かかる場合があります。規制上の要件により長期保存が義務付けられているデータや、災害復旧の最終バックアップなどに適しています。
S3 Files:ファイルシステムとしてS3をマウントする新機能
Mountpoint for Amazon S3とは
2024年、AWSは「Mountpoint for Amazon S3」を正式リリースしました。これは、S3バケットをローカルファイルシステムとしてマウントできるオープンソースのファイルクライアントです。これにより、既存のアプリケーションやツールを変更せずに、S3上のデータにファイルシステム風のインターフェースでアクセスできるようになりました。
従来、S3はREST API経由でのアクセスが基本でした。ファイルパスでデータを読み書きする従来のアプリケーションをS3に移行するには、アプリケーションのコードを大幅に変更する必要がありました。Mountpoint for S3は、この課題を解決します。
技術的な仕組み
Mountpoint for S3はFUSE(Filesystem in Userspace)インターフェースを使用して、S3バケットをローカルディレクトリにマウントします。マウント後、ls、cat、cp、mvなどの一般的なコマンドでS3上のデータにアクセスできます。
内部的には、S3 APIを活用してファイル操作をオブジェクト操作に変換します。読み取り操作はS3のGET API、書き込み操作はPUT APIに対応し、ディレクトリの一覧取得はS3のListObjectsV2 APIを使用します。
対応する操作系统とアーキテクチャ
Mountpoint for S3は、Amazon Linux 2、Amazon Linux 2023、Ubuntu、Red Hat Enterprise Linuxなどの主要なLinuxディストリビューションに対応しています。x86_64およびARM64(Graviton)アーキテクチャの両方で動作します。
macOSやWindowsには直接対応していませんが、これらの環境からアクセスする場合は、EC2インスタンスを経由する方法や、S3のREST APIを直接利用する方法が検討されます。
実際の使い方
マウントは非常にシンプルです。以下のコマンドでバケットをマウントできます。
ターミナルで「mount-s3 バケット名 マウントポイント」と入力するだけで、指定したディレクトリにS3バケットがマウントされます。マウント後は、通常のファイルシステムと同じ感覚で操作可能です。
たとえば、マウントポイントとして「/mnt/my-bucket」を指定し、データ分析ツールで「/mnt/my-bucket/data/analysis-results.csv」というパスを指定すれば、S3上のCSVファイルを直接読み取れます。
適しているユースケース
Mountpoint for S3は、特に以下のようなユースケースで威力を発揮します。
データ分析ワークロードにおいて、既存の分析ツールやスクリプトをS3データに直接接続したい場合に有劺です。PythonのPandasやRのデータフレーム処理で、S3上のファイルを読み込む際のコード変更を最小限に抑えられます。
機械学習のトレーニングデータへのアクセスでも活用できます。トレーニングスクリプトがローカルファイルパスを期待している場合、Mountpoint for S3を使うことで、コードの書き直しなしにS3上のデータセットにアクセスできます。
ビッグデータ処理の分野では、Apache SparkやHadoopのジョブからS3データにファイルシステム経由でアクセスし、既存の設定ファイルやスクリプトの互換性を維持できます。
制限と注意点
Mountpoint for S3にはいくつかの制限を理解しておく必要があります。
まず、S3はオブジェクトストレージであるため、ファイルシステムの操作を完全にエミュレートできるわけではありません。たとえば、ファイルの部分的な書き込み(in-place update)はできません。ファイルを更新するには、全体を再アップロードする必要があります。
ディレクトリの renaming や rename 操作、シンボリックリンクの作成もサポートされていません。また、ファイルの排他ロック(flock)もサポートされていないため、複数プロセスからの同時書き込みには注意が必要です。
読み取り専用(read-only)のマウントが基本です。書き込み操作もサポートされていますが、新規ファイルの作成と既存ファイルの上書きに限定されます。既存ファイルの削除や名前の変更はできません。
既存ソリューションとの違い
AWSには以前から「AWS Storage Gateway」の「File Gateway」機能があります。File Gatewayは、オンプレミス環境からS3にファイルとしてアクセスできるゲートウェイです。一方、Mountpoint for S3はEC2インスタンス上で直接動作する軽量なクライアントで、ゲートウェイサーバーは不要です。
また、S3はNFSやSMBプロトコルをネイティブにサポートしていませんが、File GatewayはNFS/SMB経由でのアクセスを提供します。用途に応じて、適切なソリューションを選択することが重要です。
S3の料金体系
S3の料金は、以下の要素で構成されます。
ストレージ料金は、バケットに保存しているデータ量と、選択したストレージクラスに基づいて課金されます。料金は月単位で計算され、データ量が多いほど単位あたりのコストが低くなる従量制です。
リクエスト料金は、S3に対して行ったAPIリクエストの回数に応じて課金されます。PUT、COPY、POST、LISTリクエストとGET、SELECTリクエストで料金が異なります。
データ転送料金は、S3からインターネットやAWSの他のリージョンにデータを転送した場合に発生します。同一リージョン内のAWSサービスへの転送は通常無料です。インターネットへの転送は、月間最初の100GBが無料(2024年時点)で、それ以降はGB単位で課金されます。
データ検索料金は、S3 SelectやAmazon Athenaを使用してS3内のデータをクエリした場合に発生します。
S3のセキュリティベストプラクティス
バケットポリシーの適切な設定
バケットポリシーは、JSON形式でバケットへのアクセスルールを定義します。最小権限の原則に従い、必要最小限のアクセスのみを許可するポリシーを作成することが重要です。
たとえば、特定のIPアドレスからのみアクセスを許可したり、特定のIAMユーザーにのみ読み取り権限を付与したりといった細かい制御が可能です。
S3 Block Public Accessの有効化
組織レベルでS3 Block Public Accessを有効にすれば、誤ったバケットポリシー設定による公開アクセスを防げます。AWS管理コンソールのアカウント設定で、すべてのバケットに対してこの機能を強制的に適用できます。
アクセスログの有効化
S3サーバーアクセスログを有効にすると、バケットへのすべてのリクエストが記録されます。セキュリティ監査や不正アクセスの検知に活用でき、ログを別のバケットに保存して分析できます。
侵害検出の仕組み
Amazon Macieは、S3バケット内の機密データ(個人情報やクレジットカード番号など)を自動的に検出するサービスです。誤った公開設定で機密データが暴露されるリスクを低減できます。
S3のユースケース
Webサイトとアプリケーションのホスティング
S3は静的Webサイトのホスティングに広く利用されています。HTML、CSS、JavaScript、画像ファイルなどをバケットに配置し、S3ウェブサイトホスティング機能やCloudFront(CDN)と組み合わせることで、高可用性・低コストなWebサイトを構築できます。
バックアップと災害復旧
企業の重要なデータのバックアップ先としてS3を活用するケースは非常に多いです。バージョニングとライフサイクルルールを組み合わせれば、自動的なバックアップポリシーを実現できます。クロスリージョンレプリケーションにより、リージョン障害にも対応可能です。
データレイクとビッグデータ分析
S3は「データレイク」としての利用が急速に広がっています。あらゆる形式の生データ(構造化・非構造化問わず)を低コストで大量に蓄積し、Amazon Athena、Amazon Redshift Spectrum、Apache Sparkなどの分析ツールで直接クエリできます。
アーカイブとコンプライアンス
長期保存が必要なデータのアーカイブにもS3が活用されます。Glacierクラスを活用すれば、月数十円程度のコストで大量のデータを長期保存できます。医療記録や金融取引記録などの規制対象データの保存にも対応しています。
マシンラーニングとAI
S3は機械学習パイプラインの中核的なデータストアとして利用されます。トレーニングデータの保存、モデルアーティファクトの管理、推論結果の格納など、MLワークロードのあらゆる段階でS3が活用されています。Mountpoint for S3の登場により、従来のMLワークフローとの統合がさらに容易になりました。
S3の始め方
AWSアカウントを作成すれば、すぐにS3の利用を開始できます。AWS管理コンソール、AWS CLI、AWS SDKのいずれかでバケットを作成し、データのアップロードが可能です。
初月は5GBまでのストレージが無料枠(AWS Free Tier)で利用できるため、小規模な試用や概念実証(PoC)をコストをかけずに始められます。
まとめ
Amazon S3は、クラウドストレージの基盤として20年以上にわたり信頼を獲得し続けています。高い耐久性、拡張性、柔軟なストレージクラス、充実したセキュリティ機能は、あらゆる規模の組織にとって魅力的な選択肢です。
新たに登場したMountpoint for S3は、S3の利用範囲をさらに広げるものであり、既存のアプリケーションやツールとの統合を容易にします。ファイルシステムとしての操作感を維持しながら、クラウドストレージのメリットを享受できるこの機能は、今後さらに普及が期待されます。
クラウド移行を検討している企業や、既存のS3利用を最適化したい開発者にとって、本記事が参考になれば幸いです。
よくある質問
- Amazon S3とGoogle Cloud Storage、Azure Blob Storageの違いは何ですか?
- 基本的な機能は類似していますが、エコシステムが異なります。S3はAWSのサービスとシームレスに統合され、最も成熟したオブジェクトストレージです。Google Cloud StorageはGCPとの連携に、Azure Blob StorageはMicrosoft環境との統合に強みがあります。既存のクラウド環境や使用しているツールに合わせて選択するのが一般的です。
- S3 Mountpointは有料ですか?
- Mountpoint for S3自体はオープンソースで無料です。ただし、マウントしたバケットへのアクセスで発生するS3のAPIリクエスト料金やデータ転送料金は通常通り課金されます。EC2インスタンス上で動作させる場合は、インスタンスの料金も別途必要です。
- S3に保存できるファイルサイズの上限はありますか?
- 個々のオブジェクトは最大5TBまで保存可能です。通常のファイルアップロードでは最大5GBまで直接アップロードでき、それ以上のファイルはマルチパートアップロードを使用します。バケット自体にファイル数の上限はありません。
- S3のデータは本当に安全ですか?
- S3は11の9(99.999999999%)の年間耐久性を提供し、業界最高水準のデータ保護を実現しています。ただし、誤った削除やバケットポリシーの設定ミスによるデータ損失はユーザー側の責任です。バージョニング、Cross-Region Replication、S3 Object Lockなどの機能を適切に活用することで、さらに高い安全性を実現できます。
コメント