4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【30日でAWSをマスターするハンズオン問題集】Day3:Amazon VPCでネットワーク空間を構築してみよう!

Posted at

📝 概要

こちらの投稿は2025 Japan AWS Jr.Championsの有志メンバーで作成した『30日間で主要AWSサービスを構築できるようになる』をテーマにした初学者向けのハンズオン問題集のDAY3になります!
問題集の趣旨や作成に至るまでの経緯は以下の記事をご覧いただければと思います。
https://qiita.com/satosato_kozakana/items/446971c2deca7e27d0aa

項目 内容
所要時間 約3時間
メインサービス Amazon VPC(VPC、Subnet、Route Table、Security Group、Internet Gateway、NAT Gateway、Elastic IP、Endpoint)、ALB(Application Load Balancer、Target Group)
学べること Amazon VPCの基礎知識とその役割、インターネットへの接続・インターネットからの接続の仕組み
想定費用 約500円(※通信量により変動します)

⚠️ 注意:以下のリソースを削除し忘れると課金が継続します。

🎯 課題内容

Amazon VPCの機能を利用して、ネットワーク空間を構築します。

📊 アーキテクチャ図

30days master network構成図.png

🔧 実装機能

  • EC2はPublic Subnet上に配置するとセキュリティリスクが高まるため、
    Private Subnetに配置します。
  • ALBはPublic Subnet上に配置することで、インターネットからPrivate SubnetのEC2に接続します。
  • NAT GatewayをPublic Subnet上に配置することで、Private SubnetのEC2からインターネットに接続します。
  • System Managerのセッションマネージャーを利用することで、AWS内部の通信を利用して安全にEC2に接続します。

上記を踏まえ、今回のハンズオンではこちらの機能について実装します。

  • Private SubnetのEC2に、ALB経由でインターネットから接続できること
  • Private SubnetのEC2に、セッションマネージャー経由で接続できること
  • Private SubnetのEC2から、NAT Gateway経由でインターネットに接続できること

💡 実装のヒント

SubnetのCIDR割り当て方法

CIDRで指定したIPアドレスのうち、以下の5つはAWSにより予約されており使用できません

▼10.0.0.0/24でSubnetを作成した場合

CIDR 内容
10.0.0.0 ネットワークアドレス
10.0.0.1 VPCルータ用のアドレス
10.0.0.2 DNSサーバのIPアドレス
10.0.0.3 将来利用のためAWSが予約
10.0.0.255 ブロードキャストアドレス

例:10.0.0.0/24 の場合、利用可能なIPは 256 - 5 = 251個 です

EC2への接続方法

Systems Managerのセッションマネージャーという機能を使うと、AWS内部の安全な通信でEC2に接続することができます。
接続にあたり必要な設定(IAMロール、VPC Endpoint、Security Group)について調べてみましょう!

✅ 完成後のチェックポイント

  • Systems Managerを利用してEC2に接続できる
  • EC2からインターネットに接続できる
  • インターネットからALB経由でEC2に接続できる

🔗 リファレンスリンク

🛠️ 解答・構築手順(クリックで開く)

解答と構築手順を見る

✅ ステップ1:Amazon VPC の作成

  1. AWS マネジメントコンソールを開く
  2. 「VPC」→「VPCを作成」
  3. IPv4 CIDR:10.0.0.0/16
  4. VPC作成後に、右上の「アクション」→「VPCの設定を編集」
  5. 「DNS ホスト名を有効化」にチェックを入れる

00_vpc.JPG

01_vpc.JPG

✅ ステップ2:Subnet の作成

今回はAWSの推奨に従い、マルチAZ構成にします。

作成するSubnetは、計4つ(AZ-a × 2、AZ-c × 2)です。

▼Public Subnet:計2つ(AZ-a × 1、AZ-c × 1)

  1. 「サブネット」→「サブネットを作成」
  2. VPC:ステップ1で作成したVPCを選択する
  3. アベイラビリティゾーン:アジアパシフィック(東京)/ap-northeast-1aアジアパシフィック(東京)/ap-northeast-1c
  4. IPv4 サブネット CIDR ブロック:10.0.0.0/2410.0.1.0/24

02_subnet.JPG

03_subnet.JPG

▼Private Subnet:計2つ(AZ-a × 1、AZ-c × 1)

  1. 「サブネット」→「サブネットを作成」
  2. VPC:ステップ1で作成したVPCを選択する
  3. アベイラビリティゾーン:アジアパシフィック(東京)/ap-northeast-1aアジアパシフィック(東京)/ap-northeast-1c
  4. IPv4 サブネット CIDR ブロック: 10.0.2.0/2410.0.3.0/24

04_subnet.JPG

05_subnet.JPG

✅ ステップ3:Route Tableの作成

ステップ2で作成したSubnetに紐づけるRoute Tableを作成します。

作成するRoute Tableは、計2つ(Public Subnet用×1、Private Subnet用×1)です。

