ストレージ関連 | AWS SAA 受験に向けたメモ④

## はじめに
SAA試験勉強のうちストレージに関して、個人的に何度も忘れてしまうものや分かりにくいものをまとめていきます！
試験範囲を網羅しているわけでは全くありませんのでご注意を！
その他の範囲まとめはこちら↓

https://qiita.com/hoshi_/items/b3c101a3e92a73728789

## EBS
### EBSのRAID構成
 + RAID 0：パフォーマンス向上が目的
 + RAID 1：ボリュームの冗長性を高めるのが目的

### レプリケーション
同じAZ内の複数サーバーに自動的にレプリケートされる。

### スナップショット
EBSの利用状況に関係なく非同期に取得できるので、スナップショット取得中であっても、EBSを通常通り利用することができる。
ただし、データ齟齬が発生しないためにも、EBSを停止した状態でスナップショットを取得するのがベストプラクティスとなっている。

### 新規に作成したEBSボリュームをアタッチした後の設定
EC2インスタンスに追加でアタッチしたボリュームの利用を開始するには、最初にボリューム内にファイルシステムを作成する必要がある。

### IOPS 
| - | プロビジョンド IOPS SSD (io2　Block Express) | プロビジョンド IOPS SSD (io2) | 汎用SSD (gp2) | スループット最適化HDD (st1) | コールドHDD (sc1) |
|:-:|:-:|:-:|:-:|:-:|:-:|
| 最大IOPS (1MiB I/O) | 256,000  | 64,000  | 16,000  | 500  | 250  |
|  最大スループット (MiB/s) | 4,000  | 1,000  |  250 |  500 |  250 |

#### プロビジョンドIOPSボリュームのIOPS性能とボリュームサイズ(GiB単位)の最大比は50：1。
> ex. 100GiBボリュームの場合、`100 x 50`で最大5,000IOPSでプロビジョニングできる


### LVMとEBS
LVM（論理ボリューム管理）とは、
例えばEBSなどの物理的なストレージを抽象化し、論理的なボリュームとして管理するための仕組み。

**LVMストライプ**
複数の物理ボリュームにデータを分散して書き込む技術。
複数の物理ボリュームのI/O性能を同時に利用できるため、スループットやIOPSの向上が期待できる。

単一のEBSには最大IOPSと最大スループットの制限があるが、非常に高いスループットを必要とするワークロードでは、単一のEBSボリュームでは性能がボトルネックになる可能性がある。
このような場合に、複数のEBSボリュームを用意し、LVMでストライピングすることで、複数のEBSボリュームのスループットを合計した値に近い性能を得られる。
IOPSについては単純に合計した値ではないが向上は見込める。

### EBS Recycle Bin（ごみ箱）
誤って削除されたスナップショットを保護する機能。
指定した保持期間中、スナップショットをRecycle Binに保持できる。

### マルチアタッチ機能
複数のインスタンスで利用＝EFS！となりがちだが、
EBSのマルチアタッチ機能を利用すると、同じAZ内であれば複数のインスタンスでEBSを共有できる。
マルチアタッチ機能を利用できるのはio1,io2タイプのボリュームのみ。

### DLM(Data Lifecycle Manager)
EBSボリュームのスナップショットを定期的に自動で作成する。
保持期間を設定し、不要なスナップショットを自動的に削除することも可能。
また、タグを使ってスナップショットを分類し、管理しやすくすることもできる。

### EBSのデタッチ方法
EBSがインスタンスのルートデバイスである場合、ボリュームをデタッチする前にインスタンスを停止する必要がある。

## EFS
NFS(ネットワークファイルシステム)プロトコルをサポートするファイルシステム。
容量無制限で、複数のEC2インスタンスから利用可能。
特定のAZではなく、VPCに配置して利用するファイルシステム。
EFSにアクセスするEC2インスタンスと同じVPC内に配置するのが好ましい。

### ストレージクラス
Standardストレージクラスと、IAストレージクラスがある。

### モード
+ 汎用モード
    レイテンシーが最も低い。
+ 最大I/Oモード
    何十～何千というクライアントからの同時アクセスが必要な大規模利用に適している。
    スループットが向上する代わりにレイテンシーが汎用モードに比べて長くなる。

## S3
### 取り出し時間とストレージクラス
| ストレージクラス | 標準取り出しの時間 |
|:-:|:-:|
| Standard  |  数ミリ秒 |
| Standard-IA  | 数時間  |
|  One Zone-IA | 数時間  |
|  Glacier Instant Retrieval | 数秒～数分  |
| Glacier Flexible Retrieval  | 3～5時間  |
|Glacier Deep Archive   | 12時間以内  |

