はじめに
AWS DVA取得に向けた勉強の一環です。
新たな学びがあったら随時追記していきます。
正確性は保証しませんので参考程度に見てください。
概要
- オブジェクトストレージサービス
- 階層構造なし、各データは一意のIDを持つ
- 構造化・非構造化データの両方を扱える
- 高耐久性(99.999999999% = イレブンナイン)
- 高可用性(ストレージクラスによって異なる)
- 容量無制限で従量課金
- 用途: バックアップ、データレイク、静的コンテンツのホスティング など
S3の基本構成
-
バケット: データを格納するコンテナ
-
オブジェクト: バケット内に格納されるデータ単位
-
Glacierでは
- バケットに対応するのがボールト
- オブジェクトに対応するのがアーカイブ
S3のストレージクラス
クラス |
特徴 |
用途 |
Standard |
デフォルト、頻繁にアクセス |
Webサイトホスティング、一般データ |
Standard-IA |
低頻度アクセス、コスト低め |
バックアップ、災害復旧 |
Intelligent-Tiering |
アクセス状況に応じてクラスを自動変更 |
不定期にアクセスするデータ |
One Zone-IA |
単一AZのみ、冗長性低いが安価 |
一時データ、再作成可能データ |
S3 Glacier
ストレージクラス
クラス |
アクセス頻度目安 |
取得時間 |
Instant Retrieval |
四半期に一度 |
即時 |
Flexible Retrieval |
年一回程度 |
数分~数時間 |
Deep Archive |
年一回未満 |
数時間(取り出し料金高) |
取り出しオプション
|
迅速 |
標準 |
大容量 |
Flexible Retrieval、Intelligent-Tiering Archive |
1~5分 |
数分~5時間 |
5~12時間 |
Deep Archive、Intelligent-Tiering Deep Archive |
利用不可 |
9~12時間 |
48時間以内 |
アクセス制御
方法 |
適用範囲 |
特徴 |
IAMポリシー |
アカウント単位 |
ユーザーやロールごとに権限設定 |
バケットポリシー |
バケット単位/オブジェクト単位 |
バケット内のオブジェクトを細かく制御 |
ACL(Access Control List) |
バケット単位 |
細かい権限制御不可、現在は非推奨 |
セキュリティ・データ管理
署名付きURL
- 一定期間のみ有効なURLを生成し、アクセスを許可
- 漏洩の可能性があるため完全なセキュリティにはならない
CORS(Cross-Origin Resource Sharing)
データの暗号化
種類 |
暗号化のタイミング |
管理方式 |
サーバーサイド暗号化 |
AWSにアップロード後 |
AWSが暗号化・復号化を担当 |
クライアントサイド暗号化 |
アップロード前 |
ユーザーが暗号化・復号化を管理 |
サーバーサイド暗号化(SSE)
- SSE-S3: AWSが自動管理(デフォルト)
- SSE-KMS: AWS KMSを使用(カスタマーマネージドキーも可)
- SSE-C: ユーザーが独自キーを管理
クライアントサイド暗号化(CSE)
データ保護と管理
オブジェクトロック
- 削除・上書きを防止(読み取り専用)
- 保持期間を設定可能(期間経過後に解除)
モード |
特徴 |
ガバナンスモード |
特定ユーザーのみ変更可能 |
コンプライアンスモード |
すべてのユーザーが変更不可(rootユーザー含む) |
- Glacierでは「ボールトロック」で同様の管理が可能
リーガルホールド
- 法的理由によりオブジェクトを保護
- オブジェクトロックの保持期間とは独立
- オブジェクトロックとリーガルホールドの両方が無効にならないと変更不可
バージョニング
- オブジェクトの履歴を保持し、以前のバージョンを取得可能
- バケット単位で有効化
- 削除すると「削除マーカー」が作成される
- 削除マーカーを削除すると、以前のバージョンを復元できる
- 完全削除には、バージョンIDを指定して削除する
高速転送・データ処理
バッチオペレーション
- 大量のオブジェクトを一括処理
- 例: メタデータ更新、アクセス許可変更
マルチパートアップロード
- オブジェクトを分割して並行アップロード
- 大容量ファイルを効率的にアップロード
S3 Transfer Acceleration
- リージョン間のアップロード・転送を高速化
- エッジロケーションを経由
S3 Select
- SQLクエリを使い、オブジェクトデータの一部分を抽出
- CLI, SDK, マネジメントコンソールから実行可能