EC2 | AWS SAA 受験に向けた学習メモ①

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

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

## EC2 インスタンスタイプ
| インスタンスタイプ | ファミリー | 説明 |
|:-:|:-:|:-:|
|  汎用 |  A1、M5、T3など |  バランス型。ウェブサーバーやコードリポジトリなどに最適。T系はクラスタープレイスメントグループによる設定ができない。 |
|  コンピューティング最適化 |  C5、C6gなど |  HPC、専用ゲームサーバー、機械学習などに最適 |
|  メモリ最適化 | X1、R5、ハイメモリ、z1dなど  |  メモリ最適化 |
|  ストレージ最適化 |  H1(HDDベース)、D2(HDDベース)、I3、I3enなど |  ローカルストレージの大規模データセットに対する高いI/O性能を必要とするワークロード用。 |
| 高速コンピューティング  | P3、Inf1、G4、F1  |  浮動小数点計算、グラフィックス処理など |
> 覚え方は以下の記事を参考にさせていただきました。
> 最低限、汎用系: m(**M**iddle), t(**T**urbo)、コンピューティング: c(**C**PU)、メモリ: r(**R**AM)は覚えることにした

https://qiita.com/feifo/items/38c97b41dfbe468c640e


## リザーブドインスタンスの購入方法
リザーブドインスタンスの購入方法には「スタンダード」と「コンバーティブル」がある。

| - | スタンダード | コンバーティブル |
|:-:|:-:|:-:|
|  利用期間 | 1年(40%割引), 3年(60%割引)  |  1年(31%割引), 3年(54%割引) |
|  AZ/インスタンスサイズ/ネットワークタイプ変更可否 | 有  |  有 |
|  インスタンスファミリー/OS/テナンシー/支払いオプションの変更可否 | なし  | 有  |


## AutoScaling
### スケーリングに利用できるメトリクス
動的スケーリング（簡易スケーリング、ステップスケーリング）で利用できるメトリクスは以下の通り
#### デフォルト利用できる定義済みメトリクス
+ 平均CPU使用率
+ ネットワーク入力／出力バイト数
+ ディスク読み取り／書き込みオペレーション数
#### カスタムメトリクス
CloudWatchなどと連携することで利用できるメトリクス
+ メモリ使用率
+ リクエスト数
+ レスポンスタイムなど

### Auto Scaling配下のEC2ヘルスチェック
ヘルスチェックには「EC2タイプ」と「ELBタイプ」がある。
| 項目 | EC2タイプ | ELBタイプ |
|:-:|:-:|:-:|
| 対象  |  EC2インスタンスのOSレベルの状態 |  EC2インスタンスで実行されているアプリケーションの応答性 |
| チェック方法  | EC2インスタンスのステータスチェック  |  HTTP(S)、TCP、またはカスタム |
| 目的  |  インスタンスが起動しており、基本的な機能が動作しているか確認 | アプリケーションが外部からのリクエストに対して応答しているか確認  |
| トリガー  | Auto Scalingグループによるインスタンスのスケールイン／アウト  | LBによるトラフィックのルーティング  |

### Auto Scalingの終了ポリシー
+ OldestInstance: 最も古いインスタンスから順番に終了
+ NewestInstance: 最も新しい起動時刻のインスタンスから終了
+ OldestLaunchConfiguration: 最も古い起動設定により起動しているインスタンスから終了（デフォルト)
+ ClosestToNextInstanceHour: 次の課金時期が最も近いインスタンスから終了

### Auto Scaling ウォームプール
スケーリング時におけるレイテンシーを削減するために利用する。
事前に初期化されたEC2インスタンスのプールを維持することでレイテンシーを削減できる。
ウォームプール内のインスタンスは「停止」または「休止」の状態にすることができる。

### クールダウン期間
スケーリングアクティビティ（スケールアウトまたはスケールイン）が完了した後、次のスケーリングアクティビティが開始されるまでの待機時間。
デフォルトでは300秒(5分)
不必要なスケーリングを防止するために必要な機能。

### AutoScalingの設定オプション
+ 最小キャパシティ
+ 最大キャパシティ
+ 希望するキャパシティ: AutoScalingが実行されない状態でのインスタンス数。この数値を変更することで手動スケーリングさせることも可能。

### 予測スケーリング
過去のワークロードの傾向に基づいて将来のスケーリングニーズを予測し、事前にリソースをスケールアウト／スケールインする。

## インスタンスプロファイル
EC2インスタンスは単体では他のAWSサービスへのアクセス権限を持っていない。
そのため、S3にファイルを保存したり、DynamoDBにアクセスしたりするには権限を付与する必要がある。
権限を付与するには、インスタンスプロファイルを使用する。
インスタンスプロファイルは、EC2インスタンスプロファイルはEC2インスタンスにIAMロールを割り当てるための仕組み。

:::note warn
EC2インスタンスには直接IAMロールを割り当てることはできない
:::

## メタデータ取得
EC2インスタンスメタデータを取得する唯一の方法は、リンクローカルアドレス (169.254.169.254) を使用すること。
` curl http://169.254.169.254/latest/meta-data/`

## IMDSv2
IMDSとは **Instance Metadata Service**の略。
IMDSv2は、EC2において、メタデータへのアクセスをよりセキュアにするために導入された機能。
インスタンスのメタデータ（インスタンスIDやIPアドレス、セキュリティグループなど）にアクセスする際に、セッションベースの認証を要求する。
メタデータサービスのエンドポイントにPUTリクエストを送るなどして取得したトークンを利用するなど方法を取る必要がある。

## モニタリングについて
### 詳細モニタリング
詳細モニタリングを有効にすると、EC2インスタンスのメトリクスを1分間隔で取得できる。
（デフォルトでは5分間隔)

## Elastic Fabric Adapter(EFA)
EC2インスタンスにアタッチできるネットワークインターフェースで、HPCアプリケーションやML（機械学習）に最適な高性能の通信を提供できる。

## EC2 ハイバネーション
EC2インスタンスを一時停止し、後で中断した状態から再開できる機能。
PCのスリープ機能に似ている。
インスタンスを停止する前にメモリの内容（実行中アプリケーションやファイルなどのデータ）をEBSボリュームに保存し、インスタンスを再起動すると停止前の状態から処理を継続できる。