▼Public Subnet用

  1. 「ルートテーブル」→「ルートテーブルを作成」
  2. VPC:ステップ1で作成したVPCを選択する
  3. Route Table作成後に、「サブネットの関連付け」→「サブネットの関連付けを編集」をクリックして、ステップ2で作成したPublic Subnetにチェックを入れる

06_rt.JPG

07_rt.JPG

▼Private Subnet用

  1. 「ルートテーブル」→「ルートテーブルを作成」
  2. VPC:ステップ1で作成したVPCを選択する
  3. Route Table作成後に、「サブネットの関連付け」→「サブネットの関連付けを編集」をクリックして、ステップ2で作成したPrivate Subnetにチェックを入れる

08_rt.JPG

09_rt.JPG

✅ ステップ4:Internet Gatewayの作成

インターネットへの出口となるInternet Gatewayを作成します。

  1. 「インターネットゲートウェイ」→「インターネットゲートウェイの作成」
  2. Internet Gateway作成後に、右上の「アクション」→「VPCにアタッチ」をクリックして、対象のVPCにチェックを入れる
  3. Public Subnet用のRoute Tableに、Internet Gateway向けの0.0.0.0/0のルートを追加する

10_igw.JPG

11_igw.JPG

12_igw.JPG

✅ ステップ5:NAT Gatewayの作成

Private Subnet内に配置されたリソースから、インターネットに接続するために、NAT Gateway を作成します。

今回は本番利用ではなく、ハンズオンを目的とした検証環境であるため、
コスト最適化の観点から NAT Gateway は 1 つのアベイラビリティゾーン(AZ)にのみ配置します。

もう一方の AZ にあるプライベートサブネットからのインターネットアクセスについては、
ルートテーブルを用いて NAT Gateway のある AZ 経由で通信できるように構成します。

  1. 「NAT ゲートウェイ」→「NAT ゲートウェイの作成」
  2. Subnet:ステップ2で作成したPublic Subnet(10.0.0.0/24)を選択する
  3. 接続タイプ:パブリックを選択する
  4. Elastic IP 割り当て ID:Elastic IP を割り当てをクリックする
  5. ステップ3で作成したPrivate Subnet用Route Tableに、NAT Gateway向けの0.0.0.0/0のルートを追加する

13_ngw.JPG

14_ngw.JPG

✅ ステップ6:Security Groupの作成

EC2用、Endpoint用、ALB用に、計3つ作成します。

▼EC2用

  1. 「セキュリティグループ」→「セキュリティグループの作成」
  2. インバウンドルール:以下の許可ルールを追加する
  3. アウトバウンドルール:以下の許可ルールを追加する

・インバウンドルール

タイプ プロトコル  ポート  ソース 
HTTP TCP  80 ALB用のSecurity Group

・アウトバウンド

タイプ プロトコル  ポート  送信先 
HTTPS TCP  443 Endpoint用のSecurity Group
HTTP TCP  80 0.0.0.0/0
HTTPS TCP  443 0.0.0.0/0

15_sg.JPG

16_sg.JPG

▼Endpoint用

  1. 「セキュリティグループ」→「セキュリティグループの作成」
  2. インバウンドルール:以下の許可ルールを追加する
  3. アウトバウンドルール:デフォルトのまま

・インバウンドルール

タイプ プロトコル  ポート  ソース 
HTTPS TCP  443 EC2用のSecurity Group

17_sg.JPG

▼ALB用

  1. 「セキュリティグループ」→「セキュリティグループの作成」
  2. インバウンドルール:以下の許可ルールを追加する
  3. アウトバウンドルール:以下の許可ルールを追加する

・インバウンドルール

タイプ プロトコル  ポート  ソース 
HTTP TCP  80 0.0.0.0/0

・アウトバウンドルール

タイプ プロトコル  ポート  送信先 
HTTP TCP  80 EC2用のSecurity Group

18_sg.JPG

19_sg.JPG

✅ ステップ7:VPCエンドポイントの作成

Systems Manager用のVPCエンドポイントを2つ作成します。
サービスごとに作成する必要があるため、下記手順を繰り返してください。

  1. 「VPC」→「エンドポイント」→「エンドポイントを作成」
  2. タイプ:AWSのサービスを選択する
  3. サービス:
  • com.amazonaws.ap-northeast-1.ssm
  • com.amazonaws.ap-northeast-1.ec2
  1. VPC:ステップ1で作成したVPCを選択する
  2. サブネット:ステップ2で作成したPrivate Subnetを選択する
  3. セキュリティグループ:ステップ6で作成したEndpoint用のSecurity Groupを選択する

20_endpoint.JPG

23_endpoint.JPG

21_endpoint.JPG

22_endpoint.JPG

✅ ステップ8:IAMロールの作成

Systems Managerに接続する権限をEC2に割り当てるためのIAMロールを作成します。

  1. 「IAM」→「ロール」→「ロールを作成」
  2. AWS のサービス:EC2を選択する
  3. 許可ポリシー:AmazonSSMManagedInstanceCoreを選択する

26_iam.JPG

27_iam.JPG

28_iam.JPG

✅ ステップ9:EC2の作成

今回はアクセス確認の目的で利用するため、無料利用枠のスペックで作成します。

