概要
Amazon EC2(Elastic Compute Cloud)は、AWSが提供する仮想サーバーサービスです。物理サーバーを購入・管理することなく、必要なときに必要な分だけコンピューティングリソースを利用できます。
クラウド上でアプリケーションを動かすためには、まずサーバーが必要です。EC2はAWSのもっとも基本的なサービスの1つであり、Webサーバー、アプリケーションサーバー、開発環境など多くのユースケースで利用されています。この記事では、EC2インスタンスを起動してSSHで接続するまでの基本操作を体験します。

この記事のメリット
- Amazon EC2の基本概念(インスタンス、AMI、インスタンスタイプ、キーペア、セキュリティグループ)を理解できる
- AWSマネジメントコンソールからEC2インスタンスを起動する手順を習得できる
- キーペアを使ったSSH接続の仕組みと手順を理解できる
- インスタンスの状態管理(起動・停止・終了)の違いを把握できる
キャラクター紹介
クラウド資格実践ラボの基礎学習記事では、ルクシーちゃんと代表の土肥が対話形式で AWS 認定試験で必要な知識をハンズオンとともに解説していくブログです。これからこのブログを案内する2人を紹介します。

ルクシーちゃん
クラウド資格に挑戦中の好奇心旺盛なナビゲーター。初学者目線で「これってなんだろう?」と素朴な疑問を投げかけ、知識を引き出していく役どころ。難しい内容も、ルクシーちゃんと一緒なら一歩ずつ理解できると思います!
土肥(とひ)
株式会社Luxyの代表であり同社の元エンジニア。これまでオンプレとAWS環境のインフラを担当。AWS認定資格の学習で得た知識をハンズオンとともに解説するのが得意。直近では新人の教育なども行っており、これから技術を学ぼうという方が納得できるように解説できることに喜びを感じているとのこと。

技術解説
EC2インスタンスとは
Luxyちゃんとひさん、EC2インスタンスってよく聞くんですけど、具体的にはどういうものなんですか?
簡単に言うと、AWS上で動く仮想マシンのことだよ。物理サーバーのハードウェアリソースを仮想化技術で分割して、1台1台が独立したサーバーとして使えるんだ。



自分専用のサーバーがクラウド上にあるようなイメージですか?
そうそう、まさにそのイメージ。しかも数分で起動できるし、不要になったら即座に削除(終了)もできる。物理サーバーだと購入から設置まで何週間もかかるけど、EC2なら数クリックでサーバーが手に入るんだよ。



すごく手軽なんですね!
インスタンスを構成する主要要素



EC2インスタンスを起動するときって、何を設定すればいいんですか?
大きく4つの要素を指定するよ。まず1つ目がAMI(Amazon Machine Image)。これはインスタンスの起動に使うテンプレートで、OSの種類(Amazon Linux、Ubuntu、Windowsなど)やプリインストールされたソフトウェアの構成が含まれているんだ。



パソコンを買うときにWindowsかMacかを選ぶような感じですか?
いいたとえだね!まさにそんな感じ。で、2つ目がインスタンスタイプ。これはインスタンスに割り当てるCPU、メモリ、ストレージ、ネットワーク性能の組み合わせだよ。用途に応じていくつかのファミリーから選べるんだ。まとめるとこんな感じだよ。
| ファミリー | 例 | 特徴 |
|---|---|---|
| 汎用 | t3.micro, t3.small | バランスの取れたリソース配分。開発環境やWebサーバーに適する |
| コンピューティング最適化 | c6i.large | CPU性能を重視。バッチ処理や科学計算に適する |
| メモリ最適化 | r6i.large | メモリ容量を重視。データベースやキャッシュに適する |
| ストレージ最適化 | i3.large | 高速なローカルストレージ。データウェアハウスに適する |



用途に合わせてスペックを選べるんですね!残り2つは何ですか?
3つ目がキーペア。インスタンスにSSH接続するための認証に使う公開鍵と秘密鍵のペアだよ。公開鍵はインスタンス内に配置されて、秘密鍵はユーザーがローカルに保持するんだ。家の鍵に例えると、公開鍵がドアの鍵穴で、秘密鍵が自分だけが持つ鍵、というイメージだね。



なるほど、秘密鍵をなくしたらログインできなくなっちゃうんですね。
その通り!だから秘密鍵の管理はとても大事だよ。そして4つ目がセキュリティグループ。これはインスタンスへのネットワークアクセスを制御するファイアウォールで、インバウンド(受信)とアウトバウンド(送信)のトラフィックルールを定義するんだ。



誰がアクセスできるかをコントロールする仕組みなんですね!


インスタンスのライフサイクル



EC2インスタンスって、起動したらずっと動いてるんですか?
いい質問だね。インスタンスにはいくつかの状態があって、ライフサイクルとして管理されているんだ。主要な状態をまとめるとこうなるよ。
| 状態 | 説明 |
|---|---|
| pending | 起動処理中 |
| running | 稼働中。課金が発生する |
| stopping | 停止処理中 |
| stopped | 停止済み。インスタンスストアのデータは消失するが、EBSボリュームのデータは保持される。コンピューティング料金は発生しない |
| shutting-down | 終了処理中 |
| terminated | 終了済み。すべてのリソースが解放される |



