0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SAAで学ぶAWS -VPC編-

Posted at

AWS Solutions Architect Associate を取得する際に、VPCについて知りたいときに見るドキュメント。

目次

  1. 概要
  2. 作ってみる
  3. 動作確認
  4. メモ書き

概要

AWSのインスタンスを生成するようなサービスを利用する際に必要になる土台のネットワーク部分を作成する。
1つのアカウントで複数プロジェクトを管理する場合は、サービスごとにVPCを作ってリソースの管理をするのが望ましいそうな。

今回作るのは以下の構成。

2cc450a4.png

大枠のVPCの中に2種類のサブネットを合計6個作成する。

  • リージョン (ap-northeast-1)
    • VPC (saa-vpc)
      • プライベートサブネット
        • AZ a, b, c
      • パブリックサブネット
        • AZ a, b, c

サブネットはIGWへのルーティングの有無によって2種類に分解できる。

  • パブリックサブネット
    • IGWへのルーティングがあるサブネット
    • パブリックIPが付与されていればインターネットに接続できる
    • インターネットに公開されるwebサーバなどを配置する
  • プライベートサブネット
    • IGWへのルーティングがないサブネット
    • 基本的にインターネットに接続できない
    • インターネットに接続する場合はNAT GWを経由してアクセスする
    • インターネットからはアクセスされたくないDBサーバなどを配置する

これから色々構築する (予定な) ので下準備としてこんな感じのネットワークを作成する。
また、リージョンは東京リージョンに作成するのでリージョンを確認しておくこと。

e7787dc8.png

作ってみる

VPCの作成

  1. AWSにログイン後 VPC を検索してメニューを選択する
    08ccc884.png

  2. 左メニューからVPCを選択してVPCの作成を選択する
    a143da0b.png

  3. 名前タグに saa-vpc を入力する
    IPv4 CIDR ブロックに 34.0.0.0/16 を入力する
    IPv6 CIDR ブロックは今回は使わないので IPv6 CIDR ブロックなし を選択する
    マシンを専有する必要はないので、テナンシーは デフォルト を選択する
    33366e57.png

これでVPCが作成された。

VPCフローログ

  • VPC内部のネットワークトラフィックのログをCloudWatchLogsに保存できる
  • CloudWatchLogsでログフィルタをしてLambda連携やアラートの送信も可能
  • CloudWatchLogsの料金が気になる場合はS3に直接出力してコストを抑えることも可能

次にこのVPCにインターネットゲートウェイをアタッチする。

インターネットゲートウェイの作成

インターネットに接続するためのIGW(Internet Gate Way)を作成、設定する。

  1. 左メニューからインターネットゲートウェイを選択してインターネットゲートウェイの作成を選択する
    9e48d89a.png

  2. 名前タグに saa-vpc-igw を入力して作成
    d2a5d552.png

  3. IGW一覧に戻って saa-vpc-igw を選択 > アクション > VPCにアタッチ
    96bcc442.png

  4. VPCに saa-vpc のVPC-IDを入力 > アタッチ
    2d96bcd0.png

これでsaa-vpcにIGWがアタッチされた。
次にこのVPC内にサブネットを作成する。

サブネットの作成

各AZにパブリックサブネットとプライベートサブネットを作成する。

  1. 左メニューからサブネットを選択してサブネットの作成を選択する
    cff4f4e7.png
  2. ap-northeast-1a のパブリックサブネットを作成
    • 名前タグに saa-pubsub-1a を入力する
    • VPCに先程作成した saa-vpc のVPC-IDを入力する
    • アベイラビリティーゾーンに ap-northeast-1a を入力する
    • IPv4 CIDR に 34.0.10.0/24 を入力する
      3de8ae61.png
    • サブネット一覧から saa-pubsub-1a を選択して アクション > 自動割り当て IP 設定の変更 を選択する
    • パブリック IPv4 アドレスの自動割り当てを有効にする をチェックして保存
  3. ap-northeast-1a のプライベートサブネットを作成
    • 名前タグに saa-prisub-1a を入力する
    • VPCに先程作成した saa-vpc のVPC-IDを入力する
    • アベイラビリティーゾーンに ap-northeast-1a を入力する
    • IPv4 CIDR に 34.0.1.0/24 を入力する
  4. 他 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 を作成、設定する。

  1. 左メニューからNAT ゲートウェイを選択してNATゲートウェイの作成を選択する
    6c4df041.png

  2. サブネットに saa-pubsub-1a を入力する
    Elastic IP 割り当て ID は新しいEIPの作成で自動入力してNATゲートウェイの作成
    ※ パブリックサブネットであればどこでもOK
    a91ddb89.png

