2
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?

【30日でAWSをマスターするハンズオン問題集】Day4:TGW接続とAWS名前解決

Last updated at Posted at 2025-11-29

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

VPCの外から名前解決をしてみよう!!

📝 概要

項目 内容
所要時間 約2時間
メインサービス Route 53, Transit Gateway, VPCエンドポイント
学べること VPC外からの名前解決、VPC間の接続、エンドポイント経由の接続
想定費用 約1500円(※かかった時間により変動します)

⚠️ 注意:今回リソースの削除まで行うため、ハンズオンを最後まで実施すればリソースの課金は継続しません。しかし、途中で離脱する等で、以下のリソースを削除し忘れると課金が継続します。

🎯 課題内容

本課題ではVPC間の接続を行います。
これまで作成したVPCを複製し、両VPCのEC2間で疎通を行えるようにしてください。
また、Route 53を使用してVPC内外からEC2の名前解決を行います。※ただし、今回はオンプレ環境からのアクセスも考慮してPrivate Hosted Zoneの共有は禁止です。
最後に、VPC内からS3へアクセスできるよう設定していきます。

📊 アーキテクチャ図

architecture-image

🔧 実装機能

  • 2つのVPCをTGWで接続し、EC2同士で疎通可能な状態を作成
  • 名前解決を行えるようRoute 53のPrivate Hosted Zoneを設定
  • オンプレ環境に見立てたVPCから異なるVPCの名前解決を行えるようフォワードルールを設定し、エンドポイントを作成
  • VPCからS3にアクセスできるようにゲートウェイ型のVPCエンドポイントを作成

💡 実装のヒント

TGWを用いた通信

TGWを用いて通信を行う場合は、各VPCのルートテーブルでTGWを宛先としたルートを追加する必要があります。

Route 53を用いた名前解決

自分で作成したドメインを用いて名前解決を行う場合、Route 53のPrivate Hosted Zoneを使用する必要があります。

オンプレ環境(または他のVPC)からAWS内の名前解決を行うためにはVPC内にインバウンドエンドポイントを作成します。
AWS内からオンプレ環境(または他のVPC)の名前解決を行うためには、VPC内にアウトバウンドエンドポイントを作成します。
また、VPC外のDNSを用いて名前解決を行う場合は、Route 53 Resolverにて転送ルールを設定する必要があります。

S3へのアクセス

VPC内からS3へプライベートにアクセスしたい場合は、VPCエンドポイントを作成します。
VPCエンドポイントにはインターフェース型とゲートウェイ型があり、状況による使い分けが必要です。

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

  • VPCを跨いだEC2間で問題なく疎通確認を行えている
  • Route 53 Resolverで正しく転送ルールが設定できている
  • オンプレ想定のVPCにアウトバウンドエンドポイント、AWSのVPCにインバウンドエンドポイントを正しく設定できている
  • オンプレ想定のEC2からAWSのEC2へ名前解決が行えている
  • EC2からS3へエンドポイントを用いて正しくアクセスできる

🧰 使用資材

なし

🔗 リファレンスリンク

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

解答と構築手順を見る

✅ ステップ1:VPCの準備

1.前章(Amazon VPCでネットワーク空間を構築してみよう)を参考に、VPCを2つ、Subnetを2つずつ、Route Table、IAMロール、EC2、エンドポイントを構築する
※S3へアクセスすることも考慮し、IAMロールにはAmazonS3FullAccessポリシーも付与

・app-vpc:10.0.0.0/16
・app-subnet-a:10.0.1.0/24
・app-subnet-b:10.0.2.0/24(EC2用)

・onprem-vpc:10.10.0.0/16
・onprem-subnet-a:10.10.1.0/24
・onprem-subnet-b:10.10.2.0/24(EC2用)

2.セキュリティグループを4つ(それぞれのVPCにEC2用SGとエンドポイント用SGを1つずつ)を作成する

EC2用

・インバウンドルール

タイプ プロトコル  ポート  送信元 
カスタムICMP-IPv4 すべて  すべて 10.10.0.0/16(onprem-vpcでは10.0.0.0/16)

・アウトバウンドルール

タイプ プロトコル  ポート  送信元 
カスタムICMP-IPv4 すべて  すべて 10.10.0.0/16(onprem-vpcでは10.0.0.0/16)
HTTPS TCP  443 エンドポイント用SG

エンドポイント用

・インバウンドルール

タイプ プロトコル  ポート  送信元 
HTTPS TCP  443 EC2用SG

3.セキュリティーグループ(インバウンドエンドポイントとアウトバウンドエンドポイント兼用)を新たに作成する