「停止」と「終了」って何が違うんですか?似てるようで違う気がするんですけど…
ここは大事なポイントだね。「停止」はインスタンスを一時的に止める操作で、再起動して使い続けることができるんだ。パソコンのスリープに近いかな。一方「終了」はインスタンスを完全に削除する操作で、元に戻すことはできないよ。



「終了」は取り消せないんですね…間違えたら大変だ。
そうなんだ。だから操作するときは「停止」なのか「終了」なのか、しっかり確認してからクリックするようにしようね。ちなみに停止中はコンピューティング料金が発生しないから、使わないときは停止しておくとコスト節約になるよ。



使わないときは停止、もう要らなくなったら終了、と使い分ければいいんですね!
実践
ここでは、EC2インスタンスを1台起動し、SSH接続してコマンドを実行するまでの手順を体験します。
前提条件
- リージョン:
ap-northeast-1(東京) - AWSマネジメントコンソールにログイン済み
- VPC/サブネットが存在する状態
| リソース種別 | リソース名 | 用途 |
|---|---|---|
| EC2インスタンス | my-first-instance | ハンズオン用インスタンス |
| キーペア | my-first-keypair | SSH接続用 |
キーペアの作成
- 上部の検索バーに
EC2と入力し、表示された「EC2」を選択します - 左側ナビゲーションの「ネットワーク&セキュリティ」→「キーペア」を選択します
- 「キーペアを作成」をクリックします
- 以下を設定します
- 名前:
my-first-keypair - キーペアタイプ:
RSA - プライベートキーファイル形式:
.pem(Linux/macOSの場合) - 「キーペアを作成」をクリックします


秘密鍵ファイル my-first-keypair.pem が自動的にダウンロードされます。このファイルはSSH接続に必要なため、安全な場所に保管してください。
ターミナルで秘密鍵のパーミッションを変更します。
chmod 400 my-first-keypair.pemインスタンスの起動
- 左側ナビゲーションの「インスタンス」→「インスタンス」を選択します
- 「インスタンスを起動」をクリックします
- 以下を設定します
名前とタグ
- 名前:
my-first-instance
AMI(Amazon マシンイメージ)
- Amazon Linux 2023 AMI を選択します(デフォルトで選択されています)
- アーキテクチャ:
64ビット (x86)


インスタンスタイプ
- インスタンスタイプ:
t3.micro
キーペア
- キーペア名:
my-first-keypair(先ほど作成したキーペアを選択)
ネットワーク設定
- 「編集」をクリックします
- VPC: 作成済みのVPCを選択
- サブネット:作成済みの パブリックサブネットを選択
- パブリックIPの自動割り当て:
有効化 - ファイアウォール(セキュリティグループ): 「セキュリティグループを作成する」を選択
- セキュリティグループ名:
my-first-instance-sg - インバウンドセキュリティグループのルール:
- タイプ:
ssh - ソースタイプ:
自分のIP


その他の項目はデフォルトのままにします。
- 「インスタンスを起動」をクリックします
起動成功のメッセージが表示されます。


インスタンスへのSSH接続
- インスタンス一覧画面で、
my-first-instanceの状態が「実行中」になるまで待ちます my-first-instanceを選択し、下部の「詳細」タブで「パブリック IPv4 アドレス」を確認します


ターミナルから以下のコマンドでSSH接続します。{パブリックIP} は確認したIPアドレスに置き換えてください。
ssh -i my-first-keypair.pem ec2-user@{パブリックIP}初回接続時にホスト鍵の確認メッセージが表示されるため、yes と入力します。
接続に成功すると、Amazon Linux のプロンプトが表示されます。以下のコマンドでインスタンスの情報を確認できます。
# OSの情報を確認
cat /etc/os-release
# インスタンスメタデータからインスタンスタイプを確認
TOKEN=$(curl -s -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
curl -s -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/instance-type確認が完了したら exit でSSH接続を終了します。
インスタンスの状態確認
- インスタンス一覧画面で
my-first-instanceを選択します - 「インスタンスの状態」ドロップダウンから、インスタンスの停止や終了が可能であることを確認します


まとめ
- Amazon EC2は、必要なときに必要な分だけ利用できる仮想サーバーサービスである
- インスタンスの起動にはAMI(OSテンプレート)、インスタンスタイプ(スペック)、キーペア(認証)、セキュリティグループ(ファイアウォール)の設定が必要
- キーペアの秘密鍵はダウンロード後に再取得できないため、紛失に注意が必要
- セキュリティグループのインバウンドルールでSSHを許可する際は、ソースを「自分のIP」に限定してセキュリティを確保する
- インスタンスの「停止」は一時停止(再起動可能)、「終了」は完全な削除であり、用途に応じて使い分ける









