#はじめに
AWSのサービスの中でも中核を担うS3には7つの種類(ストレージクラス)がある。作成したいアプリケーションの要件に合わせてストレージクラスを選択することで、コスト最適化を図ることができる。
※本記事は2021.6.2時点かつ東京リージョンの情報をもとに作成しています。
※上の画像では6つのストレージクラスのアイコンが載っていますが、RRSに関するアイコンは載っていません。
特徴など
・高い耐久性(あるデータが1年間で消失してしまう確率が0.000000001%。逆に消失しない確率は99.999999999%で9が11回続くことから高い耐久性を表す言葉としてイレブンナイン
がある)
・バージョニング機能
がある(オブジェクト単位で管理されており、誤ってデータを削除したときなどに以前のバージョンに復元が可能)
・クロスリージョンレプリケーション
機能がある(別リージョンのS3バケットにデータを複製することができる)
・1ファイルの容量には5TB
までという制限あり
・key-value型のオブジェクトストレージ
(オブジェクト指定の例s3://bucketname/prefix/file.txt
)
・データの新規登録には書き込み後の読み込み整合性
がある(データ保存後にS3から完了のレスポンスがあると参照できる)
・データの更新・削除には結果整合性
がある(操作後にデータにアクセスしてもすぐに反映されている保証はない)
・GET, PUT, DELETE に対して書き込み後の読み込み整合性
がある(2020.12のアップデート。これにより結果整合性から強い一貫性へ。参考)
・デフォルトではバケットやオブジェクトはプライベートアクセス権限
に設定
・マルチパートアップロード
はファイルを分割してアップロードできる機能で、スループットの向上を図れる。また、アップロードが中断されても、途中から再開される。100MBを超えるファイルはこの機能を使うことが推奨されている。
・S3 Select
という機能があり、単一ファイルの対してSQLライクな構文でデータを取得することができる
・署名付きURL
によりAWSにログインしていないユーザーも一定時間の間アップロード等の操作が可能
ストレージクラス
1. スタンダード(Standard)
S3のデフォルトのストレージクラス。データは3つのアベイラビリティゾーン(AZ)に自動的に複製されるため、高い耐久性を有している。
2. 標準低頻度アクセス(Standard-IA)
Standardと同等の耐久性を備え、かつStandardよりもデータ格納コストが抑えられたクラス。ただしデータのリクエストに関してはStandardよりもコストががかかる。さらにデータの読み出し容量に対しても課金が生じる。
※IAはInfrequent Acccessの略。
3. 1ゾーン低頻度アクセス(One Zone-IA)
1つのAZでデータが保存されるクラス(複製に関してはStandard, Standard-IAと同様)。AZ障害に弱いという点ではStandard, Standard-IAに比べて耐久性が劣るが、Standard-IAよりもデータ格納コストが抑えられたクラス。データのリクエストに関してはStandard-IAと同等のコストがかかる。
4. 低冗長化ストレージ(RRS)
2つのAZに冗長化されたクラス。AZ障害に弱いという点ではStandard, Standard-IAに比べて耐久性が劣る。コストに関してはRSSは「Standard, Standard-IAよりも低い」という記述を見かけるが、実際はRRSの方が高いという逆転現象が起こってしまっている。これはStandardの価格が下げられたことによるものらしい。
※RSSはReduced Redundancy Service の略
5. Intelligent-Tiering
高頻度と低頻度という2つのストレージ層があり、S3上に格納したデータへのアクセス頻度によって最適なストレージ層を自動的に使い分けるクラス。
6. Glacier
アーカイブ目的で利用されることが多い大容量のデータを安価に格納できるクラス。ただしデータの取り出しには時間を要する。取り出しには3つのオプション(Expedited: 1-5分、Standard: 3-5時間, Bulk: 5-12時間)がある。
ボールトロックという機能があり、ファイルの削除などの操作を制限することができる。
Expedited は250MB以上の容量を除いて、通常1~5分以内で使用可能となる。
7. Glacier Deep Archive
Glacierよりも安価に利用できる。
48時間以内に取り出し可能。
参考