前回、AWSで必要なVPCのセットアップを手順にしました。
今回は、そのVPCを使用してEC2インスタンスの作成を手順にしていきます。
本記事の目標は以下の通りです。
- EC2インスタンスの概要を理解する
- EC2インスタンスの作成ができる
- EC2にリモート接続ができる
- EC2を終了できる
前提条件
EC2を作成するには、前回記事のVPCの作成までを実施している必要があります。
また、作成したWindows Server のインスタンスにRDPで接続を行うため、RDPのソフトウェアが必要になります。Windowsであればリモートデスクトップ接続のアプリケーションが標準搭載されているため、不要です。
macOSの場合は別途RDPが可能なソフトウェアが必要となります。
EC2インスタンスの作成
作成するインスタンスはt2.microの無料枠内でインスタンスを作成していきます。
検証のため、インスタンスの作成後、すぐに終了させるためインスタンスの利用料金は発生しない想定です。AWSのインスタンス利用料金については、こちらのページを参照してください。
作成するインスタンスは以下の通りとなります。
- OS : Widnows Server 2019
- インスタンス名 : t.2 micro
- vCPU : 1Core
- MEM : 1GB
- DISK : 30GB
なお、インスタンスはAMIから展開するため、Windows Serverのインストールについては不要です。

AWS Management Consoleへアクセスします。

検索欄より、[EC2]を検索し、EC2のサービスを選択します。

[EC2]-[インスタンス]より、[インスタンスを起動]-[インスタンスを起動]を選択します。

[ステップ1:Amazonマシンイメージ(AMI)]より[Microsoft Windows Server 2019 Base]を選択します。
今回は検証のため、適当なAMIを選択していますが必要に応じて変更してください。
また、[無料利用枠のみ]にチェックを入れると、無料利用枠で利用できるAMIが選択されます。

[ステップ2:インスタンスタイプの選択]より、以下のインスタンスを選択します。
- ファミリー : t2
- タイプ : t2.mirco
インスタンスの種類については、ファミリーとタイプに分かれています。
ファミリーはインスタンスがどのようとに最適化されているかによって変わります。
汎用であれば、T、M、A1が該当のファミリーとなり、CPUのリソースに特化したインスタンスファミリーであればC、メモリに最適化されたインスタンスはMなどの用途によってインスタンスの特色が異なるため、EC2を使用する目的により、ファミリーは変更してください。(基本的に文字の後の数字がインスタンスの世代となっており、数字が大きいほうが新しい世代となります。)
また、タイプについてはインスタンスの大きさを表しています。
micro < small < large < xlargeとなり、大きさによりCPUのコア数やメモリ数、NICのリンク速度などが変わってきます。(もちろん、時間当たりの料金も高くなります。)

[ステップ3 : インスタンスの詳細の設定]では以下の項目を設定していきます。
- インスタンス数 : 1 (展開するインスタンス数を設定)
- 購入オプション : □スポットインスタンスのリクエスト (スポットインスタンスを使用する場合は選択)
- ネットワーク : インスタンスを展開するVPCを選択
- サブネット : 選択したVPC内の展開するサブネットを選択
- 自動割り当てパブリックIP : サブネット設定を使用(無効)
これ以外の項目については、検証のためデフォルトで設定します。
インスタンスについては、この項目でどのVPCに展開するか、どのネットワークレンジに展開するかを設定します。
設定が完了したら、[次のステップ:ストレージの追加]を選択します。

[ステップ4 : ストレージの追加]より、以下の設定を行います。
ストレージについては、EC2のインスタンス料金にプラスして請求されます。
ストレージのタイプにより、ストレージのIOPSが変わるため、利用するサーバの用途により変更してください。クラウドの基本ですが、利用するもののスペックが高くなるつれ時間料金が高くなってきます。
ボリュームについては、こちらをご覧ください。
- サイズ : 30GB (無料利用枠内を使用)
- ボリュームタイプ : 汎用SSD (gp2)
- 終了時に削除 : ■ (EBSを他のインスタンスで使用する場合はチェックを外してください)

[ステップ5 : タグの追加]より、必要に応じてタグをつけてください。
今回は不要なため、[次のステップ:セキュリティグループの設定]を選択します。

このセキュリティグループはEC2におけるFirewallの役割があるため、適切に設定を行ってください。
今回は、新しくSGを作成しインバウンド(EC2へ入る通信)をRDPのみ許可する設定にしています。
このSG設定が正しくできていないと、外部からEC2へのアクセスができなくなりますので、最低限の設定を入れます。
[ステップ6 : セキュリティグループの設定]より、以下の設定を行います。
- セキュリティグループの割り当て : 新しいセキュリティグループを作成する
- セキュリティグループ名 : 任意のSG名
- 説明 : 任意の説明(必須)
- タイプ : RDP
- ソース : マイIP [接続するグローバルIPアドレスを指定(xxx.xxx.xxx.xxx/32で指定)]※
セキュリティグループの作成で気を付けることは、送信元のIPアドレスを限定することです。
マイIPに設定し、CIDRを/32にすることで1IPまで絞ることができるため、可能か限り接続元は絞ってください。
また、特殊な用途でない限りRDPで0.0.0.0/0の設定は行わないでください。
全世界から攻撃の対象となってしまします。
設定が完了したら、[起動と作成]を選択します。

