【AWS】ストレージサービス

# ストレージサービス

## Amazon Simple Storage Service（S3）

- 高耐久・大容量の**オブジェクトストレージサービス**
- データをオブジェクトとして扱い、**IDとメタデータ**によって管理する
- **バケット**と呼ばれる単位で作成し、その中にオブジェクトを保管する
- 耐久性は99.999999999%に達するため、バックアップストレージとしても利用できる
- **利用した容量分**の料金が発生する

:::note info
バケット名はグローバルで重複できない
:::

## データの復元性と大規模災害対策に関するS3の機能

### ◉誤ってデータを削除してしまった場合
#### バージョニング機能
- オブジェクトの**世代管理**を提供する
- **設定に基づいて**、以前の世代に戻すことができる
- バージョンはオブジェクト単位で**バージョンID**で管理される
- 同名オブジェクトをアップロードすると**標準で上書きされる**

:::note info
バージョニング機能を有効化することで復元性は向上するが、その分のコストが発生する
:::

### ◉大規模災害対策として
#### クロスリージョンレプリケーション
- 別のリージョンのS3バケットにオブジェクトを自動複製する
- 複製先に別のAWSアカウントも指定可能

:::note info
S3に保存したデータは、デフォルトで同じリージョン内の3ヶ所のAZに自動複製される
:::

## S3におけるセキュリティ対策
### ◉アクセス制御

#### ◎IAMポリシーによるアクセス制御
**IAMユーザー／IAMロール**からRead／Get／Put操作に対する制御が可能


#### ◎バケットポリシーによるアクセス制御
S3バケットに**JSONコードを記載**してバケット全体のアクセス制御が可能


#### ◎ACL（Access Control List）によるアクセス制御
- S3バケットに対して、**AWSアカウントレベルのアクセス制御を行う**
- **ACLからパブリックアスセスの設定**を行い、不特定多数のユーザへ**ファイル公開も可能**



#### ◎ブロックパブリックアスセスによるアスセス制御
バケットポリシーやACLの設定に対して、**一括で制限を設けることができる**

:::note info
パケットポリシー／ACLによる制御はS3の各バケットやオブジェクトデータを監視しないと、意図せず外部に公開されてしまう可能性がある
:::
***

### ◉暗号化
- **S3のデフォルトキーを使用したAES-256暗号化**
- **AWS Key Management Service（KMS）で管理されている鍵によるAES-256暗号化**
- **ユーザー任意の鍵によるAES-256暗号化**

:::note info
・デフォルトキー／AWS KMSを利用した場合、AWS側で鍵の管理を行う
・ユーザー任意の鍵は、暗号化キーと暗号化したオブジェクトのマッピングはユーザーが管理する
:::
***

## S3のコスト最適化
### ◉ストレージクラスの種類
ユースケースに応じて利用形態を選択する

#### ◎スタンダード
- デフォルトのストレージクラス
- 99.999999999%の高耐久性



#### ◎標準低頻度アクセス（Standard-Infrequent Access）
- **スタンダードと同じ耐久性で低コスト**で利用可能なストレージ
- データの**読み取りに対して課金**される
- **長期保管やバックアップ**に利用される



#### ◎1ゾーン低頻度アクセス（One Zone-Infrequent Access）
- 標準低頻度アクセスほど耐久性を必要としない場合に利用
- **1ヶ所のAZのみにデータ保存**のため、標準低頻度よりさらに低コスト



####◎低冗長化ストレージ（Reduce Redundancy Storage）
- スタンダードでは３ヶ所のAZに複製するものを、**２ヶ所に複製する**
- 耐久性は落ちるがコストが抑えられる


#### ◎Amazon S3 Glacier
- **アーカイブを目的としたストレージ**
- 大容量データを安価で補完できるが**データアクセスに時間がかかる**
- S3 Glacierよりもアクセスに時間がかかるがより安価な、**GlacierDeep Archive**もある

:::note info
アーカイブ
専用の記憶領域に保存すること
:::



#### ◎Intelligent-Tiering
- 低頻度／高頻度の2階層のストレージ層を用意し、**オブジェクトへのアクセス頻度の応じてストレージ層を自動的に使い分ける**
- コストが自動で最適化される

