はじめに
「EC2にMariaDBをインストールしてDBサーバを自分で管理するのは大変……」——その悩みを解決するのが Amazon RDS(マネージド型データベースサービス) です。
この記事では、AWSコンソール(GUI)のみを使って、RDS MySQL 8.0インスタンスとEC2(APサーバ)をゼロから構築し、EC2からRDSへMySQL接続を確認するハンズオンを紹介します。
インターネット
↓ HTTP(80) / SSH(22) ← 自分のIPのみ
インターネットゲートウェイ(my-rds-igw)
↓
[VPC: 10.0.0.0/16]
├── パブリックサブネット(10.0.1.0/24)[AZ-a]
│ └── EC2 APサーバ(Apache + mariadb client)
│ └── IAMロール → SSM Parameter Store からパスワード取得
│ ↓ MySQL:3306(SG-to-SG制御)
├── DBサブネットグループ
│ ├── プライベートサブネット1(10.0.2.0/24)[AZ-a] ← RDS配置
│ │ └── RDS MySQL 8.0(db.t3.micro)
│ └── プライベートサブネット2(10.0.3.0/24)[AZ-c] ← 2AZ要件用
└── SSM Parameter Store: /my/rds/db-passwordこのハンズオンで体験できること:
- EC2にDBをインストールする方式との違いを体感
- RDS DBサブネットグループが「2AZ以上必須」な理由を理解
- SSM Parameter Storeでパスワードをコードに書かずに安全に管理する方法
- SG-to-SG制御でRDSをEC2からのみ許可する設計
このハンズオンのポイント:
前フェーズ(EC2 + MariaDB)では自分でDBを管理していましたが、今回はAWSがOSのメンテナンス・パッチ・バックアップを自動管理するRDSに置き換えます。ネットワーク設計はカスタムVPC(3サブネット)で実際の本番環境に近い構成になります。
この記事は CloudFormation版ハンズオン の比較記事です。
コンソール操作でRDS・DBサブネットグループ・Parameter Storeを視覚的に学びたい方向けです。
-->
キーワード解説
| 用語 | 意味 |
|---|---|
| Amazon RDS | AWSが提供するマネージド型のリレーショナルDBサービス。EC2へのインストールと違い、OSのメンテナンス・パッチ・バックアップをAWSが自動管理する |
| DBサブネットグループ | RDSを配置できるサブネットを登録した論理グループ。2つ以上の異なるAZのサブネットが必須 |
| SSM Parameter Store | 設定値・シークレットをコードに書かずに保管・取得できるサービス。SecureString型でKMS暗号化して保管できる |
| SG-to-SG制御 | セキュリティグループのルールで、アクセス元のIPアドレスではなく別のSGを指定する設定。EC2 SGに所属するインスタンスのみRDSへの接続を許可できる |
| エンドポイント | RDSに接続するためのホスト名。EC2からはこのホスト名を使ってMySQLとして接続する |
| SecureString | Parameter StoreでKMS暗号化して保管するタイプ。パスワードやAPIキーなどの機密情報に使用する |
前フェーズとの違い
| 比較項目 | (EC2 + MariaDB) | (RDS MySQL)今回 |
|---|---|---|
| DBエンジン | MariaDB(EC2上で動作) | MySQL 8.0(RDSマネージドサービス) |
| DB管理 | OS込みで自分で管理 | AWSがパッチ・バックアップを自動管理 |
| サブネット構成 | デフォルトVPC(単一AZ) | カスタムVPC(3サブネット・2AZ) |
| パスワード管理 | ハードコード | SSM Parameter Store |
| 削除 | EC2終了のみ | RDS削除に10〜15分必要 |
使用するAWSサービス
| サービス | 役割 | 料金 |
|---|---|---|
| VPC | カスタムネットワーク空間 | 無料 |
| EC2(t2.micro) | APサーバ(Apache + mariadb client) | 月750時間まで無料枠あり |
| RDS MySQL(db.t3.micro) | マネージドDBサーバ | 月750時間まで無料枠あり |
| SSM Parameter Store | DBパスワードの安全な保管 | スタンダード層は無料 |
| IAM | EC2にSSM・Parameter Store権限を付与 | 無料 |
| S3 VPC Gateway Endpoint | プライベートサブネットからS3へのアクセス | 無料 |
注意: RDSを稼働させたままにすると課金されます。ハンズオン後は必ず削除してください。
構築するリソース一覧
| 順序 | リソース | 役割 |
|---|---|---|
| ⓪ | (確認)自分のIPアドレス | SGの設定に使用 |
| ① | キーペア(my-rds-mysql-key) | EC2へのSSH認証鍵 |
| ② | VPC(my-rds-vpc) | 独立したネットワーク空間 |
| ③ | サブネット × 3 | パブリック1 + プライベート2 |
| ④ | インターネットゲートウェイ(my-rds-igw) | VPCをインターネットに接続 |
| ⑤ | ルートテーブル × 2 | パブリック/プライベートの通信経路 |
| ⑥ | セキュリティグループ × 2 | EC2用SG・RDS用SG |
| ⑦ | IAMロール(my-rds-ec2-role) | EC2がSSM・Parameter Storeを使う権限 |
| ⑧ | SSM Parameter Store | DBパスワードの保管 |
| ⑨ | RDS DBサブネットグループ | RDSを配置できるサブネットを登録 |
| ⑩ | RDS MySQL インスタンス | マネージドDBサーバ(作成に10〜15分) |
| ⑪ | EC2インスタンス(my-rds-ap-instance) | APサーバ |
| ⑫ | 動作確認 | EC2→RDSへのMySQL接続テスト |
| ⑬ | リソース削除 | 課金停止 |
全体の作業順序
⓪ IPアドレス確認
↓
① キーペア作成
↓
② VPC作成
↓
③ サブネット作成(パブリック1 + プライベート2)
↓
④ インターネットゲートウェイ作成・アタッチ
↓
⑤ ルートテーブル設定
↓
⑥ セキュリティグループ作成(EC2用 → RDS用)
↓
⑦ IAMロール作成
↓
⑧ SSM Parameter Store にパスワードを登録
↓
⑨ RDS DBサブネットグループ作成
↓
⑩ RDS MySQL インスタンス作成(※約10〜15分かかる)
↓
⑪ EC2インスタンス起動
↓
⑫ 動作確認(EC2 → RDS接続)
↓
⑬ リソース削除【重要】⓪ 自分のIPアドレスを確認する
curl https://checkip.amazonaws.comまたはブラウザで https://checkip.amazonaws.com にアクセスして確認します。
控えておく情報: 自分のIPアドレス(例: 203.0.113.1)
セキュリティグループで
203.0.113.1/32の形式(末尾に/32)で使用します。
① キーペアの作成
AWSコンソール → EC2 → ネットワーク&セキュリティ → キーペア → 「キーペアを作成」
| 設定項目 | 値 |
|---|---|
| 名前 | my-rds-mysql-key |
| キーペアのタイプ | RSA |
| プライベートキーファイル形式 | .pem |
「キーペアを作成」をクリックすると my-rds-mysql-key.pem がダウンロードされます。
C:\Users\ユーザー名\.ssh\my-rds-mysql-key.pem② VPCの作成
AWSコンソール → VPC → お使いのVPC → 「VPCを作成」
| 設定項目 | 値 |
|---|---|
| 作成するリソース | VPCのみ |
| 名前タグ | my-rds-vpc |
| IPv4 CIDR | 10.0.0.0/16 |
「VPCを作成」をクリック。
VPCとは: AWS内に作る仮想的なプライベートネットワーク。
10.0.0.0/16は「10.0.0.0〜10.0.255.255」の65,536個のIPアドレスを使える範囲です。
③ サブネットの作成(3つ)
AWSコンソール → VPC → サブネット → 「サブネットを作成」
「VPC ID」に my-rds-vpc を選択してから、以下の3つを作成します。
「新しいサブネットを追加」ボタンで複数まとめて作成できます。
サブネット1: パブリックサブネット(EC2用)
| 設定項目 | 値 |
|---|---|
| サブネット名 | my-public-subnet |
| アベイラビリティーゾーン | ap-northeast-1a |
| IPv4 CIDR | 10.0.1.0/24 |
サブネット2: プライベートサブネット1(RDS配置先)
| 設定項目 | 値 |
|---|---|
| サブネット名 | my-private-subnet-1 |
| アベイラビリティーゾーン | ap-northeast-1a |
| IPv4 CIDR | 10.0.2.0/24 |
サブネット3: プライベートサブネット2(DBサブネットグループ用)
| 設定項目 | 値 |
|---|---|
| サブネット名 | my-private-subnet-2 |
| アベイラビリティーゾーン | ap-northeast-1c |
| IPv4 CIDR | 10.0.3.0/24 |
なぜプライベートサブネットが2つ必要か: RDS DBサブネットグループは「2つ以上の異なるAZ」にあるサブネットを登録する必要があります。RDSインスタンス自体はAZ-aの
private-subnet-1に置きますが、グループ定義にはAZ-cのprivate-subnet-2も必要です。これはRDSのMulti-AZフェイルオーバーに備えた仕様です。
「サブネットを作成」をクリック。
④ インターネットゲートウェイの作成・アタッチ
作成
AWSコンソール → VPC → インターネットゲートウェイ → 「インターネットゲートウェイを作成」
| 設定項目 | 値 |
|---|---|
| 名前タグ | my-rds-igw |
「インターネットゲートウェイを作成」をクリック。
VPCへのアタッチ
作成したIGWを選択 → 「アクション」→「VPCにアタッチ」→ my-rds-vpc を選択 → 「インターネットゲートウェイのアタッチ」
ステータスが 「Attached」 になることを確認します。
⑤ ルートテーブルの設定
5-1. パブリック用ルートテーブルの作成
AWSコンソール → VPC → ルートテーブル → 「ルートテーブルを作成」
| 設定項目 | 値 |
|---|---|
| 名前 | my-public-rt |
| VPC | my-rds-vpc |
作成後、my-public-rt を選択 → 「ルート」タブ → 「ルートを編集」→「ルートを追加」
| 送信先 | ターゲット |
|---|---|
0.0.0.0/0 | インターネットゲートウェイ my-rds-igw |
「変更を保存」をクリック。
次に「サブネットの関連付け」タブ → 「サブネットの関連付けを編集」→ my-public-subnet にチェック → 「関連付けを保存」
5-2. プライベート用ルートテーブルの作成
同様に「ルートテーブルを作成」
| 設定項目 | 値 |
|---|---|
| 名前 | my-private-rt |
| VPC | my-rds-vpc |
「サブネットの関連付けを編集」→ my-private-subnet-1 と my-private-subnet-2 の両方にチェック → 「関連付けを保存」
プライベートルートテーブルにはインターネットへのルートを追加しません。RDSはインターネットに出る必要がないため、VPC内のローカル通信のみで十分です。
⑥ セキュリティグループの作成
6-1. EC2用セキュリティグループ
AWSコンソール → EC2 → セキュリティグループ → 「セキュリティグループを作成」
| 設定項目 | 値 |
|---|---|
| セキュリティグループ名 | my-rds-ec2-sg |
| 説明 | EC2 AP server SG for RDS hands-on |
| VPC | my-rds-vpc |
インバウンドルール:
| タイプ | プロトコル | ポート | ソース |
|---|---|---|---|
| SSH | TCP | 22 | 自分のIP/32 |
| HTTP | TCP | 80 | 自分のIP/32 |
アウトバウンドルール:
| タイプ | 送信先 |
|---|---|
| すべてのトラフィック | 0.0.0.0/0 |
「セキュリティグループを作成」をクリック。
6-2. RDS用セキュリティグループ
同様に「セキュリティグループを作成」
| 設定項目 | 値 |
|---|---|
| セキュリティグループ名 | my-rds-sg |
| 説明 | RDS MySQL SG - EC2 only |
| VPC | my-rds-vpc |
インバウンドルール:
| タイプ | プロトコル | ポート | ソース |
|---|---|---|---|
| MYSQL/Aurora | TCP | 3306 | my-rds-ec2-sg のSG-ID(SGを選択) |
ポイント(SG-to-SG制御): ソースにIPアドレスではなくセキュリティグループを指定します。
my-rds-ec2-sgに所属するEC2インスタンスからの通信のみ許可でき、インターネットからのアクセスを完全に遮断できます。
「セキュリティグループを作成」をクリック。
⑦ IAMロールの作成
AWSコンソール → IAM → ロール → 「ロールを作成」
ステップ1
| 設定項目 | 値 |
|---|---|
| 信頼されたエンティティタイプ | AWSのサービス |
| ユースケース | EC2 |
ステップ2: ポリシーのアタッチ
以下の2つを検索してチェックを入れます。
| ポリシー名 | 用途 |
|---|---|
AmazonSSMManagedInstanceCore | Session Manager接続用 |
AmazonSSMReadOnlyAccess | Parameter Storeからパスワードを読み取る |
ステップ3
| 設定項目 | 値 |
|---|---|
| ロール名 | my-rds-ec2-role |
タグを追加: Cost = 123456
「ロールを作成」をクリック。
⑧ SSM Parameter Store にDBパスワードを登録する
Parameter Storeは、DBパスワードなどの設定値をコードに書かずに安全に管理するサービスです。EC2上のアプリケーションは実行時にParameter Storeから値を取得して使用します。
AWSコンソール → Systems Manager → パラメータストア → 「パラメータの作成」
| 設定項目 | 値 |
|---|---|
| 名前 | /my/rds/db-password |
| 説明 | RDS MySQL master password for my hands-on |
| 層 | スタンダード |
| タイプ | SecureString |
| KMS キーID | alias/aws/ssm(デフォルト) |
| 値 | Handson1234! |
「パラメータの作成」をクリック。
SecureStringとは: KMSで暗号化して保管するタイプです。通常の String と違い、値を取得する際に適切なIAM権限が必要です。パスワードやAPIキーなどの機密情報はSecureStringを使いましょう。
⑨ RDS DBサブネットグループの作成
AWSコンソール → Aurora and RDS → サブネットグループ → 「DBサブネットグループを作成」
| 設定項目 | 値 |
|---|---|
| 名前 | my-rds-subnet-group |
| 説明 | my RDS subnet group (private subnets in 2 AZs) |
| VPC | my-rds-vpc |
サブネットの追加:
| アベイラビリティーゾーン | サブネット |
|---|---|
ap-northeast-1a | my-private-subnet-1 |
ap-northeast-1c | my-private-subnet-2 |
「作成」をクリック。
DBサブネットグループとは: RDSインスタンスを配置できるサブネットを登録した論理グループです。RDSはこのグループ内のサブネットにインスタンスを配置します。最低2つの異なるAZのサブネットが必要な理由は、RDSがMulti-AZフェイルオーバーに対応するための仕様です。
⑩ RDS MySQL インスタンスの作成
AWSコンソール → Aurora and RDS → データベース → 「データベースの作成 ▲」→「フル設定」
UIの変更について(2025年以降): サービス名が 「RDS」→「Aurora and RDS」 に変更されました。「データベースの作成」ボタンはドロップダウン式になっており、以下の3つが表示されます。
選択肢 用途 エクスプレス設定 簡易設定(詳細設定不可) フル設定 ← これを選ぶ(VPC・SGなどを細かく指定できる) S3から復元 バックアップからの復元 VPC・サブネットグループ・SGなどを細かく指定するため、必ず「フル設定」を選択します。
注意: RDSの作成は約10〜15分かかります。
エンジンの選択
| 設定項目 | 値 |
|---|---|
| エンジンのタイプ | MySQL |
| エンジンバージョン | MySQL 8.0.x(最新) |
テンプレート
| 設定項目 | 値 |
|---|---|
| テンプレート | 無料利用枠 |
「無料利用枠」を選択すると、スペックが自動的に無料枠対象の設定に制限されます。
設定
| 設定項目 | 値 |
|---|---|
| DBインスタンス識別子 | my-rds-mysql |
| マスターユーザー名 | admin |
| マスターパスワード | Handson1234! |
| パスワードの確認 | Handson1234! |
インスタンスの設定
| 設定項目 | 値 |
|---|---|
| DBインスタンスクラス | db.t3.micro(無料枠) |
ストレージ
| 設定項目 | 値 |
|---|---|
| ストレージタイプ | 汎用SSD (gp2) |
| 割り当てられたストレージ | 20 GiB |
| ストレージの自動スケーリング | チェックを外す |
接続
| 設定項目 | 値 |
|---|---|
| コンピューティングリソース | EC2コンピューティングリソースに接続しない |
| VPC | my-rds-vpc |
| DBサブネットグループ | my-rds-subnet-group |
| パブリックアクセス | なし |
| VPCセキュリティグループ | 既存の選択 → my-rds-sg を選択(default は削除) |
| アベイラビリティーゾーン | ap-northeast-1a |
追加設定
「追加設定」を開きます。
| 設定項目 | 値 |
|---|---|
| 最初のデータベース名 | sampledb |
| 自動バックアップを有効にする | チェックを外す |
自動バックアップを無効にすることで、ハンズオン後の削除がよりスムーズになります。
「データベースの作成」をクリック。
控えておく情報: 作成完了後に表示される「エンドポイント」のホスト名
my-rds-mysql.xxxxxxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.comエンドポイントとは: RDSに接続するためのホスト名です。IPアドレスが変わっても同じホスト名で接続できます。
⑪ EC2インスタンスの起動
注意: EC2を起動する前に⑤のルートテーブル設定(IGWルートの追加とサブネット関連付け)が完了していることを確認してください。UserDataはEC2起動時に一度だけ実行されるため、IGWルートがない状態で起動すると
dnf installがインターネットに到達できずApacheのインストールが失敗します。
AWSコンソール → EC2 → インスタンス → 「インスタンスを起動」
基本設定
| 設定項目 | 値 |
|---|---|
| 名前 | my-rds-ap-instance |
| AMI | Amazon Linux 2023 AMI |
| インスタンスタイプ | t2.micro |
| キーペア | my-rds-mysql-key |
ネットワーク設定
「編集」をクリックして以下を設定します。
| 設定項目 | 値 |
|---|---|
| VPC | my-rds-vpc |
| サブネット | my-public-subnet |
| パブリックIPの自動割り当て | 有効化 |
| ファイアウォール(セキュリティグループ) | 既存のセキュリティグループを選択 |
| セキュリティグループ | my-rds-ec2-sg |
IAMロール
「高度な詳細」→「IAMインスタンスプロファイル」→ my-rds-ec2-role を選択
UserData
「高度な詳細」→「ユーザーデータ」に以下を貼り付けます。
#!/bin/bash
dnf update -y
dnf install -y httpd mariadb105
systemctl start httpd
systemctl enable httpd
echo "<h1>AP Server - RDS MySQL Hands-on</h1>" > /var/www/html/index.html
echo "<p>This server connects to RDS MySQL in the private subnet.</p>" >> /var/www/html/index.htmlタグ
| キー | 値 |
|---|---|
Cost | 123456 |
「インスタンスを起動」をクリック。起動完了まで約2〜3分待ちます。
控えておく情報: インスタンスのパブリックIPアドレス
⑫ 動作確認
12-1. WebブラウザでEC2のWebサーバ確認
ブラウザで以下のURLにアクセスします。
http://(EC2のパブリックIPアドレス)「AP Server - RDS MySQL Hands-on」と表示されればEC2は正常に動作しています。
接続できない場合のチェックポイント:
- EC2起動後2〜3分以上待ってから再試行(UserDataの実行に時間がかかります)
https://checkip.amazonaws.comで現在のIPを確認し、EC2のSGのHTTP許可IPと一致しているか確認- SSHでEC2に入り
sudo systemctl status httpdでApacheの状態を確認
12-2. EC2にSSH接続する
ssh -i C:\Users\ユーザー名\.ssh\my-rds-mysql-key.pem ec2-user@(EC2のパブリックIPアドレス)12-3. Parameter StoreからDBパスワードを取得する
EC2にSSH接続した状態で以下を実行します。
aws ssm get-parameter \
--name "/my/rds/db-password" \
--query "Parameter.Value" \
--output text \
--region ap-northeast-1 \
--with-decryptionHandson1234! と表示されればParameter Storeからの取得成功です。
--with-decryptionについて: SecureString型のパラメータを取得するときに必要なフラグです。このフラグがないと暗号化されたまま(base64のような長い文字列)返ってきます。
これがParameter Storeの活用方法:パスワードをコードに書かず、実行時にIAMロール経由で取得します。
12-4. RDSへのMySQL接続テスト
⑩で控えておいたRDSエンドポイントを使って接続します。
RDS_ENDPOINT="my-rds-mysql.xxxxxxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com"
# DBパスワードをParameter Storeから取得
DB_PASSWORD=$(aws ssm get-parameter \
--name "/my/rds/db-password" \
--query "Parameter.Value" \
--output text \
--region ap-northeast-1 \
--with-decryption)
# RDSに接続
mysql -h $RDS_ENDPOINT -u admin -p"$DB_PASSWORD" sampledb接続に成功するとMySQLのプロンプトが表示されます。
Welcome to the MariaDB monitor. Commands end with ; or \g.
...
MySQL [sampledb]>12-5. RDS上でSQL操作を確認する
-- テーブル作成
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- データ挿入
INSERT INTO users (name) VALUES ('Alice'), ('Bob');
-- データ確認
SELECT * FROM users;
-- 後片付け
DROP TABLE users;
EXIT;12-6. EC2からSSH接続を切断する
exit⑬ リソースの削除
課金を止めるために、ハンズオン完了後は必ず削除します。
RDSの課金について: RDSはインスタンスが稼働している間は課金されます(db.t3.micro は無料枠外の場合 約$0.017/時間)。不要になったら必ず削除してください。
削除順序
依存関係があるため、必ずこの順番で削除します。
1. EC2インスタンスを終了(→ 終了済みになるまで待機)
2. RDSインスタンスを削除(→ 削除完了まで約10〜15分待機)
3. RDS DBサブネットグループを削除
4. SSM Parameter Storeのパラメータを削除
5. セキュリティグループを削除(RDS用 → EC2用の順)
6. ルートテーブルの関連付け解除・削除
7. インターネットゲートウェイをデタッチ・削除
8. サブネットを削除(3つ)
9. VPCを削除
10. IAMロールを削除
11. キーペアを削除(任意)1. EC2インスタンスを終了する
EC2 → インスタンス → my-rds-ap-instance を選択 → 「インスタンスの状態」→「インスタンスを終了」
確認ダイアログで「終了」をクリック。「終了済み」になるまで待ちます(2〜5分)。
2. RDSインスタンスを削除する
Aurora and RDS → データベース → my-rds-mysql を選択 → 「アクション」→「削除」
| 項目 | 操作 |
|---|---|
| 最終スナップショットを作成 | チェックを外したまま(ハンズオンなので不要) |
| 「私は〜了承します。」 | チェックを入れる(これを入れないと削除ボタンが押せない) |
| 確認フィールド | delete me と入力 |
「削除」をクリック。削除完了まで約10〜15分かかります。ステータスが「削除中」から消えるまで待ちます。
注意: 「最終スナップショットを作成」にチェックを入れると、削除後もスナップショットが残り別途保存料金が発生します。必ず外してください。
3. RDS DBサブネットグループを削除する
Aurora and RDS → サブネットグループ → my-rds-subnet-group を選択 → 「削除」
RDSインスタンスが完全に削除されている必要があります。「使用中」エラーが出る場合はRDS削除完了を待ちます。
4. SSM Parameter Storeのパラメータを削除する
Systems Manager → パラメータストア → /my/rds/db-password を選択 → 「削除」
5. セキュリティグループを削除する
EC2 → セキュリティグループ
EC2のSGはRDS SGのソースとして参照されているため、RDS SGから先に削除します。
my-rds-sgを選択 → 「アクション」→「セキュリティグループを削除」my-rds-ec2-sgを選択 → 「アクション」→「セキュリティグループを削除」
6. ルートテーブルを削除する
VPC → ルートテーブル
まず各ルートテーブルのサブネット関連付けを解除してから削除します。
my-public-rtを選択 → 「サブネットの関連付け」タブ → 「サブネットの関連付けを編集」→ チェックをすべて外す → 「保存」my-private-rtを選択 → 同様に関連付けを解除- 各ルートテーブルを選択 → 「アクション」→「ルートテーブルの削除」
7. インターネットゲートウェイをデタッチ・削除する
VPC → インターネットゲートウェイ → my-rds-igw を選択
- 「アクション」→「VPCからデタッチ」→「デタッチ」
- 「アクション」→「インターネットゲートウェイの削除」→「削除」
8. サブネットを削除する(3つ)
VPC → サブネット
my-public-subnet・my-private-subnet-1・my-private-subnet-2 を選択 → 「アクション」→「サブネットの削除」
9. VPCを削除する
VPC → お使いのVPC → my-rds-vpc を選択 → 「アクション」→「VPCの削除」
10. IAMロールを削除する
IAM → ロール → my-rds-ec2-role を選択 → 「削除」
11. キーペアを削除する(任意)
EC2 → キーペア → my-rds-mysql-key を選択 → 「アクション」→「削除」
まとめ
| ステップ | 内容 |
|---|---|
| ① | キーペア作成 |
| ②③④⑤ | VPC / サブネット3つ / IGW / ルートテーブルの設定 |
| ⑥ | EC2用SG(HTTP:80・SSH:22)+ RDS用SG(MySQL:3306、SG-to-SG制御) |
| ⑦⑧ | IAMロール + Parameter Store(SecureString)でパスワードを安全に管理 |
| ⑨ | DBサブネットグループ(2AZ必須)の作成 |
| ⑩ | RDS MySQL 8.0 インスタンス作成(約10〜15分) |
| ⑪ | EC2起動(UserDataでApache自動セットアップ) |
| ⑫ | EC2 → Parameter Store → RDS MySQL への接続テスト |
EC2にDBをインストールする方式との最大の違いは、AWSがOSのメンテナンス・パッチ・バックアップを自動管理してくれる点です。パスワードをParameter Storeで管理し、SG-to-SGでRDSへのアクセスを制御するパターンは、実際のAWS本番環境でも標準的な設計です。
CloudFormationで同じ構成を自動化したい場合は、CloudFormation版ハンズオンを参照してください。コマンド1本で22リソースを一括デプロイできます。
コメント