[ステップ7 : インスタンス作成の確認]より、作成するインスタンスを確認し、[起動]を選択します。

[既存のキーペアを選択するか、新しいキーペアを作成します。]より、以下の設定を行います。
- キーペア : 新しいキーペアを作成(既存のキーペアを把握している場合は、そちらを選択)
- キーペアタイプ : RSA
- キーペア名 : 任意のキーペア名を設定
キーペアの設定が完了したら、[キーペアのダウンロード]を選択します。
このキーペアは紛失・流出しないように厳重に保管してください。
キーペアを紛失するとインスタンスにアクセスできなくなる場合があります。
また、キーペアが流出すると、インスタンスに不正アクセスされる可能性があります。
キーペアのダウンロード後、[インスタンスの作成]を選択します。

[作成ステータス]より、[インスタンスは現在作成中です]と表示されれば、インスタンスの作成完了です。
[インスタンスの表示]を選択します。

作成したインスタンスのステータスが[実行中]となっていればインスタンスの作成と起動が完了しています。

この作業は必須ではありませんが、インスタンスの[Name]部分を選択すると、名前を編集できるためインスタンスの区別を行いやすくするため、変更しておきましょう。
以上で、インスタンスの作成手順は完了です。
Elastic IPのアタッチ
EC2インスタンスが設定できたら、Elastic IP (グローバルIP)をインスタンスに付与していきます。
Elastic IPを設定することでインスタンスに固定のグローバルIPを付与させることができます。
このようにすることで、外部のサービスを提供したり、リモートでアクセスさせることが可能になります。

[EC2]-[ネットワーク&セキュリティ]-[Elastic IP]を選択し、[Elastic IPアドレスを割り当てる]を選択します。

[Elastic IPアドレスの設定]より、[パブリックIPv4アドレスプール]-[AmazonのIPv4アドレスプール]を選択し、[割り当て]を選択します。

[Elastic IPアドレスが正常に割り当てられました]のメッセージが表示されたら、Elastic IPアドレスの割り当ては完了です。
この時点ではAmazonが保有しているグローバルIPアドレスを取得しただけなので、このElastic IPアドレスをEC2に紐づける作業が必要です。

Elastic IPをEC2に割り当てる前に、EC2の時と同様にElastic IPにも名前を設定しておきましょう。

名前の設定が完了したら、EC2のElastic IPアドレスを選択し、[アクション]-[Elastic IPアドレスの関連付け]を選択します。

[Elastic IPアドレスの関連付け]より、以下の設定を行います。
- リソースタイプ : インスタンス
- インスタンス : Elastic IPを割り当てるEC2インスタンスを選択
- プライベートIPアドレス : EC2インスタンスのプライベートIPアドレスを選択
- 再関連付け : ■このElastic IPアドレスの再関連付けを許可する
Elastic IPアドレスとEC2の紐づけはインスタンスIDを選択するだけです。
ここでのポイントは、再関連付けを許可しておくことです。
再関連付けの許可は、EC2インスタンスを解体した際に、別のインスタンスへ同じElastic IPの関連付けを許可する設定になります。
EC2インスタンスをあたらに作り直したり、別のサーバへ付け直す際に再関連付けを許可していないと別のグローバルIPを割り当てることになり、様々な設定変更が必要になる場合があります。
以上の設定が完了したら、[関連付ける]を選択します。

[Elastic IPアドレスが正常に関連付けられました]のメッセージが表示されれば、EC2インスタンスとElastic IPアドレスの関連付けは完了です。
Elastic IPアドレスの欄に[関連付けられたインスタンス]に該当のインスタンスが表示されれば問題なく完了しています。
インスタンスパスワードの取得
前項まででEC2関連の設定はほぼ完了しています。
本項目では、Windows ServerのインスタンスへRDPを行うための事前準備となります。
Windows ServerのEC2インスタンスは、AMIから展開するとAdministratorのパスワードが自動生成されます。
自動生成されますが、AWSは設定されたパスワードをメール等で通知してくれないため、自らパスワードを取得する必要があります。
ここで必要になってくるのが、EC2の作成時に生成したキーペアです。

[EC2]-[インスタンス]-[インスタンス]より、作成したインスタンスを選択します。
[アクション]-[セキュリティ]-[Windowsパスワードを取得]を選択します。

[Windowsパスワードの取得]より、[Browse]を選択します。

EC2の作成時に生成したキーペアを選択します。

キーペアが正常にアップロードされると、下段に[—–BEGIN RSA PRIVATE KEY—–]と表示され、ランダムな文字列が表示されます。
この状態になったら、[Decrypt password]を押下します。

