はじめに
「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台で消費が倍) |
| セキュリティグループ × 2 | APサーバSG / DBサーバSGのアクセス制御 | 無料 |
| S3 VPC Gateway Endpoint | プライベートサブネットからS3へのアクセス | 無料 |
| IAM | EC2へのSession Manager接続権限 | 無料 |
注意: EC2を2台同時に稼働させるため、無料枠の消費が2倍になります。ハンズオン後は必ず2台とも削除してください。
構築するリソース一覧
| カテゴリ | リソース | 役割 |
|---|---|---|
| ネットワーク | VPC(my-vpc) | 独自のネットワーク空間(10.0.0.0/16) |
| ネットワーク | インターネットゲートウェイ(my-igw) | VPCとインターネットを接続 |
| ネットワーク | パブリックサブネット(my-public-subnet) | APサーバ用(インターネットアクセスあり) |
| ネットワーク | プライベートサブネット(my-private-subnet) | DBサーバ用(インターネットアクセスなし) |
| ネットワーク | パブリックルートテーブル(my-public-rt) | インターネットへの経路(→IGW) |
| ネットワーク | プライベートルートテーブル(my-private-rt) | VPC内のみ(インターネット経路なし) |
| ネットワーク | S3 VPC Gateway Endpoint | プライベートサブネットからS3へのアクセス(無料) |
| セキュリティ | APサーバSG(my-ap-sg) | SSH(22)・HTTP(80)を自分のIPから許可 |
| セキュリティ | DBサーバSG(my-db-sg) | SSH(22)・MySQL(3306)をAPサーバSGのみ許可 |
| 認証 | キーペア(my-ec2-2tier-key) | SSH接続の認証鍵 |
| 認証 | IAMロール(my-ec2-2tier-role) | EC2にSession Manager権限を付与 |
| コンピュート | APサーバEC2(my-ap-instance) | Apacheを実行するWebサーバ(パブリックサブネット) |
| コンピュート | DBサーバEC2(my-db-instance) | MariaDBを実行する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/16は10.0.0.0 〜 10.0.255.255の65536個のIPアドレスを表します。
| 設定項目 | 値 |
|---|---|
| 作成するリソース | VPCのみ |
| 名前タグ | my-vpc |
| IPv4 CIDR | 10.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にアタッチ」をクリック。
| 設定項目 | 値 |
|---|---|
| 使用可能なVPC | my-vpc を選択 |
「インターネットゲートウェイのアタッチ」をクリック。
ステータスが 「Attached」 になることを確認します。
⑤ サブネットの作成
サブネットとは: VPC内をさらに分割したネットワークです。パブリックサブネットはインターネットと通信でき、プライベートサブネットはVPC内部とのみ通信します。
AWSコンソール → VPC → サブネット → 「サブネットを作成」
VPC ID で my-vpc を選択します。
5-1. パブリックサブネット
| 設定項目 | 値 |
|---|---|
| サブネット名 | my-public-subnet |
| アベイラビリティーゾーン | ap-northeast-1a |
| IPv4 CIDR | 10.0.1.0/24 |
5-2. プライベートサブネット
「新しいサブネットを追加」をクリックして2つ目のサブネットを設定します。
| 設定項目 | 値 |
|---|---|
| サブネット名 | my-private-subnet |
| アベイラビリティーゾーン | ap-northeast-1a |
| IPv4 CIDR | 10.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 |
| VPC | my-vpc |
「ルートテーブルを作成」をクリック。
インターネット向けルートを追加します:
my-public-rt を選択 → 「ルート」タブ → 「ルートを編集」→「ルートを追加」
| 送信先 | ターゲット |
|---|---|
0.0.0.0/0 | my-igw(インターネットゲートウェイを選択) |
「変更を保存」をクリック。
0.0.0.0/0とは: 「それ以外のすべての宛先」を意味します。VPC内向けのルートはデフォルトで存在するため、インターネット向けのルートだけ追加すれば OKです。
パブリックサブネットを関連付けます:
my-public-rt の「サブネットの関連付け」タブ → 「サブネットの関連付けを編集」→ my-public-subnet にチェック → 「関連付けを保存」。
6-2. プライベートルートテーブルを作成する
VPC → ルートテーブル → 「ルートテーブルを作成」
| 設定項目 | 値 |
|---|---|
| 名前 | my-private-rt |
| VPC | my-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 を選択 |
| VPC | my-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) |
| VPC | my-vpc(デフォルトVPCではなく今回作成したVPCを選択) |
インバウンドルール:
| タイプ | ポート | ソース | 説明 |
|---|---|---|---|
| SSH | 22 | 203.0.113.1/32(自分のIP) | SSH from my IP |
| HTTP | 80 | 203.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) |
| VPC | my-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 |
| AMI | Amazon Linux 2023 AMI(デフォルトで選択済み) |
| インスタンスタイプ | t2.micro(無料枠対象) |
| キーペア | my-ec2-2tier-key |
8-2. ネットワーク設定
「ネットワーク設定」→「編集」をクリックして以下を設定します。
| 設定項目 | 値 |
|---|---|
| VPC | my-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 |
| AMI | Amazon Linux 2023 AMI |
| インスタンスタイプ | t2.micro |
| キーペア | my-ec2-2tier-key |
9-2. ネットワーク設定
| 設定項目 | 値 |
|---|---|
| VPC | my-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.pem10-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サーバから切断します。
exit10-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-stack1本で全て自動削除できます。
削除順序
1. EC2インスタンスを終了する(2台)
EC2 → インスタンス → my-ap-instance と my-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.pemCloudFormation版との比較
| 作業 | コンソール(手動) | 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本の差を体感してみてください。
関連記事
-->
コメント