AWSコンソールでVPC設計からAP+DB 2層構成を構築する手順【踏み台SSH / CloudFormation版との比較付き】

AWS Basic
スポンサーリンク
スポンサーリンク
  1. はじめに
  2. キーワード解説
  3. 前フェーズとの違い
  4. 使用するAWSサービス
  5. 構築するリソース一覧
  6. 全体の作業順序
  7. 【重要】⓪ 自分のIPアドレスを確認する
  8. ① キーペアの作成
  9. ② IAMロールの作成
  10. ③ VPCの作成
  11. ④ インターネットゲートウェイの作成・アタッチ
    1. 4-1. インターネットゲートウェイを作成する
    2. 4-2. VPCにアタッチする
  12. ⑤ サブネットの作成
    1. 5-1. パブリックサブネット
    2. 5-2. プライベートサブネット
    3. 5-3. パブリックサブネットのパブリックIP自動割り当てを有効化
  13. ⑥ ルートテーブルの設定
    1. 6-1. パブリックルートテーブルを作成する
    2. 6-2. プライベートルートテーブルを作成する
    3. 6-3. S3 VPC Gateway Endpointを作成する(重要)
  14. ⑦ セキュリティグループの作成
    1. 7-1. APサーバSGの作成
    2. 7-2. DBサーバSGの作成
  15. ⑧ APサーバEC2の起動(パブリックサブネット)
    1. 8-1. 基本設定
    2. 8-2. ネットワーク設定
    3. 8-3. IAMロール・UserDataの設定
  16. ⑨ DBサーバEC2の起動(プライベートサブネット)
    1. 9-1. 基本設定
    2. 9-2. ネットワーク設定
    3. 9-3. IAMロール・UserDataの設定
  17. ⑩ 動作確認
    1. 10-1. APサーバのWeb確認
    2. 10-2. APサーバへのSSH接続
    3. 10-3. キーペアをAPサーバにコピーする(踏み台SSH準備)
    4. 10-4. APサーバ経由でDBサーバにSSH接続(踏み台接続)
    5. 10-5. APサーバからMySQLに接続(AP→DB通信確認)
  18. ⑪ リソースの削除
    1. 削除順序
  19. CloudFormation版との比較
  20. トラブルシューティング
  21. まとめ
  22. 関連記事

はじめに

「APサーバはインターネットに公開しつつ、DBサーバはインターネットから完全に隔離したい」——これが実際のAWSシステム設計でよく使われる AP+DB 2層構成 です。

この記事では、AWSコンソール(GUI)のみを使って、カスタムVPCを設計し、パブリックサブネット(APサーバ)とプライベートサブネット(DBサーバ)に分離した2層アーキテクチャをゼロから手動構築するハンズオンを紹介します。

インターネット
  ↓ HTTP(80) / SSH(22)  ← 自分のIPのみ
[インターネットゲートウェイ(my-igw)]
  ↓
[VPC: my-vpc(10.0.0.0/16)]
  │
  ├─ [パブリックサブネット: 10.0.1.0/24]
  │    └── APサーバEC2(my-ap-instance)
  │          ├── Apache(ポート80)   ← インターネットから直接アクセス可
  │          └── my-ap-sg
  │                ↓ SSH(22) / MySQL(3306) ← APサーバSGのみ許可(SG参照)
  └─ [プライベートサブネット: 10.0.2.0/24]
       └── DBサーバEC2(my-db-instance)
             ├── MariaDB(ポート3306)
             ├── パブリックIPなし       ← インターネットから隔離
             └── my-db-sg

このハンズオンで体験できること:

  • カスタムVPC・サブネット・インターネットゲートウェイ・ルートテーブルを一から設計・構築
  • パブリックサブネット(APサーバ)とプライベートサブネット(DBサーバ)の分離
  • DBサーバにパブリックIPを付与せずインターネットから隔離する設計
  • APサーバを踏み台(Bastion)としてDBサーバにSSH接続する方法
  • S3 VPC Gateway Endpointでプライベートサブネットからパッケージをインストールする方法

