AWSの基本を再度勉強していこうと思います。
一番最初は基本NWの構築です。
図で言うと下記の様な構成になります。
・1つVPCを作成する
・パブリックサブネットを1つ作成する
・プライベートサブネットを1つ作成する
・各サブネットからインターネットへアクセスできるようにする
・各サブネットにEC2のインスタンスを作成する
ここから徐々にアクセス制御をしたり、付加サービスをつけて膨らませていくとイメージがつきやすいと思います。
いきなり色々な要素を詰め込むと後で混乱してくるので焦らずいきましょう。
Contents
AWSの基本の基本から再度勉強してみる
まずアンチョコでどういったものを作るのか概要を書きます。
その後に構築の流れを詳細に書いていきます。
多少勉強した人はアンチョコの部分を読むだけで構築ができるようにしてください。
全くの初心者はアンチョコは飛ばして、詳細の部分から一緒にやっていきましょう。
VPCとサブネットの作成アンチョコ
下記の設定でそれぞれのEC2からインターネットへの通信が可能になります。
但しセキュリティ設定の変更をしていないのでEC2間の通信はできません。
細かい制御やその他については今後UPしていきたいと思います。
■VPCの作成
名前:belpia-vpc-0411、10.0.0.0/16で作成
■パブリック用のサブネットとプライベート用のサブネットを一つずつ作成
[パブリック]
名前タグbelpia-public-subnet-1aを作成して、belpia-vpc-0411で使用。
AZはap-northeast-1a、IPv4 CIDR ブロック:10.0.100.0/24。
[プライベート]
名前タグbelpia-private-subnet-1cを作成して、belpia-vpc-0411で使用。
AZはap-northeast-1c、IPv4 CIDR ブロック:10.0.200.0/24。
■インターネットゲートウェイ
名前:belpia-internet-gatewayを作成し、belpia-vpc-0411にアタッチ。
■ルートテーブル
名前:belpia-route-table0411を作成し、belpia-vpc-0411で使用。
送信先:0.0.0.0/0でターゲットはbelpia-internet-gateway。
belpia-public-subnet-1aをサブネットに関連付け。
■パブリック用のサブネットのグローバルIPの割り当て設定を行う
belpia-public-subnet-1aでIPv4の自動割り当て設定を有効化。
■NATゲートウェイ
名前:belpia-nat-gateway、サブネット:belpia-public-subnet-1a。
新しいEIPを割り当てる。
プライベート用サブネットbelpia-private-subnet-1cのルートテーブルで、
宛先0.0.0.0/0でターゲットは作成したNATゲートウェイのbelpia-nat-gatewayを指定。
■EC2のインスタンスをパブリック用とプライベート用に1台ずつ作成
[パブリック]
ネットワーク:belpia-vpc-0411、サブネット:belpia-public-subnet-1a、
タグはbelpia-public-server-1aを付ける。
セキュリティグループにどこからでもHTTP/HTTPSからアクセス可で登録。
[プライベート]
ネットワーク:belpia-vpc-0411、サブネット:belpia-private-subnet-1c、
タグはbelpia-private-server-1cを付ける。
セキュリティグループにどこからでもHTTP/HTTPSからアクセス可で登録。
設定画面と説明を元に一緒に構築してみよう
1.VPCの作成
VPCの画面でVPCの作成をクリック
名前は自分が作ったものと分かるものを入れます。
ここではIPv4のCIDR10.0.0.0/16で作成。
IPv6は必要無し。
テナンシーもデフォルトにします。
専用を選ぶと別途料金がかかります。
2.サブネットの作成
【パブリック用サブネット】
サブネットの画面でサブネットの作成をクリックします。
名前をbelpia-public-subnet-1aとします。
用途を名前で判断できるようにpublic-subnetという文字を入れていますが、
それだけでパブリック用のサネット用になる訳ではありません。※後述します。
VPCには先ほど作成したbelpia-vpc-0411を選択します。
※画面ではVPC IDで表示されるので少し分かりづらいですが。
アベイラビリティゾーンはap-northeast-1aで、
IPv4 CIDRブロックには10.0.100.0/24を設定します。
このサブネットにはインターネットからアクセスができるインスタンスを設置することを想定しています。
同様の方法でbelpia-private-subnet-1cという名前で、
belpia-vpc-0411を選択し、AZはap-northeast-1c、
IPv4 CIDRブロックには10.0.200.0/24の内容で作成します。
上記の通り2つのサブネットが作成されました。
belpia-public-subnet-1aからインターネットアクセスを可能にする
・インターネットゲートウェイを作成
インターネットゲートウェイの画面でインターネットゲートウェイの作成ボタンをクリックします。
belpia-internet-gatewayという名前で作成します。
インターネットゲートウェイが一つ作成されました。
但しこの時はまだデタッチ状態です。
つまりこのインターネットゲートウェイはどこにも所属していない状態です。
対象のインターネットゲートウェイのチェックを入れます。
その状態でアクションをクリックし、VPCにアタッチを選択します。
belpia-vpc-0411にアタッチします。
ルートテーブルの画面でルートテーブルの作成をクリックします。
belpia-route-table0411という名前のルートテーブルを作成し、
belpia-vpc-0411に適用します。
belpia-route-table0411を選択し、ルートタブをクリックします。
この時まだ10.0.0.0/16の情報しかありません。
ルートの編集をクリックします。
ルートの追加をクリック
送信先に0.0.0.0/0、ターゲットにInternet Gatewayを選択します。
ターゲットに先ほど作成したbelpia-internet-gatewayが候補として現れるので選択します。
0.0.0.0/0(デフォルトルート)のターゲットにインターネットゲートウェイが指定されていることを確認します。
サブネットの関連付けのタブを選択し、サブネットの関連付けの編集をクリックします。
パブリック用サブネットのbelpia-public-subnet-1aの関連付けをする。
belpia-public-subnet-1aが関連付けされます。
パブリックIPv4アドレス、つまりグローバルIPアドレスが割り当てられない状況になっています。
サブネットの画面でパブリック用サブネットのbelpia-public-subnet-1aを選択。
アクションから自動割り当てIP設定の変更をクリックします。
IPv4の自動割り当てにチェックを入れます。
パブリック用サブネットにEC2のインスタンスを作成する
パブリックサブネットにEC2インスタンスを作成し、
そのEC2からインターネットアクセスができることを確認します。
インスタンスの画面からインスタンスの作成をクリックします。
インスタンスの作成は簡単に書いていきます。
・デフォルトで選ばれているAmazon Linux 2 AMI (HVM), SSD Volume Typeを選択。
・デフォルトで選ばれているt2.microを選択。
ネットワークでbelpia-vpc-0411、サブネットでbelpia-public-subnet-1aを選択。
ストレージはデフォルトのまま。
Name:belpia-public-server-1aを設定。
セキュリティグループはデフォルト。
ここでは以前作ったキーを使いまわしています。
EC2(パブリックサブネット)からPingを実行
SSHでログインするためのグローバルIP(パブリックIP)を確認します。
Teratermでログインします。
ユーザ名は:ec2-user
秘密鍵は使いまわしているpemファイルになります。
EC2から外部にPingを打って成功しています。
これによりパブリックサブネットのEC2インスタンスからインターネットにアクセスできることが確認できました。
belpia-private-subnet-1cからインターネットアクセスを可能にする
NATゲートウェイの画面でNATゲートウェイの作成ボタンを押します。
サブネットはパブリックサブネットのbelpia-public-subnet-1aを選択。
新しいEIPの作成ボタンをクリックしてElastic IPを割り当てる。
Nameはbelpia-nat-gatewayで作成します。
プライベートサブネット用のルートテーブルを編集するため、
サブネットの画面でbelpia-private-subnet-1cのルートテーブルをクリックします。
ルートテーブルの画面に遷移します。
belpia-private-subnet-1cのみのルートテーブルが表示されています。
★印の様にbelpia-private-subnet-1cのIDでソートされています。
一つ前の手順を取らず直接ルートテーブルの画面に移動した場合は、
その他のルートテーブルも表示されているので、どれがプライベートサブネット用ルートテーブルか分かりづらい(分からない)状態になります。
プライベートサブネット用のルートテーブルが選択されている状態で、
ルートタブをクリックします。
そしてルートの編集ボタンをクリックします。
ルートの追加ボタンをクリックします。
送信先に0.0.0.0/0、ターゲットでNATゲートウェイを選択。
前に作成したbelpia-nat-gatewayが候補として現れるので、
それを選択して保存します。
ここまでの設定でプライベートサブネット用からNATゲートウェイを経由してインターネットにアクセスできるようになりました。
EC2(プライベートサブネット)からPingを実行
プライベートサブネット用にEC2を作成します。
作成方法は先ほどやった内容を参考にして下さい。
プライベートサブネット用のEC2にログインするには下記の流れで行います。
パブリックサブネット用のEC2にログイン。
そこからSSHでプライベートサブネット用のEC2にログイン。
※ログイン用のpemファイルはパブリック/プライベートで同じものを使用しています。
パブリック用のEC2にSSHでログインして、pemファイルを作成する。
pemファイルをviで作成します。
中身はデスクトップに保存されている中身をそのままコピペします。
pemファイルに実行権限を与えます。
パブリックサブネット用のEC2からプライベートサブネット用のEC2にログインします。
構文は下記になります。
ssh ec2-user@プライベートサブネット用のEC2のIPアドレス -i 作成したpemファイル名
プライベートサブネット用のEC2にログインできました。
プライベートサブネット用のEC2からwww.yahoo.co.jpにpingが成功しました。
これでプライベートサブネット用のEC2からインターネットへアクセスできることが確認できました。
ここまでのまとめ
これで1つのVPC、2つのサブネットで各NWからインターネットアクセス可能という構成ができました。
AWSを勉強する上でセキュリティだったり、ELBやRDB、さらにS3などまだまだやることはたくさんあります。
まずこの最小の構成の概念を理解した上で少しずつ広げていくことが最善の方法かなと思います。
勉強目的の場合はElastic IPやNATゲートウェイなどは使用しないときは削除、解放しておくと無駄な料金を払わずに済むので消しておいた方が良いと思います。