S3とは
Amazon Simple Storage Service の略
インターネット経由で利用できるオブジェクトストレージサービス
- 高いスケーラビリティ・データ可用性・セキュリティ・パフォーマンスを提供
- 99.999999999%(イレブンナイン)の耐久性
- Key-Value Store形式でデータを取得・格納
- バケットはリージョン単位で作成する
- 作成可能バケット数はデフォルトで1アカウントにつき最大100個
- バケットに格納出来るオブジェクト数・データ総量は無制限
- 1オブジェクトのサイズは最大5TB
- 1回のPUTオペレーションでアップロード出来るオブジェクトのサイズは最大5GB
→ 5GBを超える場合は マルチパートアップロード を使用
用途
- コンテンツ配信・保管
- ログ・バッチの保管場所
- バックアップ/ディザスタリカバリ
- Webの静的ホスティング
- データレイク
オブジェクト構成
1. リージョン:地理的要素
2. バケット:オブジェクトを保存する場所
3. オブジェクトキー:オブジェクトを一意に指定するための名前
4. プレフィックス:オブジェクトがS3全体で一意のキーになるために使用される文字列
5. バージョンID:オブジェクトのバージョン管理ID(バージョニングを有効化すると付与される)
6. VPCエンドポイント:インターネットを経由せずにVPC内部からS3にアクセスするためのエンドポイント
結果整合性モデル
S3はデータの耐久性向上のため、複数のアベイラビリティーゾーンにデータを複製する
全てのリージョンで、上書きのPUT及びDELETEについて結果整合性を採用
オペレーション | Consistencyモデル | データ読み取り時の挙動 |
---|---|---|
新規登録 (New PUTs) |
Consistency Read | 登録時、即座にデータ参照可能 |
更新 (Overwrite PUTs) |
Eventual Consistency Read | 更新直後は更新前のデータが参照される可能性がある |
削除 (DELETE) |
Eventual Consistency Read | 削除直後は削除前のデータが参照される可能性がある |
※ オンラインで頻繁に更新されるようなデータの格納先としてのユースケースには向いておらず、静的なデータの格納に向いている
マルチパートアップロード
マルチパートアップロードAPIを使用することで、大容量オブジェクトをいくつかに分けてアップロードすることが可能
- 最大5TBのデータをアップロード可能
- 5MB〜5GBのサイズで1〜10000パートに分割
- 最後のパートは5MB以下でも可
- アップロード失敗時はパートデータが残るため、ライフサイクル管理でクリーンアップ設定が必要
Webサイトホスティング
- HTML, CSS, JavaScript, 画像等の静的コンテンツをホストするWebサイトとしてS3バケットを設定することが可能
- バケットポリシーを使用してアクセスを許可したいユーザーにGET権限を付与し、バケットをWebサイトホスティング用に設定する
→ バケットのAWSリージョン固有のWebサイトエンドポイント(URL)でアクセス可能になる
バージョニング機能
有効化すると、1つのバケットで複数世代のオブジェクトを保存・維持することを可能とする機能
- バケット単位で設定
- 機能を有効化したバケットに格納されるオブジェクトにはバージョンIDが付与される
- ライフサイクルポリシーを定義し、保存期間を指定することがベストプラクティス
ライフサイクル機能
S3のバケットに格納されたオブジェクトに対し、ストレージクラスの変更(移行アクション)や削除処理(失効アクション)を自動化する機能
- ライフサイクルルールは最大1,000個設定可能
S3 Access Analyzer
設定されたアクセスポリシーに基づき、S3バケットの監視・確認・保護をする機能
- バケットアクセスポリシーを評価することで、不正アクセスの可能性があるバケットの発見が可能
- 有効化することで、S3リソースへの意図したアクセスのみを提供
レプリケーション
異なるS3バケット間でオブジェクトを自動的に非同期コピー出来る仕組み
- クロスリージョンレプリケーション(CRR):異なるリージョン内のバケット間でオブジェクトをコピー
- 同一リージョンレプリケーション(SRR):同一のリージョン内のバケット間でオブジェクトをコピー
インベントリ
S3に格納されたオブジェクトのリストをCSV形式で一括取得出来る機能
S3 Transfer Acceleration
リージョン単位で作成されたS3バケット上のデータを別リージョンに高速転送出来る機能
- AWSネットワーク内において、全世界のAWSエッジネットワーク中から最適化されたルートを経由して転送する
データ解析
1. Amazon S3 Select(Glacier Select)
S3の内部機能として有している検索機能で、S3に直接クエリを実行しデータを取得出来る
2. Amazon Athena
S3内のデータの直接分析を簡易化するインタラクティブなクエリサービス
3. Amazon Macie
機械学習によってS3内の機密データを自動的に検出/分類/保護するフルマネージド型のセキュリティサービス
4. Amazon Redshift Spectrum
S3の格納データに対して直接クエリを発行出来る機能
(使用にはRedshiftクラスターが起動されていることが前提)
CORS(Cross Origin Resource Sharing)
特定のドメインにロードされたクライアントウェブアプリケーションが異なるドメイン内のリソースと通信する方法を定義するもの
S3リソースに対するクロスオリジンアクセスを選択的に許可することが可能
バッチオペレーション
S3オブジェクトの大量データに対して一括処理の実行が可能
1. マニフェスト
・S3が作用するオブジェクトキーをリストするS3オブジェクト
・Amazon S3インベントリレポートまたはCSVファイルのいずれかの形式で設定
2. ジョブ
・S3バッチオペレーションの機能の基本単位
・マニフェストに一覧表示されているオブジェクトにおいて指定されたオペレーションを実行するために必要な全ての情報が含まれている
3. オペレーション
・ジョブで実行するAPIアクション(オブジェクトのコピーなど)のタイプ
・各ジョブは、マニフェストで指定されているすべてのオブジェクトに対して1種類のオペレーションを実行する
4. タスク
・ジョブ実行の単位
・単一のオブジェクトでジョブのオペレーションを実行するためのS3またはLambda APIオペレーションへの単一の呼び出しを表す