### S3の暗号化方式
| 暗号化方式 | 特徴 |
|:-:|:-:|
|  SSE-S3 |  S3の標準暗号化方式。暗号化と復号を自動で実施。AES-256で暗号化。追加料金も不要で手軽だが、利用状況の監査証跡が取れないのがデメリット。 |
| SSE-KMS  |  AWS KMSに設定した暗号化キーで暗号化。ユーザー側でKMSを利用してキーを作成・管理できる。独自の暗号化キーも利用できる。CloudTrailによりアクティビティログの証跡ログが取得可能。証跡が必要な場合はこの方式を使う。 |
| SSE-C  | ユーザーが指定したキーによるサーバー側の暗号化が可能。SDKなどを利用して暗号化を実装する必要があるため、利用設定や管理が煩雑になるのがデメリット。  |

このほか、S3送信前にデータを暗号化する「クライアントサイド暗号化(CSE)」も暗号化方式の選択肢に入る。

### レプリケーション
レプリケーションには、以下2種類がある
+ ライブレプリケーション: 新しく作成または更新されたオブジェクトを自動的にレプリケートする
+ オンデマンドレプリケーション: 既存のオブジェクトをレプリケートする。
さらに、ライブレプリケーションには以下2つの形式がある
+ クロスリージョンレプリケーション（CRR）
+ 同一リージョンレプリケーション（SRR）

### EC2との接続
デフォルトではEC2とS3はインターネットを経由して通信する。
プライベートな接続をするには、VPCエンドポイントを使用し、S3バケットポリシーでVPCエンドポイントからのアクセスを許可する必要がある。

### ストレージクラス分析
ストレージアクセスパターンを分析し、適切なデータを適切なストレージクラスに移行すべきタイミングを判断できる → 最適なライフサイクルポリシーを設定できる

### S3イベント通知
バケット内イベントの発生をトリガーとして、**SNS／SQS／Lambda／EventBridge**に通知設定が可能。
同一条件の通知を複数の宛先に送ることはできないので、そのような場合にはSNSを使って複数に配信するのが良い。

### S3のデータ解析
| サービス | 特徴 |
|:-:|:-:|
| S3 Select | S3に内部機能として有している検索機能。S3内で直接にクエリを実行してデータを取得できる。GZIP圧縮データやCSVやJSONに対して実行可能。単純なクエリに適している |
| Athena  | S3内のデータを直接簡単に分析できる。複雑な分析もできる。  |
| Macie  |  機械学習により、S3の機密データを検出・分類・保護できるフルマネージドサービス |
| Redshift Spectrum  | S3の格納データに対してRedshiftから直接クエリを実行できる。Redshiftクラスターが起動されている前提 |

:::note warn
S3 Selectは単一ファイルに特化。
Athenaは複数ファイルでもクエリ可能。
:::

### 静的ウェブサイトのホスティング
S3で静的ウェブサイトをホスティングした場合のURLは、`http://【bucket-name】.s3-website-Region.amazonaws.com`のようになる。

#### 静的ウェブサイト公開の手順
1.ブロックパブリックアクセスを無効化する
2.バケットポリシーでバケットの読み取り許可を設定
3.`index.html`などのインデックスファイルをバケット内に保存する
4.`3`で保存したインデックスドキュメントを有効化する

### S3 Transfer Acceleration
S3バケットへのデータの**アップロード速度**を向上させるための機能。
特に、遠隔地から大量のデータを転送する場合に効果を発揮する。
大量のデータをS3にバックアップする場合や、動画や画像などの大容量マルチメディアをS3にアップロードする際などに適している。

### 署名付きURL
AWSアカウントを持っていないユーザーでも一時的にアクセスが可能になる機能。
ダウンロードの他、アップロード用のURLも発行できる。
最大7日間の有効期間を設定できる。

### S3インベントリ
S3に保存されているオブジェクトとそのメタデータに関する情報を定期的にレポートとして出力する機能。
ストレージ分析、データライフサイクル管理（古いオブジェクトや不要なオブジェクトの特定をして削除するなど）、データ監査、移行などに利用される。
未暗号化オブジェクトの特定にも利用できる。
**バケットまたはプレフィクス単位**で利用できる。

### S3 Storage Lens
S3ストレージの可視性と分析を提供するツール。
**リージョン全体で**バケットの使用状況や設定状況を監視できる。
バージョニングが有効でないバケットを特定するのにも有効で、レポートを簡単に生成できる。