・インバウンドルール

タイプ プロトコル  ポート  送信元 
RDP(TCP) TCP  53 10.10.0.0/16(onprem-vpcでは10.10.0.0/16)
RDP(UDP) UDP  53 10.10.0.0/16(onprem-vpcでは10.10.0.0/16)

・アウトバウンドルール

タイプ プロトコル  ポート  送信先 
RDP(TCP) TCP  53 10.0.0.0/16(onprem-vpcでは10.0.0.0/16)
RDP(UDP) UDP  53 10.0.0.0/16(onprem-vpcでは10.0.0.0/16)

✅ ステップ2:Transit Gatewayの作成

app-vpconprem-vpcを接続するTransit Gatewayを作成します

1.「VPC」 → 「Transit Gateway」 →「Transit Gatewayを作成」
以下項目を入力してTransit Gatewayを作成

設定項目
ASN 64512 
DNSサポート 有効 
セキュリティグループ参照サポート 無効 
VPN ECMPサポート 無効 
デフォルトルートテーブルの関連付け 無効 
デフォルトルートテーブル伝播 無効 
マルチキャストサポート 無効 
クロスアカウント共有オプションの設定 無効 
CIDRブロック 10.20.0.0/24 

2.「VPC」 → 「Transit Gateway アタッチメント」 → 「Transit Gatewayアタッチメントを作成」
以下項目を入力してTransit Gatewayアタッチメントを各VPCに作成

設定項目
Transit Gateway ID 2で作成したTGWのID 
アタッチメントタイプ VPC 
DNSサポート 有効 
セキュリティグループ参照サポート 無効 
IPv6 サポート 無効 
アプライアンスモードサポート 無効 
VPC ID app-vpc(onprem-vpc) 
サブネット ID app-subnet-a(onprem-subnet-a) 

3.EC2用のルートテーブル、エンドポイント用のルートテーブルにそれぞれ以下を追加する

送信先 ターゲット
10.10.0.0/16(onprem-vpcの場合は10.0.0.0/16) Transit Gateway/2で作成したTGWのID 

4.「VPC」 → 「Transit Gatewayルートテーブル」 → 「Transit Gatewayルートテーブルを作成」
以下項目を入力してTransit Gatewayルートテーブルを作成

設定項目
Transit Gateway ID 2で作成したTGWのID 

5.「VPC」 → 「Transit Gatewayルートテーブル」 → 「Transit GatewayルートテーブルID」 → 「関連付けを作成」
以下項目を入力してTransit Gatewayアタッチメントと関連付け

設定項目
関連付けるアタッチメントを選択 4で作成したTGWアタッチメントのID 
※1度に複数個関連付けられないため、1つずつ同じルートテーブルに関連付ける

6.「VPC」 → 「Transit Gatewayルートテーブル」 → 「Transit GatewayルートテーブルID」 → 「伝播を作成」
以下項目を入力してTransit Gatewayアタッチメントと伝播を作成する

設定項目
伝播するアタッチメントを選択 4で作成したTGWアタッチメントのID 

※1度に複数個伝播できないため、1つずつ同じルートテーブルに伝播する

✅ ステップ3:EC2間で疎通試験

  1. EC2にSystems Managerを用いて接続

  2. app-vpcのEC2からonprem-vpcのEC2へping
    ping 10.10.2.xx(onprem-vpc内のEC2のPrivate IP)

  3. onprem-vpcのEC2からapp-vpcのEC2へping
    ping 10.0.2.xx(app-vpc内のEC2のPrivate IP)

✅ ステップ4:Route 53 Hosted Zone作成

1.「Route 53」 → 「ホストゾーン」 →「ホストゾーンの作成」
以下項目を入力してapp-vpcにプライベートホストゾーンを作成

設定項目
ドメイン名 aws.local 
ホストゾーンに関連付けるVPC app-vpc 

※onprem-vpcは関連付けしない

2.「Route 53」 → 「ホストゾーン」 →「aws.local」 → 「レコードを作成」
以下項目を入力してaws.localにレコードを作成

設定項目
レコード名 app.aws.local 
レコードタイプ A 
10.0.2.xx(app-vpc内のEC2のPrivate IP)
TTL 60
ルーティングポリシー シンプルルーティング

onprem-vpcは関連付けしない

✅ ステップ5:インバウンドエンドポイントとアウトバウンドエンドポイントの作成

app-vpcにインバウンドエンドポイント、onprem-vpcにアウトバウンドエンドポイントを作成します

