前回までの記事
【AWS VPC入門】0.概要
【AWS VPC入門】1.VPC/Subnet
今回のゴール
- 前回作成した
Private Subnet(10.0.193.0/26)
にEC2インスタンス(Web)
を配置する。 - インターネットとの通信を可能するため
インターネットゲートウェイ
とルートテーブル
の設定を行う。 -
EC2インスタンス(Web)
にSSH接続しNginxをインストールする。
Internet Gateway
VPC内部とインターネットとの間の通信を可能にするためのものです。
インターネットゲートウェイ経由することでサブネットに配置されたEC2インスタンスとインターネット間の接続を可能にします。
サブネットに対してではなくVPCに対して設置します。
Route Table
VPCにはサブネット単位で仮想のルーターが存在します。(暗示的なルーター)
ルートテーブルは上記のルーターに対して「Destination(送信先)」と「Target(宛先)」を定義したテーブルです。
EC2をPrivateサブネットに作成
実際にAWS上で作成していきます。
EC2のダッシュボードから「インスタンスの作成」を選択します。
AMI、インスタンスタイプ、ストレージ等はNginxが動作する環境であればどれでも良いです。
ここでは以下を選択しました。
AMI | インスタンスタイプ | ストレージ |
---|---|---|
Amazon Linux 2 | t2.micro | 20G |
インスタンスの詳細の設定では以下の設定を追加します。
ネットワーク | サブネット | 自動割り当てパブリック IP |
---|---|---|
Sample VPC | SamplePrivateSubnet | 有効化 |
タグに以下を設定
キー | 値 |
---|---|
Name | SampleWeb |
セキュリティグループを以下の内容で設定します。
後ほどSSH接続を行うためpemファイルのDLが必要です。(SampleVPCWeb.pem)
この状態ではEC2インスタンスはインターネットに接続できないため、インターネットゲートウェイの配置とルートテーブルに設定を行います。
インターネットゲートウェイの作成
VPCにインターネットゲートウェイを配置します。
VPCのダッシュボードから 「インターネットゲートウェイ」 -> 「インターネットゲートウェイの作成」を選択します。
一度も作成したことないがない場合でも、デフォルトのVPCに適用されているインターネットゲートウェイが既に存在しています。
名前は「SampleIG」にします。
作成した「インターネットゲートウェイ」をVPCにアタッチします。
ルートテーブルを作成
続いてサブネットに対してルートテーブルの作成と変更を行います。
VPCのダッシュボードから 「ルートテーブル」を選択します。
既にSampleVPCのデフォルトルートテーブルが以下の内容で設定されているため、
VPC内を宛先とした通信以外は破棄される設定になっています。
Destination | Target |
---|---|
10.0.0.0/16 | local |
「Create route table」 からルートテーブルを作成します。
以下の内容を設定します。
Name tag | VPC |
---|---|
SamplePrivateRouteTable | SampleVPCのID |
上記で作成したルートテーブルの設定を変更します。
「Routes」のタブから「Edit」を選択します。
デフォルトゲートウェイをインターネットゲートウェイにするため以下の内容を追加します。
Destination | VPC |
---|---|
0.0.0.0/0 | SampleIGのID |
VPCのダッシュボードから 「サブネット」 -> 「SamplePrivateSubnet」 -> 「ルートテーブルの変更」を選択します。
ルートテーブルIDに「SamplePrivateRouteTable」を選択します。
以上でインターネットへの接続準備が完了しました。
EC2にSSH接続
実際にEC2インスタンスがインターネットと繋がったことを確認するため、pemファイルを利用して実際にSSHによる接続ができることを確認します。
$ ssh -i "SampleVPCWeb.pem" ec2-user@SampleWebのIPアドレス
HTTPによるアクセスを行うために、Nginxのインストールと起動を行います。
$ amazon-linux-extras install nginx1.12 -y
$ sudo systemctl start nginx
$ sudo systemctl enable nginx
http://SampleWebのグローバルIPアドレス
にアクセスし、
Welcome to nginx on Amazon Linux!
というNginxの画面が表示されていれば動作確認完了です。