EC2 の停止・休止・終了の違い ── 休止でメモリの中身ごと止める
記事の「実践」を 1 項目ずつ進めるためのページです。AWS マネジメントコンソールで操作したら、右の一覧にチェックを入れてください。チェックはこのブラウザに保存されます。
前提条件
- リージョン:
ap-northeast-1(東京) - EC2・Systems Manager の操作権限を持つ IAM ユーザーまたはロールでコンソールにログイン済みであること
以下のリソースが作成済みであることを前提とします。
まだ用意していない場合は、「作り方の参考」の記事の手順で作れます。リソース名は、この記事の名前に読み替えてください。
| リソース種別 | リソース名 | 内容 | 作り方の参考 |
|---|---|---|---|
| VPC | hib-lab-vpc | CIDR 10.0.0.0/16 | Amazon VPC で仮想ネットワークを構築しサブネットを設定する |
| パブリックサブネット | hib-lab-public-1a | 10.0.1.0/24(ap-northeast-1a)。インターネットゲートウェイへのルートあり、パブリック IPv4 アドレスの自動割り当て有効 | 同上 |
| セキュリティグループ | hib-lab-sg | インバウンドルールなし(Session Manager で接続するため) | 同上 |
| IAM ロール / インスタンスプロファイル | hib-lab-ssm-role / hib-lab-ssm-profile | AmazonSSMManagedInstanceCore をアタッチ | AWS Systems Manager でインスタンスをリモート管理する |
このハンズオンで作成するリソースは以下のとおりです。
| リソース種別 | リソース名 | 内容 |
|---|---|---|
| EC2 インスタンス | hib-lab-instance | Amazon Linux 2023・t3.micro・休止を有効化・ルートボリューム 8 GiB(gp3・暗号化) |
> [!WARNING] > 休止中・停止中も、EBS ボリュームのストレージ料金はかかります。検証が終わったら必ずインスタンスを終了してください。
手順 1: 休止を有効にしてインスタンスを起動する
AWS マネジメントコンソールにログインし、リージョンが ap-northeast-1(東京)であることを確認します。
上部の検索バーに EC2 と入力し、「EC2」を選択します。左側ナビゲーションの「インスタンス」を選択し、右上の「インスタンスを起動」をクリックします。以下を設定します。
- 名前:
hib-lab-instance - アプリケーションおよび OS イメージ:
Amazon Linux 2023 AMI(既定のまま) - インスタンスタイプ:
t3.micro - キーペア:
キーペアなしで続行 (推奨されません)(接続は Session Manager で行います) - ネットワーク設定: 「編集」をクリックし、VPC
hib-lab-vpc、サブネットhib-lab-public-1a、パブリック IP の自動割り当て有効化を選択。「既存のセキュリティグループを選択する」を選び、「共通のセキュリティグループ」でhib-lab-sgを選択
「ストレージを設定」で右側の「アドバンスト」をクリックし、「ボリューム 1 (AMI ルート)」を展開して、以下のように設定します。
- サイズ (GiB):
8(既定のまま。t3.microの RAM は 1 GiB なので、OS と RAM の内容を書き込める) - ボリュームタイプ:
gp3 - 暗号化済み:
暗号化済み(既定は暗号化なし) - KMS キー:
(デフォルト) aws/ebs(暗号化済みにしても自動では入らないので、一覧から選びます)
「高度な詳細」を展開し、以下を設定します。
- IAM インスタンスプロフィール:
hib-lab-ssm-profile - 停止 - 休止動作:
有効化(既定は未選択。ルートボリュームが暗号化されている必要がある、という説明が表示されます)
その他の項目はデフォルトのままにして、右側の「インスタンスを起動」をクリックします。
インスタンスの一覧で hib-lab-instance を選択し、下部の「詳細」タブを下にスクロールして、「停止 - 休止動作」が 有効 になっていることを確認します。
手順 2: メモリ上にファイルを置く
インスタンスの状態が「実行中」になってから 1〜2 分待ちます。hib-lab-instance を選択して右上の「接続」をクリックし、「Session Manager」タブで「接続」をクリックします。
開いたターミナルで、次のコマンドを実行します。
echo "banana-$(date +%H%M%S)" > /dev/shm/memo.txt
cat /dev/shm/memo.txt
uptime -s
/dev/shm/memo.txt の中身と、OS が起動した時刻(uptime -s の結果)を控えておきます。
Session Manager のタブは閉じて構いません。
手順 3: 休止して、もう一度起動する
インスタンスの一覧で hib-lab-instance を選択し、「インスタンスの状態」→「インスタンスを休止」をクリックします。確認画面で「休止」をクリックします。
インスタンスの状態が「停止中」を経て「停止済み」になったら、「インスタンスの状態」→「インスタンスを開始」をクリックします。状態が「実行中」になったら、手順 2 と同じように Session Manager で接続し、次のコマンドを実行します。
cat /dev/shm/memo.txt
uptime -s
手順 2 で置いたファイルが残っており、OS の起動時刻も手順 2 と同じであることを確認します。メモリの内容が読み戻され、OS は起動し直さずに休止前の続きから動いています。
手順 4: 停止して、もう一度起動する
比べるために、今度は通常の停止を試します。hib-lab-instance を選択し、「インスタンスの状態」→「インスタンスを停止」をクリックします。
インスタンスの状態が「停止済み」になったら「インスタンスを開始」をクリックし、「実行中」になったら Session Manager で接続して同じコマンドを実行します。
cat /dev/shm/memo.txt
uptime -s
cat は「No such file or directory」となり、起動時刻も新しい時刻に変わっていることを確認します。停止では RAM の内容が捨てられ、OS が一から起動し直しています。