1.「Route 53」 → 「インバウンドエンドポイント」 → 「インバウンドエンドポイントの作成」
以下項目を入力してインバウンドエンドポイントを作成

設定項目
エンドポイント名 inbound-ep 
Endpoint Category Default 
VPC app-vpc 
セキュリティグループ インバウンドエンドポイント用SG 
エンドポイントのタイプ IPv4 
プロトコル Do53 
サブネット app-subnet-a 
IPv4アドレス 自動的に選択されたIPv4アドレスを使用します 

2.「Route 53」 → 「アウトバウンドエンドポイント」 → 「アウトバウンドエンドポイントの作成」
以下項目を入力してアウトバウンドエンドポイントを作成

設定項目
エンドポイント名 outbound-ep 
Endpoint Category Default 
VPC app-vpc 
セキュリティグループ アウトバウンドエンドポイント用SG 
エンドポイントのタイプ IPv4 
プロトコル Do53 
サブネット onprem-subnet-a 
IPv4アドレス 自動的に選択されたIPv4アドレスを使用します 

✅ ステップ6:Route 53 Resolcerルールの作成

1.「Route 53」 → 「リゾルバ―」 → 「ルール」 → 「ルールの作成」
以下項目を入力してRoute 53 Resolverルールを作成

設定項目
ルール名 aws-local-forward-rule 
ルールタイプ 転送 
ドメイン名 aws.local 
ターゲットIPアドレス app-vpcのインバウンドエンドポイントのIP(2つ) 
ポート 53 
伝送プロトコル Do53 

✅ ステップ7:EC2間の名前解決試験

  1. onprem-vpcのEC2にSystems Managerを用いて接続

  2. onprem-vpcのEC2からapp-vpcの名前解決を行います
    dig app.aws.local
    app.aws.local 10.0.2.xx(app-vpcのEC2のPrivate IP)が返ってきたら成功です

✅ ステップ8:S3の作成

  1. 「S3」 → 「バケット」 → 「バケットを作成」
    以下項目を入力してS3を作成
設定項目
バケットタイプ 汎用 
バケット名 handson-s3 
オブジェクト所有者 ACL 無効 
パブリックアクセスブロック すべてON 
バケットのバージョニング 無効 
暗号化タイプ Amazon S3 マネージドキーを使用したサーバ側の暗号化(SSE-S3) 
バケットキー 無効 

✅ ステップ9:S3 Gateway エンドポイントの作成

VPC内からインターネットを介さずにS3へ安全かつ無料でアクセスする場合は、ゲートウェイ型のVPCエンドポイントを利用します。
ゲートウェイ型のエンドポイントはS3およびDynamoDB専用の仕組みであり、ルートテーブル経由でプライベートな通信経路を確立します。
※インターフェース型エンドポイント(PrivateLink)は、ENI経由の通信となり従量課金が発生します。

1.「VPC」 → 「エンドポイント」 → 「エンドポイントを作成」
以下項目を入力してエンドポイントを作成

設定項目
サービスカテゴリ AWSサービス 
サービス名 com.amazonaws.ap-northeast-1.s3 
タイプ Gateway 
VPC app-vpc 
ルートテーブル app-subnet-aとapp-subnet-bに関連付けしたもの 
ポリシー フルアクセス 

2.app-vpcのEC2用セキュリティグループを修正し、S3向け通信を許可します
・アウトバウンドルール

タイプ プロトコル  ポート  送信先 
HTTPS TCP  443 S3のプレフィックスリスト

✅ ステップ10:S3への接続確認

  1. app-vpcのEC2にSystems Managerを用いて接続

  2. app-vpcのEC2からS3への接続確認を行います
    aws s3 ls
    自分のD3バケットが一覧表示されれば成功

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

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

□ VPCエンドポイント(SSM用、S3用)

□ Route 53(Resolverルール、インバウンドエンドポイント、アウトバウンドエンドポイント、レコード、ホストゾーン)

□ Transit Gateway(ルートテーブル、アタッチメント、Transit Gateway)

□ EC2(2つ)

□ Security Group(EC2用2つ、エンドポイント用2つ、Route 53エンドポイント用)

□ ルートテーブル

□ Subnet(4つ)

□ VPC(2つ)

□ IAMロール

🏁 おつかれさまでした!

この課題では VPCの複数機能を組み合わせて、VPC間の接続や名前解決、S3の接続を行いました。
構成が増えていくにつれてルートテーブルやセキュリティグループ、IAMロールやポリシーなど細かい制御が増えてきて設定が大変になってきますね。
次回は応用編としてAPI Gatewayとの連携に挑戦してみましょう!

2
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
2
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?