もくじ
前回までと今回やること
こんにちは。あつしです。
EC2インスタンスがインターネットに繋がるまで流れの図解ですが、続きをやっていきます。
前回でVPC、サブネット、インターネットゲートウェイ、ルートテーブルの作成をしました。
今回は、セキュリティグループ、ネットワークインターフェイス、Elastic IPの作成を行い、EC2インスタンスを作っていきます。
そして最後には、インターネットからEC2インスタンスにSSH接続を行い、その時の通信の流れを図解したいと思います。
※注意事項※
AWSはサービスを頻繁に更新しています。
AWSサービスの内容やAWSコンソールの画面などは、執筆時点(2021/8/31現在)のものとなっております。
場合によっては、読者の方々と見ている画面の見た目が違う、というようなこともあるかもしれませんので、ご注意いただきますようお願いいたします。
構成図
完成形
前回でも示しましたが、本件で目指す構成図を下記に示します。
前回完了時点
前回の完了時点での構成図は下記です。
構築手順(続き)
それでは続きの手順を書いていきます。
セキュリティグループの作成
セキュリティグループはEC2インスタンスやネットワークインターフェイスを作成する際に必要となるものです。
なので、ここではネットワークインターフェイス作成前に実施しています。
- VPCサービス画面の左ペインから、[セキュリティグループ]をクリックします。
- [セキュリティグループ]ボタンをクリックします。
- [セキュリティグループ名]を入力します。(ここでは「seg-g_wp_Atsushi」としています)
[説明]を入力します。(必須項目となっています)
[VPC]から先ほど作成したVPCを選びます。(ここでは「vpc-Atsushi」です)
[ルールを追加]ボタンをクリックします。 - ここでは、以下の通信のインバウンドを許可する設定を入れます。
・プロトコル:SSH、送信元:すべて
・プロトコル:HTTP、送信元:すべて
・プロトコル:HTTPS、送信元:すべて
※EC2インスタンスに対して許可したい通信のルールを適宜入れてください。 - [タグ]が入力されていることを確認して、[セキュリティグループを作成]ボタンをクリックします。
- 「セキュリティグループ~が正常に作成されました」と表示されれば完了です。
ここまでを構成図にすると以下になります。
※セキュリティグループの公式ドキュメントはこちらです。
ネットワークインターフェイスの作成
ネットワークインターフェイスの作成にはセキュリティグループが必要です。ですので事前にセキュリティグループを作りました。
また、Elastic IPにネットワークインターフェイスが必要となるので、Elastic IP作成前に行っています。
- AWSコンソールの検索ボックスに「ec2」と入力し、[EC2]をクリックします。
- EC2のダッシュボードが表示されたら、左ペインより[ネットワークインターフェイス]をクリックします。
- [ネットワークインターフェイスの作成]ボタンをクリックします。
- [Description]に説明を入力します。(任意です)
[サブネット]から本記事で作成したサブネットを選択します。(ここでは「public-subnet-1a-Atsushi」です)
[プライベートIPv4アドレス]で[カスタム]を選択すればIPアドレスを固定できます。(ここでは「10.0.1.11」にしています) - [セキュリティグループ]を選択します。(ここでは先ほど作成した「seg-g_wp_Atsushi」を選択しています)
[タグ]は任意ですが、ここでは[Name]に「eni-wp-Atsushi」という名前を設定しています。
[ネットワークインターフェイスの作成]ボタンをクリックします。 - 「ネットワークインターフェイス~が正常に作成されました」と表示されれば完了です。
ここまでを構成図にすると、以下になります。
※ネットワークインターフェイスの公式ドキュメントはこちらです。
Elastic IPの作成とネットワークインターフェイスとの関連付け
Elastic IPを使用するとWAN側IPアドレスを固定できます。(Elastic IPを使用しないとEC2インスタンスが再起動するとWAN側IPアドレスが変わってしまいます)
※EC2インスタンスの稼働に必須ではないですがここでは作っていきます。
また、Elastic IPはネットワークインターフェイスに関連付けるので、ネットワークインターフェイスの作成後に行っています。
- EC2のダッシュボードの左ペインから、[Elastic IP]をクリックします。
- [Elastic IPアドレスの割り当て]ボタンをクリックします。
- [ネットワークボーダーグループ]には、EIPを使用するAZを指定します。(ここでは「ap-northeast-1a」です)
- [タグ]には、ここでは[Name]に「eip-Atsushi」という名前を定義しています。
[割り当て]ボタンをクリックします。 - 「Elastic IPアドレスが正常に割り当てられました」と表示されることを確認し、[アクション]のプルダウンから[Elastic IPアドレスの関連付け]をクリックします。
- [リソースタイプ]にはElastic IPを紐づけるリソースを選択します。ここではネットワークインターフェイスを選択します。[ネットワークインターフェイス]欄で先ほど作ったネットワークインターフェイス(名前は「eip-Atsushi」)を選びます。
[関連付ける]ボタンをクリックします。 - 「Elastic IPアドレスが正常に関連付けられました」と表示されれば完了です。
ここまでを構成図で表すと下記です。
上の図の点線は、EIPのWAN側IPアドレスを使用してインターネットと通信をする、という意味で書いています。
実際の通信の通り道は、インターネットゲートウェイからインターネットへ出ていきます。
※Elastic IPの公式ドキュメントはこちらです。
EC2インスタンスの作成
さていよいよEC2インスタンスを作成していきます。
- EC2のダッシュボードの左ペインで、[インスタンス]をクリックします。
- [インスタンスを起動]ボタンをクリックします。
- AMI(OSのイメージ)はここでは「Red Hat Enterprise Linux 8 (HVM), SSD Volume Type」を使用します。
[選択]をクリックします。 - ここでは、インスタンスタイプは「t2.large」にします。
チェックを入れて[次のステップ:インスタンスの詳細の設定]をクリックします。 - インスタンスの詳細設定ができますが、重要なところだけ書いていきます。
[ネットワーク]は作成したVPC(ここでは「vpc-Atsushi」)を選びます。
[サブネット]も作成したサブネット(ここでは「public-subnet-1a-Atsushi」)を選びます。 - [ネットワークインターフェイス]に作成したネットワークインターフェイス(ここでは「eni-wp-Atsushi」)を選びます。
[次のステップ:ストレージの追加]をクリックします。 - ここでは、サイズを10GiBから30GiBに変更しました。
ルートボリューム以外追加せずに、[次のステップ:タグの追加]をクリックします。 - わかりやすくするため、タグを追加します。[タグの追加]ボタンをクリックします。
- [Name]に「ec2-wp-RHEL8」を定義します。
ネットワークインターフェイスは先に作っていて、Nameタグをすでに定義しているので、チェックを外します。
[次のステップ:セキュリティグループの設定]をクリックします。 - セキュリティグループは先に作っているので、[既存のセキュリティグループを選択する]にチェックを入れて、作成したセキュリティグループ(ここでは「seg-g_wp_Atsushi」)にチェックを入れます。
[確認と作成]ボタンをクリックします。 - [起動]ボタンをクリックします。
- EC2インスタンスに接続するときに使用する鍵を作成します。
[新しいキーペアの作成]を選び、名前を決めます。(ここでは「key-wp-RHEL」としています)
[キーペアのダウロード]ボタンを押して鍵をダウンロードします。
鍵をダウンロードすると[インスタンスの作成]ボタンが押せるようになるので、クリックします。 - [インスタンスの表示]ボタンをクリックします。
- [インスタンスの状態]が「保留中」であるとまだEC2インスタンスは完成していません。
- [インスタンスの状態]が「実行中」となり、[ステータスチェック]で「2/2のチェックに合格しました」となれば、EC2インスタンスの作成は完了です。
ここまでの状態を構成図で示すと下記です。完成形になりました。
※EC2インスタンスの公式ドキュメントはこちらです。
EC2への接続テスト
EC2インスタンスが作成できたので、インターネットを経由してSSH接続をします。
EC2インスタンスのIPアドレス確認
SSH接続する前に、EC2インスタンスのWAN側IPアドレスを確認します。
- EC2のサービス画面で、[インスタンス]をクリックし、対象のEC2インスタンスにチェックを入れます。
[詳細]タブの中に、[パブリックIPv4アドレス]という項目があるので、そこに書かれているIPアドレスがWAN側IPアドレスです。
Teretermで接続する
Teretermでなくても、SSH接続ができるターミナルソフトであればなんでもOKです。
- Teretermを起動します。
- AWSコンソールで確認したEC2インスタンスのWAN側IPアドレスを入力して、[OK]をクリックします。
- [ユーザ名]に「ec2-user」と入力し、[秘密鍵]ボタンをクリックします。
- EC2インスタンスの作成のときに作ったキーペア(秘密鍵)を選びます。
- キーペアが選択されたことを確認して、[OK]ボタンをクリックします。
- 下記のように「$」プロンプトが表示されていればログイン完了です。
通信の図解
自分のPCとEC2インスタンスでSSH接続ができたことについて、通信の”行き”と”帰り”で図解してみたいと思います。
インバウンド
自分のPCからEC2インスタンスへの”行き”の通信です。
インターネットゲートウェイを通り、SSHが許可されたセキュリティグループを通過し、EC2インスタンスにたどり着きます。
アウトバウンド
EC2インスタンスから自分のPCへの戻りの通信です。
- EC2インスタンスは僕のPCのアドレスを知らないので、デフォルトルートに通信を返します。つまりここでは、インターネットゲートウェイに送信されます。
- セキュリティグループでSSHアウトバウンドを許可していませんが、セキュリティグループはステートフルなので、入ってきた通信の戻りについては暗黙的に許可します。
あとがき
最後までお読みいただきありがとうございました。
EC2インスタンスにインターネットを経由してSSH接続するにあたって、作成するコンポーネントと、そのコンポーネントが依存するもの(作成の中で指定するもの)をご説明しました。
また、SSH接続の通信の”行き”と”帰り”において、動きの重要なポイントをお伝えしました。
AWSは頻繁にサービスの更新をしています。
繰り返しですが、AWSサービスの内容やAWSコンソールの画面などは、執筆時点(2021/8/31現在)のものとなっておりますことをご容赦ください。
次は、今回作成したEC2インスタンスでWordpressを構築していこうと思っています。RDSは使用せず、EC2インスタンス単体でWordpressを構築します。
ではまた次回お会いしましょう。
コメント