Amazon S3

容量無制限のオブジェクトストレージサービスで、99.999999999% の耐久性を標準提供し、Web サイトホスティングからデータレイクまで幅広い用途に対応する

概要

Amazon Simple Storage Service (S3) は、AWS で最も広く利用されているストレージサービスです。インターネット経由でどこからでもデータを保存・取得でき、保存容量に上限はありません。1 ファイルあたり最大 5 TB まで対応し、データは自動的に 3 つ以上のアベイラビリティゾーンに複製されるため、99.999999999% (イレブンナイン) という極めて高い耐久性を実現しています。S3 Standard、S3 Standard-IA、S3 Glacier Instant Retrieval、S3 Glacier Flexible Retrieval、S3 Glacier Deep Archive など、アクセス頻度に応じた複数のストレージクラスが用意されており、ライフサイクルポリシーで自動的にコスト最適化できます。静的 Web サイトのホスティング、データレイクの構築、バックアップ・アーカイブ、ログの蓄積など、データを保存するあらゆる場面で利用されています。

S3 のストレージクラスとコスト最適化

S3 には 6 つのストレージクラスがあり、データのアクセスパターンに応じて使い分けることでコストを最適化できます。S3 Standard は頻繁にアクセスするデータ向けで、1 GB あたり月額約 0.025 ドル (東京リージョン) です。S3 Standard-IA は月に 1 回程度のアクセス頻度のデータに適しており、保存料金が約 40% 安くなりますが、取り出し時にリクエスト料金が発生します。S3 Intelligent-Tiering はアクセスパターンを自動分析し、最適なストレージクラスに自動移行する機能で、アクセスパターンが予測困難なデータに最適です。S3 Glacier 系のクラスは長期アーカイブ向けで、Deep Archive は 1 GB あたり月額約 0.002 ドルと最も安価ですが、取り出しに最大 12 時間かかります。ライフサイクルポリシーを設定すれば、作成から 30 日後に Standard-IA へ、90 日後に Glacier へ自動移行するといったルールを定義できます。

Azure Blob Storage との比較

Azure で S3 に対応するサービスは Azure Blob Storage です。両者ともオブジェクトストレージとして基本的な機能は共通していますが、いくつかの違いがあります。S3 はバケット名がグローバルで一意である必要があるのに対し、Azure Blob Storage はストレージアカウント内のコンテナ名が一意であればよいため、命名の自由度が高いです。アクセス層については、S3 が 6 つのストレージクラスを提供するのに対し、Azure Blob Storage は Hot、Cool、Cold、Archive の 4 層構成です。S3 の Intelligent-Tiering に相当する Azure の機能はライフサイクル管理ポリシーですが、S3 のようにオブジェクト単位で自動的にアクセス層を最適化する機能は Azure にはありません。バージョニング、暗号化、アクセスログなどの基本機能は両者とも備えています。

実務でのベストプラクティス

S3 を実務で利用する際のベストプラクティスとして、まずバケットポリシーと IAM ポリシーによるアクセス制御の適切な設定が重要です。S3 Block Public Access を有効にして意図しない公開を防止し、サーバーサイド暗号化 (SSE-S3 または SSE-KMS) でデータを保護します。パフォーマンス面では、S3 Transfer Acceleration を使えば地理的に離れたクライアントからのアップロード速度を向上でき、マルチパートアップロードを使えば大容量ファイルを並列転送できます。コスト管理では、S3 Storage Lens でバケット全体の使用状況を可視化し、不要なオブジェクトの削除やストレージクラスの最適化を定期的に実施することが推奨されます。