マルチAZ構成のため作成するEC2は、計2つ(AZ-a × 1、AZ-c × 1)です。
1つずつ作成する必要があるため、下記手順を繰り返してください。

  1. 「EC2」→「インスタンスを作成」
  2. Amazon マシンイメージ:Amazon Linux 2023を選択する
  3. インスタンスタイプ:t3.microを選択する
  4. キーペア:キーペアなしで続行を選択する
    (Systems Manager接続の場合はキーペア不要)
  5. ネットワーク設定:
    • ステップ1で作成したVPCを選択する
    • ステップ2で作成したPrivate Subnet(10.0.0.0/24または10.0.1.0/24)を選択する
    • ステップ6で作成したEC2用のSecurity Groupを選択する
  6. ストレージ設定:1×8GiB gp3ルートボリュームを選択する
  7. 高度な詳細:IAMインスタンスプロフィールでステップ8で作成したIAMロールを選択する

29_ec2.JPG

30_ec2.JPG

31_ec2.JPG

✅ ステップ10:Target GroupとALBの作成

EC2をTarget Groupに登録し、そのTarget GroupをALBに関連付けすることで、
インターネットからの通信リクエストをALBが受け取り、EC2に振り分けることができます。

▼Target Groupの作成

  1. 「EC2」→「ターゲットグループ」→「ターゲットグループを作成」
  2. ターゲットの種類:インスタンスを選択する
  3. プロトコル:HTTPを選択する
  4. ポート:80を入力する
  5. VPC:ステップ1で作成したVPCを選択する
  6. ヘルスチェックプロトコル:HTTPを選択する
  7. ヘルスチェックパス:/を入力する
  8. 「次へ」をクリックする
  9. 使用可能なインスタンス:ステップ9で作成したEC2(2つ)にチェックを入れ、「保留中として以下を含める」をクリックする

35_tg.JPG

36_tg.JPG

37_tg.JPG

▼ALBの作成

  1. 「EC2」→「ロードバランサー」→「ロードバランサーを作成」
  2. 種類:Application Load Balancerを選択する
  3. スキーム:インターネット向けを選択する
  4. VPC:ステップ1で作成したVPCを選択する
  5. サブネット:Public Subnet(2つ)を選択する
  6. セキュリティグループ:ステップ6で作成したALB用のSecurity Groupを選択する
  7. リスナー:HTTP(ポート80)を選択する
  8. ターゲットグループ:ステップ10で作成したTarget Groupを選択する

39_alb.JPG

40_alb.JPG

41_alb.JPG

✅ ステップ11:動作確認

  • セッションマネージャーを使用してEC2に接続できるか?
  • EC2からインターネットにアクセスできるか?
  • ブラウザでALBのDNS名にアクセスし、EC2のレスポンスが返るか?

▼セッションマネージャーを使用してEC2に接続できるか?

  1. 「EC2」→「ロードバランサー」→「ロードバランサーを作成」
  2. ステップ9で作成したEC2を選択する
  3. 「接続」
  4. セッションが開始し、コマンド入力が可能な画面が表示されれば成功!

▼EC2からインターネットにアクセスできるか?

  1. セッションマネージャーを使用してEC2に接続後、以下コマンドを実行する

  2. GoogleトップページのHTMLが返ってくれば成功!

▼ブラウザでALBのDNS名にアクセスし、EC2のレスポンスが返るか?

  1. ALBのDNS名を取得する

    1. 「EC2」→「ロードバランサー」→「ステップ10で作成したALB」
    2. 「詳細欄」のDNS名をコピーする
  2. セッションマネージャーを使用してEC2に接続後、以下コマンドを実行する

    • sudo dnf install -y httpd
    • sudo systemctl enable httpd
    • sudo systemctl start httpd
    • echo "Welcome!!" | sudo tee /var/www/html/index.html
  3. ご自身のPCでブラウザを開き、http://<ALBのDNS名> にアクセス

  4. 「Welcome!!」が表示されれば成功

🧹 片付け(リソース削除)

依存関係があるため、削除する際の順番に注意してください。

  • EC2を削除
  • IAMロールを削除
  • Endpointを削除
  • ALBを削除
  • Target Groupを削除
  • Security Groupを削除
  • NAT Gatewayを削除
  • Elastic IPを削除
  • Internet Gatewayを削除(事前にVPCからデタッチする)
  • Route Tableを削除(事前にSubnet関連付けを外す)
  • Subnetを削除
  • VPCを削除(VPC作成時にデフォルトで作成されたRoute Table、Security Groupは、このタイミングで削除されます。)

🏁 おつかれさまでした!

このハンズオンでは、ALBを使ってPrivate Subnetに配置したEC2にインターネットからアクセスする構成を構築しました。
また、NAT Gatewayによるインターネットアクセスや、Systems ManagerによるAWS内部の接続も確認できました。

この課題では VPCの複数機能を組み合わせて、AWSの基礎的なネットワーク構成が身につきます。

次回は、応用編としてVPC間接続(Transit Gateway)API Gatewayとの連携 に挑戦してみましょう!

4
0
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
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?