AWS: ストレージサービス


# ストレージサービスまとめ
- EBS(Elastic Block Storage)
- EFS
- S3
- Glacier
- Storage Gateway

## ストレージサービスの分類とストレージタイプ

||ブロックストレージ|ファイルストレージ|オブジェクトストレージ|
|---|---|---|---|
|例|EBS|EFS, Storage Gateway|S3, Glacier|
|管理単位|ブロック|ファイル|オブジェクト|
|データライフサイクル|追加・更新・削除|追加・更新・削除|追加・削除|
|プロトコル|SATA, SCSI, FC|CIFS, NFS|HTTP(S)|
|メタデータ|固定情報のみ|固定情報のみ|カスタマイズ可能|
|ユースケース|データベース<br>トランザクションログ|ファイル共有<br>データアーカイブ|マルチメディアコンテンツ<br>データアーカイブ|

## EBS(Elastic Block Storage)

EC2のOS領域として利用したり、追加ボリュームとして複数のEBSをEC2にアタッチすることができる
異なるAvailability ZoneのEC2インスタンスにアタッチしたい場合は、EBSのスナップショットから指定のAZでEBSボリュームを作成することでアタッチすることができる。

### ボリュームタイプ
||汎用SSD(gp2)|プロビジョンドIOPS SSD(io1)|スループット最適化HDD(st1)|Cold HDD(sc1)|
|---|---|---|---|---|
|ユースケース|EC2のブートボリューム、アプリケーションリソース|I/O負荷の高いデータベース領域|ログ分析、バッチ処理用大容量インプットファイル|アクセス頻度の低いデータのアーカイブ|
|ボリュームサイズ|1GB~16TB|4GB~16TB|500GB~16TB|500GB~16TB|
|最大IOPS/ボリューム|10,000|64,000|500|250|
|最大スループット/ボリューム|160MB/秒|1,000MB/秒|500MB/秒|250MB/秒|
|ベースライン性能|3IOPS/GB|指定されたIOPS|1TBあたり40MB/秒|1TBあたり最大80MB/秒|
|主なパフォーマンス|IOPS|IOPS|MB/秒|MB/秒|

*IOPS: 1秒あたりに処理できるI/Oアクセスの数
*バースト性能: 処理量の一時的な増加に対応可能指標。しかし、あくまで一時的な処理量の増加への対応に使われることを想定しているためバースト性能に頼ったサイジングはしないこと。

### EBSの拡張・変更
#### ボリュームの拡張
すべてのタイプのEBSは1ボリュームあたり16TBまで拡張することができる。
ディスク容量が不足したら必要に応じてサイズを何度でも変更することができる。

*オンライン中の拡張
EC2インスタンスがオンラインのまま拡張した場合、(Linuxであればresize2fs,やxfs_growfsなど)を別途実施し、OSが認識できるようにする必要がある

#### ボリュームタイプの変更
IOPSが不足することがわかった場合などに、タイプを変更することが可能

### 可用性・耐久性
EBSは内部的にAZ内の複数の物理ディスクに複製が行われており、AWS内で物理的な故障が発生下場合でも利用者が意識することはほとんどない。

### セキュリティ
暗号化オプションを有効にすると、ボリュームが暗号化されるだけでなく、暗号化されたボリュームから取得したスナップショットも暗号化される。暗号化処理はEC2インスタンスが稼働するホストで実施するためEBS間をまたぐデータ通信時のデータも暗号化された状態となる。

## EFS(Elastic File System)
容量無制限で複数のEC2インスタンスから同時にアクセス可能なファイルストレージサービス。
NFSプロトコルをサポートしているため、NFSクライアントがあれば、特別なツールは不要。

### EFSの構成要素

- ファイルシステム
- マウントターゲット
- セキュリティグループ

## S3 (Simple Storage Service)
容量無制限のオブジェクトストレージサービス。

### ファイルストレージとの違い
- ディレクトリ構造を持たない不フラットな公正であること
- ユーザーが独自にデータに対して情報を付与できる

### ユースケース
- データバックアップ
- ビックデータ解析用などのデータレイク
- ETL(Extract/Transform/Load)の中間ファイル保存
- Auto Scaling構成されたEC2インスタンスやコンテナからのログ転送先
- 静的コンテンツのホスティング
- 簡易的なKey-Value型のデータベース

### 構成要素
- バケット
    - オブジェクトを保存するための領域
    - バケット名はAWS内で一意にする必要がある
- オブジェクト
    - 格納されるデータそのもの
    - 各オブジェクトにはKeyが付与され、必ず一意になるURLが生成される
    - 一つのオブジェクトは5TBまで
- メタデータ
    - オブジェクトを管理するための情報
    - 作成日付やサイズなどのシステム定義メタデータ
    - ユーザー定義メタデータなども保持可能

### ストレージクラス
- Standard
- Standard-IA
- ONEZONE-IA
- INTELLIGENT-TIERING
- GLACIER

後で詳細更新

### ライフサイクル管理
- 移行アクション
- 有効期限アクション

### バージョニング機能

### Webホスティング機能
静的なコンテンツに限りWebサイトとしてホスティングする環境を作成することができる
動的なコンテンツにはEC2などのコンピューティングサービスを利用する必要がある。

### S3のアクセス管理
||パケットポリシー|ACL|IAM|
|---|---|---|---|
|AWSアカウント単位の制御|◯|◯|✕|
|IAMユーザー単位の制御|△|✕|◯|
|S3バケット単位の制御|◯|◯|◯|
|S3オブジェクト単位の制御|◯|◯|◯|
|IPアドレス・ドメイン単位の制御|◯|✕|◯|

### 署名付きURL
アクセスを許可したいオブジェクト対して、期限を指定してURLを発行する機能
一時的にアクセスを許可したいときに有効。
URLさえわかれば、有効期限の間誰でも該当オブジェクトに対してアクセスすることができる。

### データ暗号化
S3に保存するデータは暗号化することができる。
暗号方式は、サーバー側、クライアント側で2種類から選択することができる。
サーバー側の暗号化: データがストレージに書き込まれるときに暗号化され、読み出されるときに復号化される
クライアント暗号化: AWS SDKを使ってS3に送信する前にデータが暗号化される


## Glacier
S3と同様にイレブンナインの耐久性を持ちながら、更に容量あたりの費用を抑えたアーカイブ・ストレージサービス。
Glacierにデータを保存するとデータの取り出しに時間がかかる。
S3のように保存するデータに対して名称をつけることはできず、自動裁判されたアーカイブIDで管理することになる。

### 構成要素
- ボールド
- アーカイブ
- インベントリ
- ジョブ

### データの取り出しオプション
- 高速
- 標準
- バルク

### Glacier Select
Glacierに保存したデータを参照するには、対象アーカイブを読み出しリクエストを題して一定時間待つ必要がある。
Glacier Selectはアーカイブデータに対してSQLを実行して、条件にあったデータを抽出する機能。

## Storage Gateway
オンプレミスにあるデータをクラウドへ連携するための受け口を提供するサービス。
Storage Gatewayを使って連携されたデータの保存先には、先に説明したS3やGlacierといった、耐久性が高く低コストなストレージが利用される。Storage GatewayのキャッシュストレージとしてEBSが使われる。
* 独自のストレージを持たず、S3、Glacier、EBSなどを利用する

### セキュリティ
- CHAP認証
- データ暗号化
- 通信の暗号化