AWSを使い始めたらまずはEC2の構築ですよね。EC2はLinuxコマンドの練習にも使えるので、VirtualBoxなどにCentOSなどをインストールするより手軽にLinux環境を用意することができます。
それでは、AWS経験5年以上の僕が詳しく説明していきます。
本記事の内容
- EC2の簡単な説明
- EC2を構築してSSH接続してみる
もくじ
EC2とは
EC2を簡単に説明すると以下になります。
- EC2はAmazon Elastic Compute Cloudの略
- AWSが管理するホストサーバーのハイパーバイザー上で動作する仮想サーバー
- 数分でサーバーを起動できる
- EC2の対象OSはAmazon Linux, Red Hat, Windows Serverなど複数
- EC2構築後にCPU、メモリ、ディスクの拡張などが柔軟にできる
- 使用した分だけ料金が発生する従量課金
- 12か月無料枠内であれば無料で構築可能
EC2の構築イメージ
上図のようなイメージでEC2を構築します。
- セキュリティグループはSSHを自分のIPアドレスからのみインバウンド許可する
- EC2をパブリックサブネット1aに構築し、インターネットゲートウェイ(IGW)を経由してSSH接続する
- 今回作成するEC2は踏み台サーバー(Bastion)として使用する
構築ステップ
以下のステップで進めます。
- ステップ1:セキュリティグループを作成する
- ステップ2:EC2を作成する
- ステップ3:EC2にSSH接続する
- ステップ4:EC2を停止する(12ヶ月無料枠の使用量を節約するため)
事前準備
VPCを作成しておく
事前にVPC、サブネット、ルートテーブル、インターネットゲートウェイの設定が必要になります。
まだこれらを作成していない場合は、以下を参考に作成しておきます。
-
【AWS】VPCを設定して自分だけのネットワーク環境を構築してみよう
続きを見る
IAMユーザーを作成しておく
今回は「AdministratorAccess」の権限があるIAMユーザーを使用します。
まだ作成していない場合は、以下記事内の「設定2. IAMの設定」を参考に作成しておきます。
-
【AWS】AWSアカウント作成後に絶対にやるべき初期設定5項目:前半
続きを見る
Tera TermなどのSSHターミナルソフトをインストールしておく
Windowsを使用している場合は、事前に窓の杜などからTera Termの最新版をインストールしておきます。
Macの場合はOS標準のターミナルアプリでSSHが使用できるので、追加のインストールは不要です。
AWSマネジメントコンソールにログイン
「AdministratorAccess」の権限があるIAMユーザーでAWSマネジメントコンソールにログインしておきます。
サインイン後に右上のリージョンを確認して「東京」となっていることを確認。もし別のリージョンが表示されている場合は、矢印をクリックして「東京」を選択します。
ステップ1:セキュリティグループを作成する
AWSマネジメントコンソールの検索ボックスに「ec」と入力し、表示される「EC2」サービスをクリックします。
「EC2」画面の左メニューから「セキュリティグループ」→右上の「セキュリティグループを作成」をクリックします。
セキュリティグループはデフォルトVPC用に1つ、自分で作成したVPC用に1つ用意されています。これらのセキュリティグループは使用せず、新規でセキュリティグループを作成します。
以下を参考に入力します。セキュリティグループ名はあとから変更できません。作成後に変更したい場合はセキュリティグループを再作成する必要があります。
- セキュリティグループ名:セキュリティグループの名前を入力(例:test-bastion-sg)
- 説明:セキュリティグループの説明を入力(英数字と一部記号のみ使用可能)(例:For bastion server)
- VPC:自分で作成したVPCを選択
画面中央あたりインバウンドルールの「ルールを追加」をクリックします。
以下の通りに選択します。ソースは基本的にマイIPを使用しましょう。
- タイプ:SSH
- ソース:マイIP
セキュリティグループを設定する際のポイント
- 自分しか接続する必要がない場合は、基本的にソースを「マイIP」に設定しよう
- セキュリティグループは必要最低限のルールを設定すること
- 不要なルールを設定することで、セキュリティレベルが低くなり悪意を持った人から攻撃される可能性が高くなる
- アウトバウンドルールは特別な要件がない限り設定を変更する必要はない
画面右下の「セキュリティグループを作成」をクリックします。
ステップ2:EC2を作成する
「EC2」画面の左メニューから「インスタンス」→右上の「インスタンスを起動」をクリックします。
「Amazon Linux (無料利用枠の対象)」で「選択」をクリックします。
AMIとは
- Amazon Machine Image の略
- EC2を起動するのに必要なOSやディスク情報などが含まれるイメージデータ
「t2.micro (無料利用枠の対象)」にチェックが入っていることを確認し、「次のステップ: インスタンスの詳細の設定」をクリックします。
以下の通り選択し、「次のステップ: ストレージの追加」をクリックします。
- ネットワーク:自分で作成したVPC
- サブネット:パブリックサブネット1a
- 自動割り当てパブリックIP:有効
設定は変えずにそのまま「次のステップ: タグの追加」をクリックします。
EBSとは
- Elastic Block Storeの略
- EC2のデータを保存する仮想ディスク(ストレージ)
左下の「タグの追加」をクリックします。
以下の通り入力し、「次のステップ: セキュリティグループの設定」をクリックします。
- キー:「Name」を入力
- 値:EC2の名前を入力(例:test-bastion-linux-ec2)
以下の通りチェックを入れ、「確認と作成」をクリックします。
- セキュリティグループの割り当て:既存のセキュリティグループを選択する
- セキュリティグループ ID:ステップ1で作成したセキュリティグループ
設定内容に間違いがないことを確認し、「起動」をクリックします
以下の通り入力し、「キーペアのダウンロード」をクリック。ファイルがダウンロードされたことを確認したあと、「インスタンスの作成」をクリックします。
- 「新しいキーペアの作成」を選択
- キーペア名:EC2で使用するキーペアの名前を入力(例:test-ec2-keypair)
EC2の作成が開始されました。右下の「インスタンスの表示」をクリックします。
EC2の作成には2, 3分かかります。作成直後は「ステータスチェック」が「初期化しています」と表示されるので、何度か更新ボタンをクリックします。
「ステータスチェック」が「2/2 のチェックに合格しました」と表示されればEC2作成が完了です。
作成したEC2にチェックを入れると画面下にEC2の詳細情報が表示されます。「パブリック IPv4 アドレス」の下のアイコンをクリックするとIPアドレスがコピーされるので、テキストエディタなどにペーストしておきます。
ステップ3:EC2にSSH接続する
Tera Termを起動し、「ホスト」にステップ2の最後でテキストエディタにコピペしたIPアドレスを入力し、「OK」をクリックします。
セキュリティ警告は「このホストをknown hostsリストに追加する」にチェックが入っていることを確認し、「続行」をクリックします。
ユーザ名に「ec2-user」を入力、「RSA/DSA/ECDSA/ED25519鍵を使う」にチェックを入れ右のアイコンをクリックします。
ステップ2でダウンロードしたキーペアを選択し、「開く」をクリックします。
もしダウンロードしたキーペアが表示されない場合は、右下のファイルの種類を「すべてのファイル」に変更すると表示されます。
「OK」をクリックします。
EC2にSSH接続できました。
ステップ4:EC2を停止する
EC2における12ヶ月無料枠の消費量を節約するため、EC2を使わない時間は停止しておきましょう。
EC2の12ヶ月無料枠について
- 作成したEC2における起動時間の合計が1ヶ月で750時間まで無料
- 1日24時間で1ヶ月31日として、24時間 × 30日 = 744時間。750 - 744 = 6時間の余裕が用意されていることになる
- EC2を作成しても停止しておけばこの750時間はカウントされない
- EC2をAmazon Linux(EBSは8GB)で作成した場合の例
- 例1:EC2を1台構築。EC2を起動したまま1ヶ月経過 → 無料
- 例2:EC2を2台構築。EC2を起動したまま放置してしまい、当月内における2台の合計起動時間が750時間を超えた → 有料
- 例3:EC2を3台構築。EC2使用後は3台とも停止していたため、当月内における3台の合計起動時間が750時間を超えなかった → 無料
- ただし、EC2とは別にEBSの12ヶ月無料枠(以下)についても考慮しておくべき
EBSの12ヶ月無料枠について
- 作成したEBSの合計容量が1ヶ月で30GBまで無料
- EC2とは別に設定されている点に注意
- 1ヶ月という使用期間は厳密には秒で計算されており、1ヶ月間まるまるEBSを保持していても30GBまでは無料ということになる
- EC2作成時にアタッチするEBSのデフォルト容量は、Amazon Linuxで8GB、Windows Server2019で30GBとなる
- EC2本体を停止しても、それにアタッチされているEBSが存在している限り、1ヶ月30GBの無料枠を消費することになる
- デフォルトではEC2削除時にアタッチされているEBSも削除される
- 例
- 例1:EC2(Amazon Linux)を3台構築。EC2使用後は3台とも停止し、当月内における3台の合計起動時間は750時間未満。当月内におけるEBSの合計容量は8GB × 3台 = 24GB であった → 無料
- 例2:当月1日にEC2(Amazon Linux)を5台構築。EC2使用後は5台とも停止し、当月内における5台の合計起動時間は750時間未満。当月内におけるEBSの合計容量は8GB × 5台 = 40GB であった → 有料
- 例3:当月1日にEC2(Amazon Linux)とEC2(Windows Server2019)を1台ずつ構築。使用後は2台とも停止し、当月内における2台の合計起動時間は750時間未満。当月内におけるEBSの合計容量は8GB + 30 GB = 38GB であった → 有料
EC2を停止する方法はいくつかありますが、ここでは2つご紹介します。
方法1:AWSマネジメントコンソールから停止する
作成したEC2にチェックを入れ右クリック、「インスタンスを停止」をクリックします。
「停止」をクリックします。
EC2の停止は通常1分前後で完了します。更新ボタンを何度かクリックします。
「インスタンスの状態」が「停止済み」となれば停止完了です。
方法2:shutdownコマンドで停止する
Tera TermなどでEC2に接続した状態で以下コマンドを実行します。
$ sudo shutdown
1分後にshutdown処理が開始されSSHが切断されます。
1分を待たずにすぐにshutdown処理を開始したい場合は以下コマンドを実行します。
$ sudo shutdown -h now
通常はこれでEC2停止が正常に行われますが、念のためAWSマネジメントコンソールからも状態を確認してみます。
方法1に記載しているEC2の画面で更新ボタンを何度かクリックし、「インスタンスの状態」が「停止済み」となれば停止完了です。
まとめ
EC2を構築してSSH接続してみました。
次はEC2のベストプラクティス & 推奨設定を紹介します。
-
【AWS】EC2(Amazon Linux 2) ベストプラクティス & 推奨設定
続きを見る
当記事が参考になれば幸いです。