仮想サーバーの起動から運用まで!EC2完全マスターガイド
こんにちは!現役エンジニアのakrです。
「【AWSプロフェッショナルへの道】現役エンジニアが贈るクラウド実践ガイド」の第3回です。前回は、AWSのプライベートネットワークを構築する「VPC」について深掘りし、その設計と構築の基本を学びました。VPCがAWSリソースを配置する「箱」だとすれば、今回はその箱の中に実際にサーバーを配置する話になります。
今回は、AWSのコンピューティングサービスの中心であり、最も頻繁に利用されるサービスの1つ、EC2 (Elastic Compute Cloud) を徹底的に解説します。EC2は、AWSクラウド上で仮想サーバー(インスタンス)を柔軟に起動・管理できるサービスです。
「オンプレミスのサーバー管理は大変そう…」と感じている方もいるかもしれませんが、EC2を使えば、数分でサーバーを立ち上げ、自在にスケールさせることが可能です。本記事では、EC2インスタンスの起動から、インスタンスタイプの選び方、ストレージ、セキュリティ、基本的な運用までを網羅的に学び、実践的なスキルを身につけましょう。
1. EC2とは?クラウドの仮想サーバーを理解する
EC2 (Elastic Compute Cloud) は、AWSが提供する仮想サーバーサービスです。「Elastic(伸縮自在な)」という名前の通り、必要な時に必要なだけサーバーを起動し、需要に応じて柔軟にスケールさせることができます。
オンプレミスでサーバーを準備する場合、ハードウェアの選定、調達、設置、OSのインストールなど、多大な時間とコストがかかります。しかし、EC2を使えば、これら全てのプロセスが数クリック、数分で完了します。
EC2でできること
- サーバーの起動・停止・終了: 必要に応じてサーバーを簡単に起動したり、不要な時には停止・終了してコストを節約できます。
- 多様なインスタンスタイプの選択: CPU、メモリ、ストレージなどのスペックが異なる多種多様なインスタンスタイプから、用途に最適なものを選べます。
- ストレージの管理: 永続ストレージであるEBS(Elastic Block Store)をアタッチして、データを保存できます。
- ネットワーク設定: 仮想ネットワークインターフェースや固定IPアドレス(Elastic IP)を割り当て、VPC内で自由にネットワークを構成できます。
- スケーリング: Auto Scalingと連携して、負荷に応じて自動的にインスタンスを増減させることが可能です。
EC2は、Webサーバー、アプリケーションサーバー、バッチ処理、開発環境など、あらゆる用途で利用される、AWSの核となるサービスです。
2. EC2の主要な構成要素
EC2インスタンスを起動する前に、関連するいくつかの重要な概念を理解しましょう。
2.1. インスタンスタイプ
EC2インスタンスは、CPU、メモリ、ストレージ、ネットワーク性能の組み合わせによって、非常に多くの「インスタンスタイプ」が用意されています。用途に応じて最適なタイプを選ぶことが重要です。
代表的なインスタンスファミリー:
-
汎用 (M, Tシリーズ): バランスの取れたCPUとメモリを持ち、Webサーバーやアプリケーションサーバーなど、幅広い用途に適しています。
- Tシリーズ (T2, T3, T4gなど): CPUクレジットという仕組みで、普段は低負荷で動作し、必要に応じて一時的に高いCPU性能を発揮できます。無料枠で利用できるのもこのタイプです。
- コンピューティング最適化 (Cシリーズ): 高いCPU性能が求められるバッチ処理や科学計算、ゲームサーバーなどに適しています。
- メモリ最適化 (R, Xシリーズ): 大容量メモリが必要なデータベースやデータ分析、インメモリキャッシュなどに適しています。
- ストレージ最適化 (I, Dシリーズ): 高速なローカルストレージIOが必要なデータウェアハウスやNoSQLデータベースに適しています。
- 高速コンピューティング (P, Gシリーズ): GPUを搭載し、機械学習やグラフィック処理などに適しています。
無料枠の範囲内で試す場合は、t2.micro
または t3.micro
(※リージョンによる) インスタンスタイプを選択しましょう。
2.2. AMI (Amazon Machine Image)
AMI (Amazon Machine Image) は、EC2インスタンスを起動するためのテンプレートです。OS(Linux, Windows Serverなど)、アプリケーションサーバー、アプリケーションなどが事前に設定されています。
- AWSが提供するAMI: さまざまなOSのAMIが用意されています(Amazon Linux, Ubuntu, Windows Serverなど)。
- コミュニティAMI: 他のユーザーが公開しているAMIです。
- カスタムAMI: 自分で設定したEC2インスタンスからAMIを作成し、再利用できます。これにより、常に同じ環境のインスタンスを簡単に起動できます。
2.3. EBS (Elastic Block Store)
EBS (Elastic Block Store) は、EC2インスタンスにアタッチできる永続的なブロックストレージです。EC2インスタンスのOSやデータはEBSボリュームに保存されます。
- EC2インスタンスが停止または終了しても、EBSボリュームは独立して存在し続けるため、データが失われることはありません(ただし、インスタンス終了時にEBSボリュームも削除する設定になっている場合を除く)。
- 複数のEBSタイプ(汎用SSD (gp2/gp3), プロビジョンドIOPS SSD (io1/io2), スループット最適化HDD (st1), Cold HDD (sc1))があり、パフォーマンスとコストに応じて選択できます。
- スナップショット機能でバックアップを取得したり、別のAZにコピーしたりできます。
2.4. キーペア
EC2インスタンスにSSHで接続するために必要なのが「キーペア」です。公開鍵と秘密鍵のセットで構成されます。
- 秘密鍵 (.pemファイル): あなたの手元で厳重に管理します。SSHクライアントでインスタンスに接続する際に使用します。
- 公開鍵: EC2インスタンスの作成時にインスタンス内に配置されます。
- セキュリティ上、キーペアは一度しかダウンロードできないため、大切に保管してください。紛失するとインスタンスにログインできなくなります。
2.5. セキュリティグループ
前回のVPCの回でも触れましたが、EC2インスタンスへのアクセス制御には「セキュリティグループ」が非常に重要です。
- セキュリティグループは、インスタンスレベルの仮想ファイアウォールです。
- 許可したいプロトコル、ポート、送信元IPアドレスをルールとして設定します。
- SSH(ポート22)、HTTP(ポート80)、HTTPS(ポート443)などの必要なポートのみを「許可 (Allow)」するように設定し、不必要なポートは「拒否 (Deny)」することで、セキュリティを強化します。
- ステートフルなフィルタリングを行うため、インバウンドで許可された通信の応答は、アウトバウンドルールに関わらず自動的に許可されます。
3. 実践!EC2インスタンスを起動してみよう
それでは、実際にAWSマネジメントコンソールを使ってEC2インスタンスを起動してみましょう。今回は、前回作成したVPCのパブリックサブネットにWebサーバーを想定したEC2インスタンスをデプロイします。
3.1. キーペアの作成
まだキーペアがない場合は、先に作成しておきましょう。
- AWSマネジメントコンソールにサインインし、「EC2」サービスに移動します。
- 左のナビゲーションペインから「キーペア」を選択し、「キーペアを作成」をクリックします。
-
キーペア名:
my-web-server-keypair
など、分かりやすい名前を設定します。 - 「キーペアを作成」をクリックすると、秘密鍵(
.pem
ファイル)が自動的にダウンロードされます。このファイルを安全な場所に保管してください!
3.2. セキュリティグループの作成
SSHとHTTPでのアクセスを許可するセキュリティグループを作成します。
- EC2コンソールで左のナビゲーションペインから「セキュリティグループ」を選択し、「セキュリティグループを作成」をクリックします。
-
基本情報:
-
セキュリティグループ名:
web-server-sg
-
説明:
Allow SSH and HTTP access to web server
-
VPC: 前回作成した
my-web-app-vpc
を選択します。
-
セキュリティグループ名:
-
インバウンドルール:
- 「ルールを追加」をクリックし、以下のルールを追加します。
-
タイプ:
SSH
/ ソースタイプ:マイIP
(あなたの現在のIPアドレスからのアクセスのみ許可) またはどこでも (IPv4)
(0.0.0.0/0) (※セキュリティ上は限定推奨) -
タイプ:
HTTP
/ ソースタイプ:どこでも (IPv4)
(0.0.0.0/0)
-
タイプ:
- 「ルールを追加」をクリックし、以下のルールを追加します。
- アウトバウンドルール: デフォルトの「すべてのトラフィックを許可」のままで問題ありません。
- 「セキュリティグループを作成」をクリック。
3.3. EC2インスタンスの起動
いよいよEC2インスタンスを起動します!
- EC2コンソールで左のナビゲーションペインから「インスタンス」を選択し、「インスタンスを起動」をクリックします。
-
ステップ1: 名前とタグの指定
-
名前:
my-web-server-instance
- 必要に応じてタグを追加します。
-
名前:
-
ステップ2: アプリケーションおよびOSイメージ (Amazon マシンイメージ - AMI)
- 「Amazon Linux 2023 AMI」を選択します(無料枠対象)。
-
ステップ3: インスタンスタイプを選択
- 「t2.micro」または「t3.micro」を選択します(無料枠対象)。
-
ステップ4: キーペア (ログイン)
- 先ほど作成したキーペア (
my-web-server-keypair
) を選択します。
- 先ほど作成したキーペア (
-
ステップ5: ネットワーク設定
-
VPC: 前回作成した
my-web-app-vpc
を選択します。 -
サブネット: パブリックサブネット(
my-web-app-public-subnet-a
)を選択します。 - パブリックIPの自動割り当て: 「有効化」を選択します(インターネットからアクセスできるようにするため)。
-
ファイアウォール (セキュリティグループ): 「既存のセキュリティグループを選択」を選び、先ほど作成した
web-server-sg
にチェックを入れます。
-
VPC: 前回作成した
-
ステップ6: ストレージを設定 (ボリューム)
- デフォルトの8GiBの汎用SSD (gp2) のままで問題ありません。無料枠の範囲内です。
-
ステップ7: 高度な詳細 (オプション)
- 今回は特に設定は不要です。
-
ステップ8: サマリー
- 設定内容を確認し、「インスタンスを起動」をクリックします。
数分待つと、インスタンスの状態が「保留中」から「実行中」に変わります。
3.4. EC2インスタンスへSSH接続し、Webサーバーを構築
インスタンスが起動したら、SSHで接続してWebサーバーを構築してみましょう。
-
EC2コンソールで、起動した
my-web-server-instance
を選択します。 -
「詳細」タブから「パブリックIPv4アドレス」または「パブリックIPv4 DNS」を控えます。
-
ターミナルを開き、秘密鍵ファイルがあるディレクトリに移動します(または秘密鍵ファイルのフルパスを指定)。
-
秘密鍵のパーミッションを設定します。
chmod 400 my-web-server-keypair.pem
-
SSHで接続します。
ec2-user
はAmazon Linuxのデフォルトユーザー名です。ssh -i "my-web-server-keypair.pem" ec2-user@<あなたのインスタンスのパブリックIPv4アドレスまたはDNS>
初めて接続する際は、ホストのフィンガープリントについて聞かれるので「yes」と入力します。
-
接続できたら、Webサーバー(Apache HTTP Server)をインストールし、簡単なHTMLファイルを作成します。
# パッケージのアップデート sudo yum update -y # Apache HTTP Server のインストール sudo yum install -y httpd # Apacheを起動し、自動起動を有効にする sudo systemctl start httpd sudo systemctl enable httpd # シンプルなHTMLファイルを作成 echo "<h1>Hello from AWS EC2!</h1>" | sudo tee /var/www/html/index.html
これでEC2インスタンス上でWebサーバーが起動し、index.html
が配置されました。
3.5. Webサーバーにアクセスしてみよう
Webブラウザを開き、http://<あなたのインスタンスのパブリックIPv4アドレス>
にアクセスしてみてください。
Hello from AWS EC2!
と表示されれば成功です!
4. EC2インスタンスの管理と運用
EC2インスタンスは、起動して終わりではありません。適切に管理・運用することが重要です。
4.1. インスタンスの状態管理 (停止/起動/終了)
- 停止 (Stop): インスタンスを一時的にシャットダウンします。OSが終了し、EBSボリュームの料金のみ発生します。インスタンスに割り当てられたパブリックIPアドレスは解放される可能性があります。
- 起動 (Start): 停止中のインスタンスを起動します。
- 終了 (Terminate): インスタンスを完全に削除します。関連付けられたEBSボリュームもデフォルトで削除されます。一度終了したインスタンスは復元できませんので、注意が必要です。
4.2. Elastic IP (EIP)
EC2インスタンスのパブリックIPアドレスは、インスタンスを停止・起動するたびに変わることがあります。固定のパブリックIPアドレスが必要な場合は、「Elastic IP (EIP)」を割り当てます。
- EIPは、AWSアカウントに紐づけられた固定のパパブリックIPアドレスです。
- EIPをEC2インスタンスにアタッチすると、インスタンスの停止・起動にかかわらず、そのIPアドレスを維持できます。
- ただし、EIPはアタッチされていない状態(未使用)だと料金が発生しますので、注意が必要です。
4.3. スナップショットとAMIの作成
- EBSスナップショット: 稼働中のEBSボリュームの特定時点のバックアップをS3に保存します。障害発生時の復旧や、新しいボリュームの作成に利用できます。
- AMIの作成: 現在稼働中のEC2インスタンスの状態をAMIとして保存できます。これにより、同じ設定のインスタンスを簡単に複数起動したり、障害時に環境を迅速に復旧したりできます。
4.4. モニタリング (CloudWatch)
EC2インスタンスのCPU使用率、ネットワークIO、ディスクIOなどのメトリクスはCloudWatchで自動的に収集されます。これらのメトリクスを監視し、しきい値を超えた場合にアラートを通知することで、システムの異常を早期に検知できます。
4.5. コスト管理
EC2インスタンスは利用時間に応じて課金されます。不要なインスタンスは停止または終了することで、コストを節約できます。
-
無料枠の確認:
t2.micro
またはt3.micro
インスタンスは月間750時間まで無料です。1台起動しっぱなしでも無料枠で収まります。 -
インスタンスタイプと購入オプション:
- オンデマンドインスタンス: 従量課金。最も柔軟な利用方法。
- リザーブドインスタンス (RI): 1年または3年の契約で、大幅な割引が適用されます。常に稼働させる予定のインスタンスに最適。
- Savings Plans: RIよりも柔軟な契約で、同様の割引が適用されます。
- スポットインスタンス: 余剰キャパシティを利用するため、大幅に安価ですが、AWS側の都合で中断される可能性があります。バッチ処理など、中断されても問題ないワークロードに適しています。
まとめ
今回はAWSのEC2サービスについて、仮想サーバーの基本から実践的な起動、そして運用管理のポイントまでを詳細に解説しました。
- EC2は、AWS上で柔軟にスケーラブルな仮想サーバーを提供するサービスです。
- インスタンスタイプ、AMI、EBS、キーペア、セキュリティグループがEC2の主要な構成要素です。
- 無料枠を活用してEC2インスタンスを起動し、実際にWebサーバーを構築する手順を学びました。
- EC2の運用では、状態管理、Elastic IP、スナップショット/AMI、CloudWatchによるモニタリング、そしてコスト管理が重要です。
これであなたはAWSクラウド上に自分だけの仮想サーバーを立ち上げ、Webサービスを公開する第一歩を踏み出しました!EC2は非常に奥が深く、さらに高度な機能(ユーザーデータ、起動テンプレート、Auto Scalingなど)もたくさんあります。まずは今回の内容をしっかりマスターし、どんどん手を動かして慣れていきましょう。
次回、第4回では 「Webサイト公開の第一歩!S3とCloudFrontで作る高速静的コンテンツ配信」 と題して、サーバーレスでスケーラブルなWebサイトを構築する方法について解説します。お楽しみに!
この記事が皆さんのAWS学習の一助となれば幸いです。
もしこの記事が役に立ったと感じたら、ぜひ「いいね」👍をお願いします!励みになります!