AWS EC2のインスタンス

# 動機
AWS SAA-C03の勉強のための備忘録です．なるべく細かく記載するようにしています．  
AWSの公式を見ながらChatGPTの出力をまとめたものになります．間違いがあればご指摘ください．

# AWS EC2 インスタンスタイプ

## インスタンスタイプの名称、説明、ユースケース

| インスタンスタイプ | 説明                                                                 | ユースケース                                 |
|------------------|----------------------------------------------------------------------|--------------------------------------------|
| **t**            | 汎用インスタンスタイプで、バースト可能な性能を提供。                 | ウェブサーバー、開発/テスト環境、低負荷アプリケーション |
| **m**            | バランスの取れたCPU、メモリ、ネットワーク性能を提供。               | 中規模のアプリケーション、データベースサーバー、開発環境 |
| **c**            | コンピューティング最適化。高いCPU性能を提供。                       | 高パフォーマンスコンピューティング、ビデオエンコーディング、科学技術計算 |
| **r,x**          | メモリ最適化。大量のメモリを提供。                                   | 高性能データベース、大規模データ分析、インメモリキャッシュ |
| **d,h,i**        | ストレージ最適化。NVMe SSDによる高速なローカルストレージ。           | データベース、NoSQLストレージ、HDFSクラスター |
| **f,g,p**        | GPU最適化。機械学習や高性能コンピューティング向けのGPUインスタンス。  | ディープラーニング、AI、3Dレンダリング、科学的シミュレーション |

## インスタンスサイズ

| サイズ        | 説明                                           | 容量例（vCPUs/メモリ/ストレージ） |
|--------------|----------------------------------------------|----------------------------|
| **nano**     | 最小規模のインスタンス。非常に小さなワークロードに最適。  | 1 vCPU / 0.5 GB メモリ       |
| **micro**    | 小規模ワークロード、低トラフィックのアプリケーション向け。| 1 vCPU / 1 GB メモリ         |
| **small**    | 開発やテスト用の小規模インスタンス。               | 1 vCPU / 2 GB メモリ         |
| **medium**   | 一般的な小規模アプリケーションやウェブサーバー向け。      | 2 vCPU / 4 GB メモリ         |
| **large**    | 中規模ワークロードやトラフィックの多いアプリケーション向け。| 2 vCPU / 8 GB メモリ         |
| **xlarge**   | 中〜大規模アプリケーション向け。                    | 4 vCPU / 16 GB メモリ        |
| **2xlarge**  | 高負荷なアプリケーション向け。                     | 8 vCPU / 32 GB メモリ        |
| **4xlarge**  | より大規模なワークロード向け。                     | 16 vCPU / 64 GB メモリ       |
| **8xlarge**  | 高トラフィックのアプリケーションやデータベース向け。    | 32 vCPU / 128 GB メモリ      |
| **16xlarge** | 大規模なコンピューティング、分析処理向け。           | 64 vCPU / 256 GB メモリ      |
| **32xlarge** | 非常に大規模なアプリケーション向け。                | 128 vCPU / 512 GB メモリ     |

## インスタンスタイプの変更

インスタンスタイプの変更は、以下の条件に基づいて可能です：

1. **停止中のインスタンス**のみ変更が可能（インスタンスが起動中の場合、インスタンスタイプを変更できません）。
2. **EBSボリュームを使用**している場合、インスタンスタイプ変更後でもデータは保持されます。
3. **インスタンスストレージ**を使用している場合、インスタンスタイプ変更後にストレージの内容は失われる可能性があります。
4. インスタンスタイプの変更は、同じリージョン内でのみ行えます。

変更可能なストレージタイプに関しては、以下の表を参照してください。

## ストレージタイプの変更

| ストレージタイプ   | 説明                                       | インスタンスタイプ変更時の影響            |
|-----------------|------------------------------------------|----------------------------------------|
| **EBS (Elastic Block Store)** | 永続的なストレージ。データがインスタンスの停止・終了後も保持される。 | インスタンスタイプ変更後でもデータ保持。   |
| **インスタンスストレージ** | 一時的なストレージ。インスタンスが停止または終了するとデータが失われる。 | インスタンスタイプ変更後にデータは失われる。 |

## Compute Optimizer

**Compute Optimizer** は、AWSのサービスで、インスタンスの使用状況を分析し、最適なインスタンスタイプの選定を支援します。これにより、コスト削減とパフォーマンスの最適化が可能になります。

