TL;DR

AWS が提供するオブジェクトストレージのサービス。正式名称は Amazon Simple Storage Service である。

なぜ必要か

99.999999999%(イレブンナイン)のデータ耐久性と 99.99% の可用性を、標準で提供する。データレイク、クラウドネイティブなアプリケーション、モバイルアプリケーションなど、ほぼすべての用途に使える。バックアップやアーカイブにも使われる。

仕組み

用途と料金に合わせて、複数のストレージクラスから選べる。たとえば S3 Express One Zone、S3 Intelligent-Tiering、S3 Glacier のストレージクラスがある。

データはバケットの中にオブジェクトとして保存する。オブジェクトはファイルと、それを説明するメタデータの組で、バケットはオブジェクトを入れる容器である。バケットを作るときに名前と AWS リージョンを決め、そこへデータをオブジェクトとしてアップロードする。各オブジェクトはキーを持ち、バケットとキー(バージョニングを有効にしていればバージョン ID も)の組で一意に決まる。バケットとオブジェクトは既定で非公開で、バケットポリシーや IAM のポリシーでアクセスを許可する。

オブジェクトの PUT と DELETE は、すべてのリージョンで書き込み直後の読み取りに対して強い整合性を持つ。1 つのキーへの更新はアトミックで、同時に読んでも古いデータか新しいデータのどちらかが返り、壊れたデータは返らない。

注意点

同じキーへの同時書き込みに対するロックはなく、タイムスタンプが最も新しいリクエストが勝つ。複数のキーをまとめてアトミックに更新する方法もない。バケットの設定は結果整合性で、たとえば初めてバージョニングを有効にした後は、書き込みの前に 15 分待つことが推奨されている。

関連

出典