AWS Solutions Architect Associate を取得する際に、VPCについて知りたいときに見るドキュメント。
目次
- 概要
- 作ってみる
- 動作確認
- メモ書き
概要
AWSのインスタンスを生成するようなサービスを利用する際に必要になる土台のネットワーク部分を作成する。
1つのアカウントで複数プロジェクトを管理する場合は、サービスごとにVPCを作ってリソースの管理をするのが望ましいそうな。
今回作るのは以下の構成。
大枠のVPCの中に2種類のサブネットを合計6個作成する。
- リージョン (ap-northeast-1)
- VPC (saa-vpc)
- プライベートサブネット
- AZ a, b, c
- パブリックサブネット
- AZ a, b, c
- プライベートサブネット
- VPC (saa-vpc)
サブネットはIGWへのルーティングの有無によって2種類に分解できる。
- パブリックサブネット
- IGWへのルーティングがあるサブネット
- パブリックIPが付与されていればインターネットに接続できる
- インターネットに公開されるwebサーバなどを配置する
- プライベートサブネット
- IGWへのルーティングがないサブネット
- 基本的にインターネットに接続できない
- インターネットに接続する場合はNAT GWを経由してアクセスする
- インターネットからはアクセスされたくないDBサーバなどを配置する
これから色々構築する (予定な) ので下準備としてこんな感じのネットワークを作成する。
また、リージョンは東京リージョンに作成するのでリージョンを確認しておくこと。
作ってみる
VPCの作成
-
名前タグに
saa-vpc
を入力する
IPv4 CIDR ブロックに34.0.0.0/16
を入力する
IPv6 CIDR ブロックは今回は使わないのでIPv6 CIDR ブロックなし
を選択する
マシンを専有する必要はないので、テナンシーはデフォルト
を選択する
これでVPCが作成された。
VPCフローログ
- VPC内部のネットワークトラフィックのログをCloudWatchLogsに保存できる
- CloudWatchLogsでログフィルタをしてLambda連携やアラートの送信も可能
- CloudWatchLogsの料金が気になる場合はS3に直接出力してコストを抑えることも可能
次にこのVPCにインターネットゲートウェイをアタッチする。
インターネットゲートウェイの作成
インターネットに接続するためのIGW(Internet Gate Way)を作成、設定する。
これでsaa-vpc
にIGWがアタッチされた。
次にこのVPC内にサブネットを作成する。
サブネットの作成
各AZにパブリックサブネットとプライベートサブネットを作成する。
- 左メニューから
サブネット
を選択してサブネットの作成
を選択する
- ap-northeast-1a のパブリックサブネットを作成
- ap-northeast-1a のプライベートサブネットを作成
- 名前タグに
saa-prisub-1a
を入力する - VPCに先程作成した
saa-vpc
のVPC-IDを入力する - アベイラビリティーゾーンに
ap-northeast-1a
を入力する - IPv4 CIDR に
34.0.1.0/24
を入力する
- 名前タグに
- 他 c, d のAZでも同じ要領で値を置き換えて作成する
-
saa-pubsub-1c
の IPv4 CIDR :34.0.20.0/24
-
saa-prisub-1c
の IPv4 CIDR :34.0.2.0/24
-
saa-pubsub-1d
の IPv4 CIDR :34.0.30.0/24
-
saa-prisub-1d
の IPv4 CIDR :34.0.3.0/24
-
これでサブネットが作成された。
次にNAT Gateway を作成、設定する。
NAT Gatewayの作成、設定
プライベートサブネットからインターネットに接続するためのNAT Gateway を作成、設定する。
これで saa-pubsub-1a のサブネットにNATゲートウェイが作成された。
次にサブネットの種類ごとにルートテーブルを作成、設定する。
ルートテーブルの作成
パブリックサブネット向けのルートテーブルと、プライベートサブネット用のルートテーブルを作成する。
- 左メニューから
ルートテーブル
を選択してルートテーブルの作成
を選択する
- パブリックサブネット向けルートテーブルの作成、設定
- 名前タグに
saa-public-route-table
を入力する
VPCにsaa-vpc
のVPC-IDを入力して作成
- ルートテーブル一覧に戻り
saa-public-route-table
を選択 > アクション > サブネットの関連付けの編集
-
saa-pubsub-1a
,saa-pubsub-1c
,saa-pubsub-1d
を選択し保存
- ルートテーブル一覧に戻り
saa-public-route-table
を選択 > アクション > ルートの編集
- ルートの追加 > 送信先に
0.0.0.0/0
を、ターゲットにInternet Gateway
>saa-vpc-igw
を選択しルートの保存
- 名前タグに
- プライベートサブネット向けルートテーブルの作成
- 名前タグに
saa-private-route-table
を入力する
VPCにsaa-vpc
のVPC-IDを入力して作成 - ルートテーブル一覧に戻り
saa-private-route-table
を選択 > アクション > サブネットの関連付けの編集 -
saa-prisub-1a
,saa-prisub-1c
,saa-prisub-1d
を選択し保存 - ルートテーブル一覧に戻り
saa-private-route-table
を選択 > アクション > ルートの編集 - ルートの追加 > 送信先に
0.0.0.0/0
を、ターゲットにNAT Gateway
> 先程作成したNATゲートウェイのIDを選択しルートの保存
- 名前タグに
これでルートテーブルの作成、設定が完了した。
動作確認
想定した動作になっているか確認する。
- 想定
- パブリックサブネットのインスタンス
- パブリックIPでアクセスできること
- インターネットに接続できること
- プライベートサブネットのインスタンスにアクセスできること
- プライベートサブネットのインスタンス
- NAT GateWay 経由でインターネットにアクセスできること
- パブリックサブネットのインスタンス
インスタンスの作成
- saa-pubsub-1c にインスタンスを作成する
-
EC2
を検索してメニューを選択し左メニューからインスタンス
を選択してインスタンスの作成
を選択する
- Amazon マシンイメージに
Amazon Linux 2 AMI (HVM), SSD Volume Type
を選択する
- インスタンスタイプに
t2.micro
を選択する
- インスタンスの詳細のネットワークに
saa-vpc
を入力する
サブネットにsaa-pubsub-1c
を入力する
その他はデフォルトで次のステップへ進む
- ストレージはデフォルトで次のステップへ進む
- タグに キー:
Name
値:pub-c
を入力し次のステップへ進む
- セキュリティグループ名に
saa-ec2-web
を入力する
- 内容を確認して起動し、
新しいキーペアの作成
キーペア名saa-keypair
を入力しダウンロードする
※ キーペアはとても大切なものなのでなくさないこと!!
-
- saa-prisub-1c にインスタンスを作成する
-
pub-c
と同様に作成する。ただし、サブネットはsaa-prisub-1c
でタグはName
:pri-c
に置き換えて作成する
-
これでEC2インスタンスが作成できた。
接続の確認
pri-c
はそもそもパブリックIPがないのでアクセスできない。
まずは pub-c
にアクセスして、そこ経由で pri-c
にアクセスできることを確認する。
pub-c
のパブリックIPアドレスを確認しておく。
pri-c
に接続するために pub-c
に鍵を送信しておく。
コマンドラインから以下を実行する。
# pub-c のIPアドレスを設定する
PUBC=<pub-cのパブリックIPアドレス>
# キーペアの鍵を pub-c に転送する
scp -i ./saa-keypair.pem ./saa-keypair.pem ec2-user@$PUBC:/home/ec2-user/
# pub-c に接続する
ssh -i ./saa-keypair.pem -l ec2-user $PUBC
接続できたら pub-c
からインターネットに接続できることを確認してみる。
# Google のページにアクセスしてみる
curl www.google.co.jp
アクセスできたら pri-c
に接続できることを確認するために pri-c
のIPアドレスを確認する。
pub-c
から pri-c
に接続する。
# pri-c のIPアドレスを環境変数に設定する
PRIC=<pri-cのIPアドレス>
# pri-c へ接続する
ssh -i ./saa-keypair.pem ec2-user@$PRIC
接続できた。次にNATゲートウェイ経由でインターネットに接続できることを確認する。
# pri-c から Google のページにアクセスしてみる
curl www.google.co.jp
接続できた。
これで図の構成の構築が完了した。
課金が発生してしまうので、不要なインスタンスやNAT Gatewayは削除しましょう。
お疲れ様でした!