### 主な機能
1. **推奨インスタンスタイプ**: 現在使用しているインスタンスに対して最適なインスタンスタイプを推奨。
2. **パフォーマンス評価**: 既存インスタンスのパフォーマンスを分析し、リソースの過不足を指摘。
3. **コスト最適化**: 無駄に高スペックなインスタンスを使用している場合、より低スペックなインスタンスを推奨することでコスト削減を図ります。
4. **データの可視化**: インスタンスのリソース使用状況を可視化し、改善のための具体的なアクションを提案。

Compute Optimizerのレポートは、推奨するインスタンスタイプのサイズやファミリーの選定に役立ち、運用コストの最適化を支援します。  
**可視化**と**最適化の提案**を提供．実際に最適化を行うアクションは出来ない．

# AWS EC2 購入オプション

| 購入オプション              | 説明                                                                                       | ユースケース                                             |
|------------------------|------------------------------------------------------------------------------------------|--------------------------------------------------------|
| **オンデマンドインスタンス**  | インスタンスを必要なときに起動し、使った分だけ料金が発生。長期間の契約不要で、柔軟な利用が可能。                          | 短期間の利用、予測できないトラフィック、テスト環境、開発環境 |
| **リザーブドインスタンス**   | 1年または3年の契約でインスタンスを予約し、長期間の使用に対して割引価格を提供。**インスタンスタイプやリージョンの変更不可**                                        | 長期間の使用が確定しているアプリケーション、ウェブサーバー、大規模データベース |
| **スポットインスタンス**     | 余剰キャパシティを利用し、需要が少ないときに割安な料金でインスタンスを使用。AWSによってインスタンスが停止されることがある。   | バッチ処理、大規模データ分析、低コストで実行できる一時的な作業 |
| **Savings Plans**         | 1年または3年の契約に基づき、使用量に応じた割引を提供する。**インスタンスタイプやリージョンを柔軟に変更可能**。               | 使用量が予測できる場合、大規模なインフラに適用することでコストを削減 |
| **専用ホスト**             | 物理ホストを専有し、ソフトウェアライセンスを持ち込むことでコスト削減が可能。特定のインスタンスタイプやVM単位での利用が可能。 | 独自ライセンスの運用が必要な場合、コンプライアンス要求がある場合、特定のハードウェアが必要な場合 |
| **ハードウェア専有インスタンス** | シングルテナントハードウェア上で実行されるインスタンス。料金は時間単位で発生し、他の顧客とリソースを共有しない。                 | セキュリティやコンプライアンス要件が厳しい場合、専用リソースが必要な場合 |

# EC2インスタンスの起動方法

## 1. インスタンス起動ウィザードを使用した起動
- **用途**: 手動でインスタンスを簡単に設定したい場合に使用します。AWSマネジメントコンソールでインスタンスを起動する際に最も一般的な方法で、基本的なインスタンスの設定（AMI、インスタンスタイプ、ストレージ、セキュリティグループなど）をガイドに従って行えます。

## 2. 起動テンプレートを使用した起動
- **用途**: 同じ設定を繰り返し使用したい場合、インスタンスの起動設定を事前にテンプレートとして保存し、これを使ってインスタンスを一貫性を持って起動する場合に使用します。大規模なインスタンスの管理や自動化が求められる環境に適しています。

## 3. 既存のインスタンスから起動する
- **用途**: 既存のインスタンスと同じ設定で新しいインスタンスを起動したい場合に使用します。元のインスタンスの設定をコピーし、スナップショットやAMIを使って新しいインスタンスを起動する方法です。特定の設定やアプリケーション環境を複製する際に便利です。

## 4. AWS Marketplace AMI からの起動
- **用途**: AWS Marketplaceに公開されているソフトウェアやアプリケーションを含むAMIからインスタンスを起動する場合に使用します。商用ソフトウェアや事前構成されたアプリケーションが必要な場合に適しています。

# EC2インスタンスの状態

| 状態              | 説明                                                                 |
|-------------------|----------------------------------------------------------------------|
| **pending**       | インスタンスが起動中で、まだ稼働していない状態。                     |
| **running**       | インスタンスが正常に起動し、稼働中の状態。                           |
| **stopping**      | インスタンスがシャットダウン中の状態。                               |
| **stopped**       | インスタンスが停止しており、リソースが割り当てられていない状態。     |
| **shutting-down** | インスタンスが終了中で、リソースを解放する処理を行っている状態。     |
| **terminated**    | インスタンスが終了し、削除された状態。                             |