キーペアが正常に復号化されると、EC2のプライベートアドレスとユーザ名・パスワードが表示されます。
ここに表示されているパスワードをコピーしておきます。
また、画面でも表示されているように、キーペアで生成されたデフォルトパスワードは変更することが推奨されています。
Windowsのパスワードが取得できない時は、以下の項目を確認してみてください。
- キーペアの組み合わせは問題ないか?
- ファイルが正常にアップロードできているか?
- キーペアをメモ帳で開き、中身を直接コピペしてみる
EC2インスタンスへリモートデスクトップ
EC2のWindowsパスワードが取得できたら、インスタンスへRDPしてみたいと思います。

作業環境がWindowsのため、Windows標準のリモートデスクトップ接続を起動し、EC2に紐づくElastic IPアドレスをコンピュータ名の欄に入力し、[接続]を選択します。

接続が成功すると、認証画面が表示されるため、以下の情報を入力し、[OK]を選択します。
- ユーザ名 : .\Administrator
- パスワード : キーペアで復号化したWindowsパスワード

Windows Serverのデスクトップ画面が表示されたら、正常にRDP接続ができています。
注意点なのですが、AMIから展開したWindows Serverは英語版のため、ネットワーク経由で必要なLanguage Packをインストールする必要があります。
以上で、EC2インスタンスへRDP接続は完了です。
EC2インスタンスの削除(インスタンスの終了)
EC2インスタンスの作成方法は前項までの手順で確認しました。
しかし、インスタンスは起動していなくてもお金がかかる部分があります。
(EC2のインスタンスは起動時間に対して時間料金が発生するが、EBSについては1GBでも使用していれば時間単位で料金が発生する。)
そのため、検証終了後に不要になったマシンはEC2とEBSをまとめて削除してあげないと、永遠に料金が発生します。
作成したものの削除ができないというのはクラウド環境では致命的なため、[作成]と[削除]は必ずセットで手順を確認しましょう。逆に「削除の手順が確立していない場合は作成を実行しない」など独自でルールを策定すると使いすぎ防止に良いと思います。

[EC2]-[インスタンス]-[インスタンス]より、削除対象のインスタンスを選択します。
削除対象のインスタンスを選択したら、[インスタンスの状態]-[インスタンスを終了]を選択します。

[終了 インスタンス?]より、削除対象のインスタンスが選択されていることを確認します。
AWSではインスタンスの削除のことをインスタンスの終了と明記しています。
このインスタンスを終了を実行すると、基本的に仮想マシン毎削除されてるため、原則復旧ができなくなります。
そのため、インスタンスの終了はいつも以上に慎重に確認を行ってください。
削除対象のインスタンスが選択されていることを確認したら、[終了]を選択します。

[正常に終了しました]のメッセージが表示され、削除対象のインスタンスのステータスが[終了済み]となっていることを確認します。
EC2では、削除したインスタンスも少しの間コンソール上に残ります。
しかし、バックグラウンドでは削除処理が実行されているため、30分程度でコンソール上からも削除されると思います。
以上で、EC2インスタンスの削除は完了です。
Elastic IPアドレスの解放
EC2インスタンスの削除は前項で実施しました。
しかしインスタンスを削除したことによって請求が発生するものが存在します。
それが、Elastic IPアドレスです。
Elastic IPアドレスはEC2のマシンを紐づいている場合は料金が発生しませんが、EC2インスタンスが終了等によって関連付けが外れた状態になっていると、料金が発生します。
料金自体は微々たるものですが、塵も積もれば山となるという事態もあるので、不要であればElastic IPアドレスを削除します。
Elastic IPアドレスの削除は本当にそのIPアドレスを再利用する予定がないことを確認してから削除してください。一度削除してしまうと同一のElastic IPアドレスの取得は困難です。

[EC2]-[ネットワーク&セキュリティ]-[Elastic IP]を選択します。
削除対象のElastic IPアドレスを選択し、[アクション]-[ELastic IPアドレスの解放]を押下します。

[Elastic IPアドレスの解放]より、削除対象のElstic IPであることを確認し、[削除]を選択します。

[Elastic IPアドレスが解放されました]のメッセージが表示されたことを確認し、Elastic IPアドレスの削除は完了です。
まとめ
今回は、作成したVPC上にEC2インスタンスを作成して、外部からリモートデスクトップ接続ができるまでの環境を作成しました。
実際にVPCとサブネットさえ区切ってあればインスタンスのタイプを選ぶだけなので、インスタンスの作成作業自体は簡単なオペレーションとなります。
むしろ、インスタンスタイプの設計の方が重要となってきます。
スケールアップは簡単にできますが、予算等の都合上年度内の変更が難しいため、インスタンスを作成する前に必要な性能をしっかりと見定める必要があります。
おまけ
本ブログではVMwareやWindows、Linuxのインストール手順等も公開しております。
インフラエンジニアとして有益な記事や無益なコンテンツも作成しておりますので、通勤時間や休憩時間、休日のスキマ時間等に合わせて読んでいただけると幸いです。
また、Youtubeで解説動画も鋭意作成中です。本ブログで記事にしているものも動画にしようと思っておりますので、よろしくお願いいたします。
コメント