### S3 アクセスポイント
**主なできること**
+ アプリケーション固有のアクセス
    各アプリケーションに対して個別のアクセスポイントを作成し、必要なアクセス許可のみを付与できる。
+ プレフィックスによるアクセス制限
    アクセスポイントごとにプレフィックスを指定することで、特定のプレフィックスへのアクセスのみを許可できる。

### S3 Object Lambda
S3に保存されたオブジェクトを取得する際に、Lambda関数を使ってデータを変換できる機能。
例えば画像のリサイズやフォーマット変換、テキストデータからPII（個人情報）を削除するなどの変換が可能。

### S3オブジェクトのバイト範囲リクエスト
HTTPのRangeヘッダーを利用して、S3に保存されているオブジェクトの一部だけを取得できる。
バイト範囲リクエストを利用して複数リクエストを行うことでダウンロード速度を向上させることができる。

## FSx for Lustre
高性能ファイルシステムであるLustreを提供するAWSストレージサービス。
Lustreは、スパコンや機械学習を含むHPCアプリケーションで利用されているファイルシステム。
FSx for LustreはS3との連携が特徴の一つ。
S3バケットをFSx for Lustreと統合すると、ファイルシステムとS3間でデータを自動的にインポートおよびエクスポートできる。

## FSx for XXXの高可用性の実現方法について
| サービス | 高可用性の実現方法 | マルチAZの概念 |
|:-:|:-:|:-:|
|  FSx for Windows File Server |  シングルAZとマルチAZを提供。アクティブ／スタンバイ構成。自動フェイルオーバー。 | マルチAZデプロイメントタイプを選択すると実現できる。  |
|  FSx for Lustre |  S3との連携。ファイルシステムの復元。 |  ファイルシステムは単一AZ。高可用性はS3などと連携することで実現。 |
|  FSx for NetApp ONTAP |  シングルAZ構成とマルチAZ構成を提供。マルチAZの場合はNetApp Mirrorを使用した非同期レプリケーションと手動フェイルオーバー。 |  マルチAZでも手動フェイルオーバー。Windows File Serverのような自動フェイルオーバーではない |
|  FSx for OpenZFS |  バックアップと復元 | ファイルシステムは単一AZ。高可用性はバックアップからの復元で担保  |

### ファイルシステム
FSx for Lustreには、大きく分けて「スクラッチファイルシステム」と「永続ファイルシステム」の2種類のデプロイオプションがある。
| - | スクラッチファイルシステム | 永続化ファイルシステム |
|:-:|:-:|:-:|
| 永続性  | データレプリケーションはされず、障害発生時に失われる  | レプリケーションされ、障害発生時も保持される  |
|  パフォーマンス |  高バーストスループット | 安定したパフォーマンス  |
|  コスト | 低  | 高  |
| 主な用途  |  一時的なデータ処理、短期間のデータ保存 |  長期データ保存、重要データの保存 |

## AWS Storage Gateway
オンプレミス環境のストレージをS3に接続して拡張するサービス
ゲートウェイタイプは以下3つ
+ **ファイルゲートウェイ**
    シームレスにAWSクラウドに接続し、データファイルやバックアップイメージをS3に保存するバックアップソリューションを提供する。
    オンプレから、S3に保存されているファイルを、まるでローカルのハードディスクに保存されているかのようにアクセスできる。
+ **ボリュームゲートウェイ**
    + オンプレアプリケーションにクラウドバックアップのiSCSIブロックストレージボリュームを提供
    + キャッシュ型ボリュームまたは保管型ボリュームのどちらかを使用
+ **テープゲートウェイ**
    S3とGlacierにデータを保管する仮想テープストレージとVTL管理を提供する
**さらに、ボリュームゲートウェイは保管型とキャッシュ型の2つに分かれる**
+ **キャッシュ型ボリュームゲートウェイ**
    + プライマリーはS3ストレージ
    + オンプレ環境のストレージをS3に拡張する
    + 頻繁にアクセスされるデータはローカルのストレージゲートウェイに保持
    + 頻繁にアクセスするデータはオンプレ環境にキャッシュ保持することで低レイテンシを実現
+ **保管型ボリュームストレージウェイ**
    + プライマリーはオンプレストレージ
    + プライマリデータをローカルに保存する一方で、そのデータを非同期にS3にバックアップする
    + オンプレのアプリケーションがそのデータセット全体に低レイテンシでアクセス可能