【AWSサービス 基礎編】 Amazon EC2 でインスタンスを起動しSSH接続する

目次

概要

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台が独立したサーバーとして使えるんだ。

Luxyちゃん

自分専用のサーバーがクラウド上にあるようなイメージですか?

土肥

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

Luxyちゃん

すごく手軽なんですね!

インスタンスを構成する主要要素

Luxyちゃん

EC2インスタンスを起動するときって、何を設定すればいいんですか?

土肥

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

Luxyちゃん

パソコンを買うときにWindowsかMacかを選ぶような感じですか?

土肥

いいたとえだね!まさにそんな感じ。で、2つ目がインスタンスタイプ。これはインスタンスに割り当てるCPU、メモリ、ストレージ、ネットワーク性能の組み合わせだよ。用途に応じていくつかのファミリーから選べるんだ。まとめるとこんな感じだよ。

ファミリー特徴
汎用t3.micro, t3.smallバランスの取れたリソース配分。開発環境やWebサーバーに適する
コンピューティング最適化c6i.largeCPU性能を重視。バッチ処理や科学計算に適する
メモリ最適化r6i.largeメモリ容量を重視。データベースやキャッシュに適する
ストレージ最適化i3.large高速なローカルストレージ。データウェアハウスに適する
Luxyちゃん

用途に合わせてスペックを選べるんですね!残り2つは何ですか?

土肥

3つ目がキーペア。インスタンスにSSH接続するための認証に使う公開鍵と秘密鍵のペアだよ。公開鍵はインスタンス内に配置されて、秘密鍵はユーザーがローカルに保持するんだ。家の鍵に例えると、公開鍵がドアの鍵穴で、秘密鍵が自分だけが持つ鍵、というイメージだね。

Luxyちゃん

なるほど、秘密鍵をなくしたらログインできなくなっちゃうんですね。

土肥

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

Luxyちゃん

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

EC2インスタンスの構成要素(AMI、インスタンスタイプ、キーペア、セキュリティグループの関係図)

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

Luxyちゃん

EC2インスタンスって、起動したらずっと動いてるんですか?

土肥

いい質問だね。インスタンスにはいくつかの状態があって、ライフサイクルとして管理されているんだ。主要な状態をまとめるとこうなるよ。

状態説明
pending起動処理中
running稼働中。課金が発生する
stopping停止処理中
stopped停止済み。インスタンスストアのデータは消失するが、EBSボリュームのデータは保持される。コンピューティング料金は発生しない
shutting-down終了処理中
terminated終了済み。すべてのリソースが解放される
Luxyちゃん

「停止」と「終了」って何が違うんですか?似てるようで違う気がするんですけど…

土肥

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

Luxyちゃん

「終了」は取り消せないんですね…間違えたら大変だ。

土肥

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

Luxyちゃん

使わないときは停止、もう要らなくなったら終了、と使い分ければいいんですね!

実践

ここでは、EC2インスタンスを1台起動し、SSH接続してコマンドを実行するまでの手順を体験します。

前提条件

  • リージョン: ap-northeast-1(東京)
  • AWSマネジメントコンソールにログイン済み
  • VPC/サブネットが存在する状態
リソース種別リソース名用途
EC2インスタンスmy-first-instanceハンズオン用インスタンス
キーペアmy-first-keypairSSH接続用

キーペアの作成

  • 上部の検索バーに 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)
AMIの選択画面(Amazon Linux 2023が選択された状態)

インスタンスタイプ

  • インスタンスタイプ: t3.micro

キーペア

  • キーペア名: my-first-keypair(先ほど作成したキーペアを選択)

ネットワーク設定

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

その他の項目はデフォルトのままにします。

  • 「インスタンスを起動」をクリックします

起動成功のメッセージが表示されます。

インスタンスの起動成功画面

インスタンスへのSSH接続

  • インスタンス一覧画面で、my-first-instance の状態が「実行中」になるまで待ちます
  • my-first-instance を選択し、下部の「詳細」タブで「パブリック IPv4 アドレス」を確認します
インスタンス詳細画面(パブリックIPアドレスが表示された状態)

ターミナルから以下のコマンドで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」に限定してセキュリティを確保する
  • インスタンスの「停止」は一時停止(再起動可能)、「終了」は完全な削除であり、用途に応じて使い分ける

参照先

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

株式会社Luxy(https://luxy-inc.com)の代表取締役.

2018年〜インフラエンジニアとしてキャリアをスタートし、オンプレミスのネットワーク・サーバ環境で3年半、クラウド環境で4年半の8年間エンジニアとして従事。
2021年に佐藤氏の創業した会社を引き継ぎ、代表に就任。

目次