このハンズオンのポイント:

Phase 1-3(MySQL)まではデフォルトVPCを使っていましたが、今回はカスタムVPCを一から設計します。実際のAWS本番環境に近いネットワーク設計を体験できます。


この記事は CloudFormation版ハンズオン の比較記事です。
コンソール操作でVPCリソースの依存関係・設定手順を視覚的に学び、CloudFormationとの違いを比較したい方向けです。


-->

スポンサーリンク

キーワード解説

用語意味
VPC(Virtual Private Cloud)AWS上に作るプライベートなネットワーク空間。今回は 10.0.0.0/16 のCIDRで作成する
パブリックサブネットインターネットゲートウェイへのルートを持つサブネット。APサーバを配置する
プライベートサブネットインターネットへの経路を持たないサブネット。DBサーバを配置し外部から隔離する
インターネットゲートウェイ(IGW)VPCとインターネットを接続する出入り口
ルートテーブルサブネット内のEC2がパケットを送るときの「経路表」
S3 VPC Gateway EndpointプライベートサブネットからS3(パッケージリポジトリ)にアクセスするための無料エンドポイント
踏み台(Bastion)プライベートサブネットのEC2にアクセスするための中継サーバ。今回はAPサーバが踏み台を兼ねる
SG参照(SG-to-SG)セキュリティグループのルールで、アクセス元として別のSGを指定する設定

スポンサーリンク

前フェーズとの違い

比較項目Phase 1-3(MySQL)Phase 1-4(2層構成・今回)
ネットワークデフォルトVPCカスタムVPC
サブネットデフォルトサブネット(パブリック)パブリック + プライベート
DBのパブリックIPありなし(インターネット隔離)
DBへのSSH直接SSH可能APサーバ経由の踏み台接続
リソース数4〜5個12個以上(VPC関連が多数)

使用するAWSサービス

サービス役割料金
VPCカスタムネットワーク空間無料
EC2 × 2台APサーバ(Apache) + DBサーバ(MariaDB)(各t2.micro)月750時間まで無料枠あり(2台で消費が倍)
セキュリティグループ × 2APサーバSG / DBサーバSGのアクセス制御無料
S3 VPC Gateway EndpointプライベートサブネットからS3へのアクセス無料
IAMEC2へのSession Manager接続権限無料

注意: EC2を2台同時に稼働させるため、無料枠の消費が2倍になります。ハンズオン後は必ず2台とも削除してください。


構築するリソース一覧