***

### ◉柔軟なライフサイクルポリシー
ライフサイクルポリシーを設定することで、**設定期間が経過したらオブジェクトを自動削除／アーカイブする**

[![Image from Gyazo](https://i.gyazo.com/79099c681b4b626bce1f3f9f43038ba2.png)](https://gyazo.com/79099c681b4b626bce1f3f9f43038ba2)

***

## S3のデータ転送効率化を実現する機能
### ◉マルチパートアップロード
- 大容量のオブジェクトを**パート**と呼ばれる複数の単位に分割してアップロードする
- 全てのパートのアップロードが完了すると**S3側で自動的にオブジェクトを再構築**

### ◉Amazon S3 Transfer Acceleration
- 機能を有効化することで**クライアントとS3間の通信を高速化する**
- データ転送時に**エッジロケーションとAWSネットワーク**を利用

## ストレージ以外でのS3の用途
### ◉Webサイトホスティング
- 静的コンテンツのWebサイトホスティング機能
- サーバー構築せずに公開できる
- Route 53のDNSフェイルオーバー機能と組み合わせてWebサイトのSorryページとして利用される

:::note info
Sorryページ
Webサイトのメンテナンス／障害発生時に表示するページ
:::

### ◉データストア
実質目制限にデータ保管できるため、データレイクやビックデータ分析用のデータストアとして利用される

:::note info
データレイク
規模に関わらずデータをそのままの形で保存できるストレージレポジトリ
:::

### ◉署名付きURL
AWS CLIやAWS SDKを利用してS3上のデータに対して一定時間アクセスを許可するURLを発行する

***

## Amazon Elastic Block Store（EBS）
- 永続可能なブロックストレージサービス
- AZ間ではなく、**AZ内で自動複製される**
- AZ障害時には影響を受けるが、単一ディスク障害を回避できる

### ◉EBSの機能

#### ◎複数のボリュームタイプ
##### ○汎用SSD（General Purpose SSD：gp2）
- **デフォルトのボリュームタイプで安価**
- 確保した容量に対してIOPSが設定されている
- OSのルート領域や高性能なI／Oを要求されないデータ領域で利用

:::note info
I／O
inputとoutputの頭文字（入出力）のこと

IOPS
1秒あたりに処理できるI/Oのアクセス数
:::



##### ○プロビジョンドIOPS SSD（PIOPS SSD：io1, io2）
- **ユーザーが自由にIOPSを設定できる**
- 汎用SSDより高パフォーマンス
- ストレージ容量／指定したIOPSに対して課金される



##### ○スループット最適化HDD（st1）
HDDタイプで大容量ストレージを安価に利用できる


##### ○コールドHDD（sc1）
- アクセス頻度が低い大量データの保存に適している
- st1より安価



##### ○マグネティック
旧世代のHDD

:::note info
SSD（Solid State Drive）
容量単価がHDDより高い

HDD（Hard Disk Drive）
容量単価として安くなる
:::


#### ◎スナップショットによるバックアップ
- スナップショットは自動的にS3に保管
- 初回はフルバックアップ、以後は増分を取得

:::note info
オンプレ環境のストレージはバックアップ取得完了までの待ち時間がある

EBSスナップショットは取得実行した時点のものが保管されるため待ち時間がない
:::
***

## Amazon Elastic File System（EFS）
複数のEC2インスタンスから共有ファイルストレージとして利用できる

### ◉EFSの特徴
#### ◎高可用性
- **複数のAZ**に冗長化してデータ保管する
- **AZをまたいでもファイルアクセス可能**

#### ◎自動スケーリング
- **ストレージ容量／パフォーマンスを**自動的にスケーリング
- **ファイル削除時は自動で縮小**
- **EBSより柔軟**に対応できる

#### ◎標準的なファイルシステム
- **NFS**によってアクセスする
- EC2インスタンスだけでなく**オンプレサーバーからも利用可能**

:::note info
NFS（Network File System）
LinuxなどのUNIX系のOSで利用されるファイル共有システム
:::

## Amazon FSx
- コスト効率の良いファイルシステム
- **サイジング／冗長化／ソフトウェア管理／バックアップなどの検討事項を簡素化する**

### ◉FSxの特徴
#### ◎高可用性と高耐久性
- **マルチAZ**に対応している
- S3へのバックアップが可能

#### ◎高速で柔軟なパフォーマンス
データ保管用ストレージは**SSD／HDDに対応**している

#### ◎セキュリティ保護
- FSxに保管されたデータ／通信中のデータは**全て暗号化**されている
- **IAMポリシーによるAPIコールやセキュリティグループ**によるアクセス制御が可能

#### ◎FSxのファイルシステム
##### ○Fxs for Windows
- Windowsサーバーで使われる**SMBプロトコル**を利用してデータアクセス可能なファイルシステム
- **Active Directory**との連携
- **WindowsのACL**によるアクセス制御可能

##### ○FSx for Lustre
- 機械学習など、処理速度を重視するシステムに利用される**Linuxベースのファイルシステム**
- **Linuxコマンドで実行**でき、アプリケーションの変更を加えずに利用可能

:::note info
SMB（Server Message Block）
主にWindows OSのネットワークでファイル／プリンタ共有などに使用される通信プロトコル
:::

***

## その他のストレージサービス
### ◉インスタンスストア（エフェメラルディスク）
- 特定のEC2インスタンスで利用できる無料ストレージサービス
- ホストコンピュータのローカル領域を使用

:::note info
高パフォーマンスだがインスタンスが停止するとデータが消失するため冗長化の検討が必要
:::

### ◉AWS Storage Gateway（SGW）
- S3へ**NFS／SMB／iSCSI**など標準プロトコルでアクセスできるサービス
- EC2インスタンス／**オンプレサーバー**にS3を認識させ（マウントして）利用する

:::note info
iSCSI（Internet Small Computer System Interface）
データ転送にTCP／IPを使用する仕組み
:::

***
### ◉SGWの種類
#### ◎キャッシュ型ボリュームゲートウェイ
- データはS3に保管するが、**アクセス頻度の高いデータはローカルにキャッシュ**
- インターフェイスに**iSCSI**を使用

:::note info
キャッシュ
PCやスマホに一時的にWebページのデータを保存しておいて、次に開いた時に素早く表示させる仕組み
:::

#### ◎保管型ボリュームゲートウェイ
- データを**スナップショット**としてS3に保管
- インターフェイスに**iSCSI**を使用

#### ◎テープゲートウェイ
- **物理テープ装置の代替**として、データをS3（Glacier）に保管
- インターフェイスに**iSCSI**を使用

#### ◎ファイルゲートウェイ
- データを**オブジェクト**として直接S3に保管
- インターフェイスに**NFS**を使用

***
### ◉AWS Import／Export
- ユーザーから送付された物理ディスクのデータをAWSがAWS内のストレージに転送（Import）
- ユーザーの物理ディスクにデータを書き出す（Export）

:::note info
・通常のネットワーク転送では非常に時間がかかるため、大容量のデータ移行に有効
・反面、高価なディスクを購入したりディスクの耐久性／セキュリティに懸念事項がある
:::

### ◉AWS Snowball（80TB）
- AWSから**物理的**に搬送される耐久性の高い**筺体**に大容量のデータを保管
- 保管した筺体は**AWSマネジメントコンソールからジョブを作成し、登録先の住所へ発送**
- 指定したリージョン、AZにある**ストレージ**へ転送される
- Snowball内のデータは**自動的に暗号化**される

### ◉AWS Snowball Edge（１００TB）
- **Snowballより大容量**で多くのネットワークインターフェイスをサポート
- **S3のAPIやNFSによる転送が標準で行うことが可能**


#### 参考

https://aws.amazon.com/jp/s3/faqs/

https://aws.amazon.com/jp/ebs/?ebs-whats-new.sort-by=item.additionalFields.postDateTime&ebs-whats-new.sort-order=desc

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html

https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html

https://aws.amazon.com/jp/fsx/

https://docs.aws.amazon.com/ja_jp/storagegateway/latest/userguide/WhatIsStorageGateway.html

https://aws.amazon.com/jp/storagegateway/?whats-new-cards.sort-by=item.additionalFields.postDateTime&whats-new-cards.sort-order=desc