【AWS初学者用】 AWSのストレージサービスについて

# 本記事について
本記事はAWS初学者の私が学習していく中でわからない単語や概要をなるべくわかりやすい様にまとめたものです。
もし誤りなどありましたらコメントにてお知らせいただけるとありがたいです。

## AWSのストレージサービス
AWSにはS3やEBSといった代表的な物を始め、たくさんのストレージサービスがあります。
そんなたくさんのストレージサービスを学習したので書き留めたいと思います。

## S3
まずは有名なS3からです。S3は高耐久で大容量な**オブジェクトストレージサービス**。
データをオブジェクトとして扱いIDとメタデータによって管理します。
S３つぎはS3の機能を見ていみましょう。

### 耐久性
S3のデータの耐久性は99.999999999%という高耐久性を誇っています。また、保存されたデータは同一リージョン内の**3箇所のAZへ自動で複製**されます。

### 容量
S3は容量に制限というものはありません。しかし1ファイルに対する容量の制限はあります。
利用した容量の分だけ料金が発生します。

### バージョニング
オブジェクトの世代管理をしてくれる機能。S3は通常同名のオブジェクトをアップロードすると上書きされます。上書きされても前のオブジェクトのバージョンを管理してくれます。また誤って更新や削除をしてしまっても前のバージョンに戻す事ができます。

### 静的WEBサイトホスティング
S3はデータストレージとしての機能だけではなく、Webサイトのホスティング機能もあります。静的なコンテンツを配信するサイトであれば、新たにサーバーを構築せずともWebサイトを公開できます。

### アクセス制御
S3はアクセス制御が可能で以下３つの制御の方法があります。

　　1. **IAMポリシー**を用いた制御
　　2. **バケットポリシー**を用いた制御
　　3. **ACL**を用いた制御

### 暗号化
S3はサーバーサイドの暗号化機能があり、AES-256の方式で暗号化します。   
※AES-256 :  AESという暗号化方式で暗号化鍵に256ビット長を用いる方式。

### ストレージクラス
S3にはストレージクラスと呼ばれる利用形態がいくつかあり、選択する事ができます。

　　1. スタンダード　　
　　　デフォルトのクラスになります。公式で推奨されているクラスです。
　　2. 低冗長化ストレージ (RRS)
　　　通常3つのAZでレプリケーションされるところを2箇所にする事で、冗長性は下がるがコストを抑える事ができます。
　　3. スタンダード-IA
　　　スタンダードと同じ耐久性があり、低コストで利用可能です。正しデータ読み取り時に料金が発生することと、オブジェクトが123KB以下でも123KB相当の請求がされます。
　　4. One Zone-IA
　　　スタンダード-IAよりも耐久性は落ちるが、その分スタンダード-IAよりも低コストで利用できる。(AZは1箇所にみに保管)
　　5. Glacier
　　　アーカイブを目的としたストレージクラス。たくさんのデータを安価で保管できますが、データの取り出しに時間がかかります。
　　6. Intelligent-Tiering
　　　データをコスト効率の良いアクセス階層に自動的に移動させて、ストレージコストを最小限に抑えてくれます。


公式のページにストレージクラスの比較表がありますので気になる方はご覧ください。(見づらいですが...)
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/storage-class-intro.html

### ライクサイクル
ライフサイクルを設定することで設定した期間が経過したらオブジェクトを削除したり、他の安価なストレージにオブジェクト移動できたりします。

### ログ保管
オブジェクトに対するログを保管する機能です。

### マルチパートアップロード
大容量のオブジェクトを複数のパートに分割してアップロードする仕組みです。効率よくアップロードできます。
分割されたオブジェクトはS3で再構築されます。

### クロスリージョンレプリケーション
通常S3に保存したオブジェクトは**同一リージョン内の3箇所のAZ**に保管されますが、クロスリージョンレプリケーションを使用すれば**異なるリージョンS3バケット**に自動的に複製してくれます。
また、複製先には別のAWSアカウントも指定できるみたいです。


## EBS
EBSは主にEC2インスタンスにアタッチすることで利用できる**永続的なブロックストレージ**です。
ブロックストレージとはデータをブロックという細かい単位で保管する方式です。
以下、EBSの機能をまとめていきます。

### ストレージタイプ
EBSにはいくつかのストレージタイプがあり、選択する事ができます。

1. 凡用SSD(gp2)
gp2はSSDを安価に利用できるデフォルトのサービスです。容量に応じてIOPSが設定されているようです。

2. プロビジョンドIOPS SSD (io1)
io1は高パフォーマンスなストレージタイプでユーザーが自由にIOPSを設定できます。設定したIOPSに対しても課金対象となるのでコストは高めです。

3. スループット最適化 HDD (st1)
HDDタイプのストレージタイプです。大容量のストレージを安価で利用でき、アクセス頻度が高いシステムに適しています。

4. Cold HDD (sc1)
st1と同じくHDDタイプの低コストなストレージタイプです。バックアップなどのアクセス頻度は少ないけど大容量なデータを保管するのに適しています。
EC2インスタンスのブートボリュームには使用できないみたいです。

### 高可用性
EBSは99.９９９％の高い可用性を維持するよう設計されているみたいです。また、S3の時は3箇所のAZに自動的にに複製をしていましたが、EBSは**AZ内で自動的に複製**されます。

### バックアップ
EBSはスナップショットを用いてバックアップを取得する事ができます。スナップショットは自動的にS3に保存されるので高い耐久性があります。
初回はフルバックアップを行うが、そのあとは都度増えた分だけ取得します。

##インスタンスストア
EC2のインスタンスに利用できるブロックレベルの一時ストレージを提供するサービスです。
揮発性のためインスタンスを停止すると、データは消失してしまうので重要なデータを扱うには向いていません。(**エフェメラルディスク**と呼ばれることもあります)

## EFS
EFSはファイルストレージタイプのストレージです。保存されるファイルのサイズによって伸縮するので、予めストレージ容量を決める必要がありません。
EC2インスタンス以外にも**オンプレミスサーバーからも利用できます**。

## Storage Gateway (SGW)
SGWはオンプレミスと連携したバックアップストレージサービスです。オンプレミスのストレージとS3のストレージを連携させて高可用性で堅牢なストレージを構築可能。
S3へNFS,SMB,iSCSIといった標準プロトコルでアクセスできます。
SGWには以下の種類があります。

1. キャッシュ型ボリュームゲートウェイ
基本S3へデータを格納しますが、アクセス頻度の高いデータはローカルにキャッシュすることでアクセスの高速化を実現できます。
キャッシュからデータを探して、無ければS3に探しに行く流れです。

2. 保管型ボリュームゲートウェイ
**データをスナップショットとして非同期的にS3へ格納**します。

3. テープゲートウェイ
物理テープ装置の代替としてS３、Glacierに格納できます。

4. ファイルゲートウェイ
オブジェクトを直接S3に格納できるサービス。

## AWS Import/Export Snowball
ペタバイト規模の大容量データをAWSのストレージへ転送できるサービスです。


## まとめ
後半は駆け足気味となってしまいましたが、まとめてみました。
AWSはストレージサービスだけでたくさんの種類がありますね。詳細を書いていくとキリがなさそうです...
今後はストレージサービスと連携して使用するサービスについてもまとめていきたいと思います。