カテゴリリソース役割
ネットワークVPC(my-vpc独自のネットワーク空間(10.0.0.0/16)
ネットワークインターネットゲートウェイ(my-igwVPCとインターネットを接続
ネットワークパブリックサブネット(my-public-subnetAPサーバ用(インターネットアクセスあり)
ネットワークプライベートサブネット(my-private-subnetDBサーバ用(インターネットアクセスなし)
ネットワークパブリックルートテーブル(my-public-rtインターネットへの経路(→IGW)
ネットワークプライベートルートテーブル(my-private-rtVPC内のみ(インターネット経路なし)
ネットワークS3 VPC Gateway EndpointプライベートサブネットからS3へのアクセス(無料)
セキュリティAPサーバSG(my-ap-sgSSH(22)・HTTP(80)を自分のIPから許可
セキュリティDBサーバSG(my-db-sgSSH(22)・MySQL(3306)をAPサーバSGのみ許可
認証キーペア(my-ec2-2tier-keySSH接続の認証鍵
認証IAMロール(my-ec2-2tier-roleEC2にSession Manager権限を付与
コンピュートAPサーバEC2(my-ap-instanceApacheを実行するWebサーバ(パブリックサブネット)
コンピュートDBサーバEC2(my-db-instanceMariaDBを実行するDBサーバ(プライベートサブネット)

全体の作業順序

ネットワーク系リソースはEC2より先に作成する必要があります。

⓪ 自分のIPアドレスを確認する
      ↓
① キーペアを作成する
      ↓
② IAMロールを作成する
      ↓
③ VPCを作成する
      ↓
④ インターネットゲートウェイを作成・アタッチする
      ↓
⑤ サブネットを作成する(パブリック・プライベート)
      ↓
⑥ ルートテーブルを設定する(S3 VPC Endpoint作成を含む)
      ↓
⑦ セキュリティグループを作成する(APサーバSG → DBサーバSGの順)
      ↓
⑧ APサーバEC2を起動する(パブリックサブネット)
      ↓
⑨ DBサーバEC2を起動する(プライベートサブネット)
      ↓
⑩ 動作確認
      ↓
⑪ リソースを削除する

【重要】⓪ 自分のIPアドレスを確認する

curl https://checkip.amazonaws.com

またはルーター管理画面(http://192.168.0.1 など)の「WAN IPアドレス」で確認します。

控えておく情報: 自分のIPアドレス(例: 203.0.113.1


① キーペアの作成

APサーバとDBサーバの両方で使用します。1つのキーペアを共用します。

AWSコンソール → EC2 → キーペア → 「キーペアを作成」

設定項目
名前my-ec2-2tier-key
キーペアのタイプRSA
プライベートキーファイル形式.pem
C:\Users\ユーザー名\.ssh\my-ec2-2tier-key.pem

② IAMロールの作成

AWSコンソール → IAM → ロール → 「ロールを作成」

ステップ設定項目
1信頼されたエンティティタイプAWSのサービス
1ユースケースEC2
2許可ポリシーAmazonSSMManagedInstanceCore
3ロール名my-ec2-2tier-role

「ロールを作成」をクリック。


③ VPCの作成

AWSコンソール → VPC → 仮想プライベートクラウド → 「お使いのVPC」→ 「VPCを作成」

VPCとは: AWS上に作るプライベートなネットワーク空間。この中にEC2などを置きます。CIDR(サイダー)でIPアドレスの範囲を指定します。10.0.0.0/1610.0.0.0 〜 10.0.255.255 の65536個のIPアドレスを表します。

設定項目
作成するリソースVPCのみ
名前タグmy-vpc
IPv4 CIDR10.0.0.0/16
IPv6 CIDR ブロックなし
テナンシーデフォルト

「VPCを作成」をクリック。

控えておく情報: 作成された VPC ID(vpc-xxxxxxxxxx


④ インターネットゲートウェイの作成・アタッチ

インターネットゲートウェイ(IGW)とは: VPCとインターネットを接続する出入り口です。これをVPCにアタッチすることで、VPC内のEC2がインターネットと通信できるようになります。

4-1. インターネットゲートウェイを作成する

AWSコンソール → VPC → インターネットゲートウェイ → 「インターネットゲートウェイの作成」

設定項目
名前タグmy-igw

「インターネットゲートウェイの作成」をクリック。

4-2. VPCにアタッチする

作成直後の画面から「アクション」→「VPCにアタッチ」をクリック。

設定項目
使用可能なVPCmy-vpc を選択

「インターネットゲートウェイのアタッチ」をクリック。

ステータスが 「Attached」 になることを確認します。


⑤ サブネットの作成

サブネットとは: VPC内をさらに分割したネットワークです。パブリックサブネットはインターネットと通信でき、プライベートサブネットはVPC内部とのみ通信します。

AWSコンソール → VPC → サブネット → 「サブネットを作成」

VPC ID で my-vpc を選択します。

5-1. パブリックサブネット

設定項目
サブネット名my-public-subnet
アベイラビリティーゾーンap-northeast-1a
IPv4 CIDR10.0.1.0/24

5-2. プライベートサブネット

「新しいサブネットを追加」をクリックして2つ目のサブネットを設定します。

設定項目
サブネット名my-private-subnet
アベイラビリティーゾーンap-northeast-1a
IPv4 CIDR10.0.2.0/24

「サブネットを作成」をクリック。

5-3. パブリックサブネットのパブリックIP自動割り当てを有効化

サブネット一覧 → my-public-subnet を選択 → 「アクション」→「サブネットの設定を編集」

「パブリック IPv4 アドレスの自動割り当てを有効化」にチェックを入れる → 「保存」。

APサーバEC2を起動したときに自動でパブリックIPが割り当てられるようになります。プライベートサブネットはこの設定をしません(DBサーバにパブリックIPを付与しない)。


⑥ ルートテーブルの設定

ルートテーブルとは: サブネット内のEC2がパケットを送るときの「経路表」です。パブリックサブネットはインターネット向けのルート(→IGW)を持ち、プライベートサブネットは持ちません。

6-1. パブリックルートテーブルを作成する

AWSコンソール → VPC → ルートテーブル → 「ルートテーブルを作成」

設定項目
名前my-public-rt
VPCmy-vpc

「ルートテーブルを作成」をクリック。

インターネット向けルートを追加します:

my-public-rt を選択 → 「ルート」タブ → 「ルートを編集」→「ルートを追加」

送信先ターゲット
0.0.0.0/0my-igw(インターネットゲートウェイを選択)

「変更を保存」をクリック。

0.0.0.0/0 とは: 「それ以外のすべての宛先」を意味します。VPC内向けのルートはデフォルトで存在するため、インターネット向けのルートだけ追加すれば OKです。

パブリックサブネットを関連付けます:

my-public-rt の「サブネットの関連付け」タブ → 「サブネットの関連付けを編集」→ my-public-subnet にチェック → 「関連付けを保存」。

6-2. プライベートルートテーブルを作成する

VPC → ルートテーブル → 「ルートテーブルを作成」

設定項目
名前my-private-rt
VPCmy-vpc

「ルートテーブルを作成」をクリック。

インターネット向けルートは追加しません。プライベートサブネットからインターネットへの経路を意図的に持たせないことで、DBサーバをインターネットから完全に隔離します。

プライベートサブネットを関連付けます:

my-private-rt の「サブネットの関連付け」タブ → 「サブネットの関連付けを編集」→ my-private-subnet にチェック → 「関連付けを保存」。

6-3. S3 VPC Gateway Endpointを作成する(重要)

なぜ必要か: プライベートサブネットはインターネットに出られないため、EC2起動時の dnf install でパッケージをダウンロードできません。Amazon Linux 2023のパッケージリポジトリはS3上にあるため、S3だけインターネットを経由せずアクセスできるGateway Endpointを作成することで解決します。Gateway Endpointは無料です。

AWSコンソール → VPC → エンドポイント → 「エンドポイントを作成」

設定項目
名前タグmy-s3-endpoint
サービスカテゴリAWSのサービス
サービス検索欄に s3 と入力 → com.amazonaws.ap-northeast-1.s3タイプ: Gateway を選択
VPCmy-vpc
ルートテーブルmy-private-rt にチェックを入れる

「エンドポイントを作成」をクリック。

確認: my-private-rt の「ルート」タブを開くと、S3向けのルートが自動追加されていることを確認します。


⑦ セキュリティグループの作成

注意: APサーバSGを先に作成します。DBサーバSGがAPサーバSGをSG参照するためです。

7-1. APサーバSGの作成

EC2 → セキュリティグループ → 「セキュリティグループを作成」

設定項目
セキュリティグループ名my-ap-sg
説明AP server SG (public subnet)
VPCmy-vpc(デフォルトVPCではなく今回作成したVPCを選択)

インバウンドルール:

タイプポートソース説明
SSH22203.0.113.1/32(自分のIP)SSH from my IP
HTTP80203.0.113.1/32(自分のIP)HTTP from my IP

アウトバウンドルール: 「すべてのトラフィック / 0.0.0.0/0」があることを確認します。

「セキュリティグループを作成」をクリック。

7-2. DBサーバSGの作成

EC2 → セキュリティグループ → 「セキュリティグループを作成」

設定項目
セキュリティグループ名my-db-sg
説明DB server SG (private subnet)
VPCmy-vpc

インバウンドルール(「ルールを追加」で2つ追加します):

ルール1: SSH(APサーバ経由の踏み台接続)

設定項目
タイプSSH
ソースタイプカスタム
ソースmy-ap-sg を検索して選択
説明SSH from AP server only (bastion)

ルール2: MySQL(APサーバからのDB接続)

設定項目
タイプMySQL/Aurora
ソースタイプカスタム
ソースmy-ap-sg を検索して選択
説明MySQL from AP server only

アウトバウンドルール: 「すべてのトラフィック / 0.0.0.0/0」があることを確認します。

「セキュリティグループを作成」をクリック。


⑧ APサーバEC2の起動(パブリックサブネット)

EC2 → インスタンス → 「インスタンスを起動」

8-1. 基本設定

設定項目
名前my-ap-instance
AMIAmazon Linux 2023 AMI(デフォルトで選択済み)
インスタンスタイプt2.micro(無料枠対象)
キーペアmy-ec2-2tier-key

8-2. ネットワーク設定

「ネットワーク設定」→「編集」をクリックして以下を設定します。

設定項目
VPCmy-vpc
サブネットmy-public-subnet
パブリック IP の自動割り当て有効
セキュリティグループ既存のセキュリティグループを選択my-ap-sg

8-3. IAMロール・UserDataの設定

「高度な詳細」を開きます。

設定項目
IAM インスタンスプロファイルmy-ec2-2tier-role

「ユーザーデータ」に以下を貼り付けます。

#!/bin/bash
dnf update -y
dnf install -y httpd
systemctl start httpd
systemctl enable httpd
cat > /var/www/html/index.html << 'HTMLEOF'
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>AP Server - Phase 1-4</title></head>
<body>
<h1>AP Server (Public Subnet)</h1>
<p>This AP server is in the PUBLIC subnet and can reach the DB server in the PRIVATE subnet.</p>
</body>
</html>
HTMLEOF

「インスタンスを起動」をクリック。

控えておく情報: APサーバのパブリックIPアドレス


⑨ DBサーバEC2の起動(プライベートサブネット)

EC2 → インスタンス → 「インスタンスを起動」

9-1. 基本設定

設定項目
名前my-db-instance
AMIAmazon Linux 2023 AMI
インスタンスタイプt2.micro
キーペアmy-ec2-2tier-key

9-2. ネットワーク設定

設定項目
VPCmy-vpc
サブネットmy-private-subnet
パブリック IP の自動割り当て無効(プライベートサブネットのため)
セキュリティグループ既存のセキュリティグループを選択my-db-sg

パブリックIPを付与しない: DBサーバはインターネットから直接アクセスされる必要がありません。プライベートサブネットに置き、パブリックIPを持たせないことで、インターネットから完全に隔離します。

9-3. IAMロール・UserDataの設定

設定項目
IAM インスタンスプロファイルmy-ec2-2tier-role

「ユーザーデータ」に以下を貼り付けます。

#!/bin/bash
dnf update -y
dnf install -y mariadb105-server mariadb105
systemctl start mariadb
systemctl enable mariadb
sudo mysql -u root << 'SQLEOF'
SET PASSWORD FOR root@localhost = PASSWORD('Admin1234!');
CREATE USER IF NOT EXISTS 'handson'@'%' IDENTIFIED BY 'Handson1234!';
GRANT ALL PRIVILEGES ON *.* TO 'handson'@'%' WITH GRANT OPTION;
CREATE DATABASE IF NOT EXISTS sampledb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
FLUSH PRIVILEGES;
SQLEOF

⑥-3でS3 VPC Endpointを作成済みの場合: dnf install はS3経由で正常に動作します。Endpointを作成せずにEC2を起動した場合はMariaDBがインストールされないため、踏み台SSH接続後に手動で sudo dnf install -y mariadb105-server mariadb105 を実行してください。

「インスタンスを起動」をクリック。

控えておく情報: DBサーバのプライベートIPアドレス(パブリックIPはありません)

インスタンス詳細 → 「プライベート IPv4 アドレス」(例: 10.0.2.xxx)を確認してメモします。


⑩ 動作確認

待機時間: EC2起動後、UserDataの完了まで数分かかります。APサーバは2〜3分、DBサーバは5〜8分待ちます。

10-1. APサーバのWeb確認

ブラウザで以下にアクセスします。

http://(APサーバのパブリックIP)

AP Server (Public Subnet) が表示されれば成功です。

10-2. APサーバへのSSH接続

ssh -i C:\Users\ユーザー名\.ssh\my-ec2-2tier-key.pem ec2-user@(APパブリックIP)

10-3. キーペアをAPサーバにコピーする(踏み台SSH準備)

APサーバを踏み台としてDBサーバにSSH接続するために、ローカルPCからAPサーバにキーペアをコピーします。

ローカルPCの別ターミナルで実行します:

scp -i C:\Users\ユーザー名\.ssh\my-ec2-2tier-key.pem ^
  C:\Users\ユーザー名\.ssh\my-ec2-2tier-key.pem ^
  ec2-user@(APパブリックIP):~/.ssh/

APサーバ上でキーペアのパーミッションを設定します。

chmod 400 ~/.ssh/my-ec2-2tier-key.pem

10-4. APサーバ経由でDBサーバにSSH接続(踏み台接続)

APサーバのSSHセッションから実行します:

ssh -i ~/.ssh/my-ec2-2tier-key.pem ec2-user@(DBプライベートIP)

[ec2-user@ip-10-0-2-xxx ~]$ のプロンプトが表示されれば踏み台接続成功です。

sudo systemctl status mariadb

# MariaDBに接続
mysql -u root -pAdmin1234!

MariaDBのプロンプトで確認します。

SHOW DATABASES;
EXIT;

DBサーバから切断します。

exit

10-5. APサーバからMySQLに接続(AP→DB通信確認)

APサーバのSSHセッションで実行します。

# mysqlクライアントのインストール
sudo dnf install -y mariadb105

# DBサーバのプライベートIPにMySQL接続
mysql -h (DBプライベートIP) -u handson -pHandson1234! sampledb

接続成功すれば MariaDB [sampledb]> が表示されます。

CREATE TABLE IF NOT EXISTS messages (id INT AUTO_INCREMENT PRIMARY KEY, text VARCHAR(100));
INSERT INTO messages (text) VALUES ('Hello from AP server!');
SELECT * FROM messages;
EXIT;

APサーバから切断します。

exit


⑪ リソースの削除

課金を止めるために、ハンズオン完了後は必ず削除してください。削除する順番が重要です。

CloudFormation版と比較: コンソール版はリソースの依存関係を意識して手動で削除する必要があります。CloudFormation版は delete-stack 1本で全て自動削除できます。

削除順序

1. EC2インスタンスを終了する(2台)

EC2 → インスタンス → my-ap-instancemy-db-instance を選択 → 「インスタンスを終了」

「終了済み」になるまで待ちます(2〜5分)。

2. セキュリティグループを削除する(DBサーバSG → APサーバSGの順)

DBサーバSGがAPサーバSGを参照しているため、DBサーバSGを先に削除します。

my-db-sg を選択 → 「アクション」→「セキュリティグループを削除」

my-ap-sg を選択 → 「アクション」→「セキュリティグループを削除」

3. S3 VPC Endpointを削除する

VPC → エンドポイント → my-s3-endpoint を選択 → 「アクション」→「エンドポイントを削除」

4. ルートテーブルの関連付けを解除・削除する

my-public-rt を選択 → 「サブネットの関連付け」タブ → 「サブネットの関連付けを編集」→ チェックを外す → 「保存」

my-private-rt も同様に関連付けを解除する

my-public-rt を選択 → 「ルート」タブ → 「ルートを編集」→ 0.0.0.0/0 のルートを削除 → 「保存」

my-public-rt を選択 → 「アクション」→「ルートテーブルの削除」

my-private-rt も同様に削除する

5. サブネットを削除する(2つ)

VPC → サブネット → my-public-subnet → 「アクション」→「サブネットを削除」

同様に my-private-subnet も削除します。

6. インターネットゲートウェイをデタッチ・削除する

VPC → インターネットゲートウェイ → my-igw → 「アクション」→「VPCからデタッチ」

デタッチ完了後、「アクション」→「インターネットゲートウェイの削除」。

7. VPCを削除する

VPC → お使いのVPC → my-vpc → 「アクション」→「VPCを削除」

8. IAMロールを削除する

IAM → ロール → my-ec2-2tier-role → 「削除」

9. キーペアを削除する(任意)

EC2 → キーペア → my-ec2-2tier-key → 「削除」

C:\Users\ユーザー名\.ssh\my-ec2-2tier-key.pem

CloudFormation版との比較

作業コンソール(手動)CloudFormation
VPC・IGW・サブネット・RTの設定6画面・20ステップ以上template.yaml に定義済み
S3 VPC Endpoint作成画面でポチポチtemplate.yaml に定義済み
EC2×2台の起動2回インスタンス起動操作コマンド1本(並列作成)
削除(依存関係あり)8ステップ・手動管理delete-stack 1本
全体の所要時間30〜40分8〜12分
再現性低い(手順漏れのリスク大)高い

コンソール版で実感できたポイント:

  • VPC・IGW・サブネット・ルートテーブルの依存関係が視覚的に理解できる
  • プライベートサブネットにEC2を置くとパブリックIPが付かないことを実感できる
  • 踏み台接続(APサーバ経由でDBサーバにSSH)の意味と手順が身につく
  • S3 VPC Endpointがなければ dnf install が失敗することを体験できる

CloudFormation版でも試してみる: CloudFormationでAP+DB 2層構成(VPC設計)を自動デプロイする手順


トラブルシューティング

症状原因対処
APサーバのWebページが表示されないUserDataが完了していない2〜3分待ってリロード
DBサーバの dnf install が失敗するS3 VPC Endpointが未作成⑥-3の手順でEndpointを作成後、踏み台SSH接続して手動で sudo dnf install -y mariadb105-server mariadb105 を実行
APサーバからDBサーバにSSH接続できないmy-db-sg のSSHソースが my-ap-sg になっていないDBサーバSGのインバウンドルールを確認
APサーバからMySQLに接続できないmy-db-sg のMySQL(3306)ソースが my-ap-sg になっていないDBサーバSGのインバウンドルールを確認
セキュリティグループが削除できないEC2インスタンスがまだ「使用中」またはDBサーバSGを先に削除していないEC2「終了済み」後に、DBサーバSG → APサーバSGの順で削除
VPCが削除できないサブネット・IGW・RTが残っている削除順序を守る(サブネット・RT・IGWを先に削除)
SGを作成するとき my-vpc のSGが選択できないEC2起動時にVPCをデフォルトVPCにしているネットワーク設定でVPCを my-vpc に変更してから再選択

まとめ

今回のハンズオンで体験できたこと:

確認項目内容
VPC設計カスタムVPC・パブリック/プライベートサブネット・IGW・ルートテーブルを一から構築
ネットワーク分離DBサーバをプライベートサブネットに配置してインターネットから隔離
S3 VPC Endpointプライベートサブネットからインターネットなしでパッケージをインストール
踏み台接続APサーバを中継してプライベートサブネットのDBサーバにSSH接続
SG参照DBサーバSGのルールをIPアドレスではなくAPサーバSGで指定
削除手順依存関係を意識して8ステップで全リソースを削除

20ステップ以上の手動作業でリソースを一つひとつ作ると、CloudFormationが裏で何を自動化しているかが理解できます。ぜひ次は CloudFormation版 でコマンド1本の差を体感してみてください。


関連記事

-->

コメント