これで saa-pubsub-1a のサブネットにNATゲートウェイが作成された。
次にサブネットの種類ごとにルートテーブルを作成、設定する。

ルートテーブルの作成

パブリックサブネット向けのルートテーブルと、プライベートサブネット用のルートテーブルを作成する。

  1. 左メニューからルートテーブルを選択してルートテーブルの作成を選択する
    cc755aa0.png
  2. パブリックサブネット向けルートテーブルの作成、設定
    1. 名前タグに saa-public-route-table を入力する
      VPCに saa-vpc のVPC-IDを入力して作成
      59afc7b4.png
    2. ルートテーブル一覧に戻り saa-public-route-table を選択 > アクション > サブネットの関連付けの編集
      ee54f894.png
    3. saa-pubsub-1a, saa-pubsub-1c, saa-pubsub-1dを選択し保存
      a5d78e6b.png
    4. ルートテーブル一覧に戻り saa-public-route-table を選択 > アクション > ルートの編集
      3319088e.png
    5. ルートの追加 > 送信先に 0.0.0.0/0 を、ターゲットに Internet Gateway > saa-vpc-igw を選択しルートの保存
      4689fdf2.png
  3. プライベートサブネット向けルートテーブルの作成
    1. 名前タグに saa-private-route-table を入力する
      VPCに saa-vpc のVPC-IDを入力して作成
    2. ルートテーブル一覧に戻り saa-private-route-table を選択 > アクション > サブネットの関連付けの編集
    3. saa-prisub-1a, saa-prisub-1c, saa-prisub-1dを選択し保存
    4. ルートテーブル一覧に戻り saa-private-route-table を選択 > アクション > ルートの編集
    5. ルートの追加 > 送信先に 0.0.0.0/0 を、ターゲットに NAT Gateway > 先程作成したNATゲートウェイのIDを選択しルートの保存

これでルートテーブルの作成、設定が完了した。

動作確認

想定した動作になっているか確認する。

  • 想定
    • パブリックサブネットのインスタンス
      • パブリックIPでアクセスできること
      • インターネットに接続できること
      • プライベートサブネットのインスタンスにアクセスできること
    • プライベートサブネットのインスタンス
      • NAT GateWay 経由でインターネットにアクセスできること

こんな感じで試してみる。
f77e7c7f.png

インスタンスの作成

  1. saa-pubsub-1c にインスタンスを作成する
    1. EC2を検索してメニューを選択し左メニューからインスタンスを選択してインスタンスの作成を選択する
      15ce4f5a.png
    2. Amazon マシンイメージに Amazon Linux 2 AMI (HVM), SSD Volume Type を選択する
      827b0671.png
    3. インスタンスタイプに t2.micro を選択する
      b30b2c16.png
    4. インスタンスの詳細のネットワークに saa-vpc を入力する
      サブネットに saa-pubsub-1c を入力する
      その他はデフォルトで次のステップへ進む
      c3918be9.png
    5. ストレージはデフォルトで次のステップへ進む
    6. タグに キー:Name 値:pub-c を入力し次のステップへ進む
      6523faf5.png
    7. セキュリティグループ名に saa-ec2-web を入力する
      ff7fecbe.png
    8. 内容を確認して起動し、新しいキーペアの作成 キーペア名saa-keypair を入力しダウンロードする
      ※ キーペアはとても大切なものなのでなくさないこと!!
      dfda2388.png
  2. saa-prisub-1c にインスタンスを作成する
    1. pub-c と同様に作成する。ただし、サブネットは saa-prisub-1c でタグは Name:pri-c に置き換えて作成する

これでEC2インスタンスが作成できた。

接続の確認

pri-c はそもそもパブリックIPがないのでアクセスできない。
まずは pub-c にアクセスして、そこ経由で pri-c にアクセスできることを確認する。
pub-c のパブリックIPアドレスを確認しておく。
7c58eb8c.png

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アドレスを確認する。
7c58eb8c.png

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は削除しましょう。

お疲れ様でした!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?