🛒

RDSを構築してEC2と連携する方法

に公開

この記事では、RDSを構築してEC2と連携する手順を解説します。

構成

使用技術

  • EC2:Amazon Linux 2023
  • RDS: MySQL 8.0.41

リージョン

リージョンが、VPCを作成したリージョンと合っているか確認

1.プライベートサブネットを作成

サブネットとは、VPC内でIPアドレスの範囲を小さく分けたネットワークであり、プライベートサブネットとは直接アクセスできないサブネットのことです。
RDSはプライベートサブネットに配置します。

RDSを構築するには後の「サブネットグループ」が必要であり、サブネットグループを設定するには、AZ(アベイラビリティーゾーン)が異なる2つのサブネットが必要となります。

手順は以下です
1.EC2と同じアベイラビリティゾーン内に、プライベートサブネットを1つ作成
2.EC2と異なるアベイラビリティゾーン内に、プライベートサブネットを1つ作成

■「VPC」→「サブネット」→「サブネットを作成」

1−1.プライベートサブネットの作成(EC2と同一のAZ)

プライベートサブネットを作成します

  • VPC:「aws-vpc」を選択 ※作成したVPC
  • サブネット名:aws-subnet-private01
  • アベイラビリティーゾーン(AZ):ap-northeast-1a
  • IPv4 VPC CIDR ブロック:10.0.0.0/16
  • IPv4 サブネット CIDR ブロック:10.0.64.0/20

1−2.プライベートサブネットの作成(EC2と異なるAZ)

  • VPC:「aws-vpc」を選択 ※作成したVPC
  • サブネット名:aws-subnet-private02
  • アベイラビリティーゾーン(AZ):ap-northeast-1c
  • IPv4 VPC CIDR ブロック:10.0.0.0/16
  • IPv4 サブネット CIDR ブロック:10.0.80.0/20

これで、2つのプライベートサブネットが作成されました

2.サブネットグループを作成

■「Aurora and RDS」→「サブネットグループ」→「DBサブネットグループを作成」

サブネットグループを作成します

  • サブネットグループの詳細
    • 名前:aws-subnet-gp
    • 説明:任意の説明
    • VPC:aws-vpc ※作成した自身のVPCを選択
    • エンジンバージョン:ap-northeast-1a
  • サブネットを追加
    • アベイラビリティーゾーン
      • ap-northeast-1a
      • ap-northeast-1c
    • サブネット
      • aws-subnet-private01
      • aws-subnet-private02

サブネットグループが作成されました

3.セキュリティグループを作成

RDSへ接続できる、セキュリティーグループを作成します

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

  • 基本的な詳細
    • セキュリティグループ名:rdb-sg
    • 説明:任意の説明
    • VPC:aws-vpc ※作成した自身のVPCを選択
  • インバウンドルール
    • [MYSQL/Aurora]:TCP:3306:[カスタム]:[aws-sg-public]
  • アウトバウンドルール:なし

    ポイントはインバウンドルールの設定値です。
    EC2には「aws-sg-public」のセキュリティーグループが設定されています。
    RDSへの接続には、そのEC2に設定している「aws-sg-public」のみを許可します

通信の流れ

[あなたのPC]
👇️ SSH接続(22番ポート)
[EC2(aws-sg-public)] ← パブリックサブネット
👇️ DB接続(3306番ポート)
[RDS(rds-sg)] ← プライベートサブネット

EC2のセキュリティグループを指定することによる、メリットは以下です。

  • IPアドレスの変動に強い(動的IP対応)
    • EC2 はプライベートIPが変わる可能性があるため(再起動など)
  • 将来的にEC2を増やすときにも便利
    • 同じ aws-sg-public を別のEC2に付けるだけで、RDSへの接続許可が自動的に適用される
  • セキュリティ的にも良い
    • 特定のIP(例: 0.0.0.0/0 や CIDR)よりも、AWSが推奨する方法であるため

4.データベースの作成

■「Aurora and RDS」→「データベース」→「データベースを作成」

  • データベース作成方法を選択:標準作成
  • エンジンのオプション
    • エンジンのタイプ:MySQL
    • エディション:MySQL Community
    • エンジンバージョン:MysQL 8.0.41
  • テンプレート:無料利用枠
  • 可用性と耐久性:シングル AZ DB インスタンスデプロイ(1 インスタンス)
  • 設定
    • DB インスタンス識別子: 任意のDB名
    • マスターユーザー名:任意のユーザー名
    • 認証情報管理:セルフマネージド
    • マスターパスワード:任意のパスワード
  • インスタンスの設定
    • DB インスタンスクラス:db.t3.micro
  • ストレージ
    • ストレージタイプ:汎用SSD(gp2)
    • ストレージ割り当て:20GiB
  • 接続
    • コンピューティングリソース:EC2 コンピューティングリソースに接続しない
    • ネットワークタイプ:IPv4
    • Virtual Private Cloud (VPC):aws-vpc ※作成した自身のVPCを選択
    • DBサブネットグループ:aws-subnet-gp
    • パブリックアクセス:なし
    • VPC セキュリティグループ:
      • 既存の選択(default)
      • rds-sg ※上記で作成したRDS用セキュリティーグループを選択
    • アベイラビリティーゾーン:ap-northeast-1a
  • データベース認証
    • データベース認証オプション:パスワード認証
  • ※以後の設定はデフォルトを選択






データベースが作成されました

5.EC2と連携

5−1.EC2にMySQLインストール

EC2からRDSへ接続するためにはmysqlコマンドが必要となります

MySQLインストール等の設定については、
以下の記事の 「MySQLインストール」と「MySQLの設定」の「1.起動」 までを参考ください
https://zenn.dev/morikuma/articles/83f988a663f597

5−2.EC2からRDS(MySQL)へ接続確認

RDSへ接続できるか確認します
接続に必要な情報は以下です(※RDSの作成時の情報)

  • RDSのエンドポイント
  • ユーザー名
  • パスワード

👇️※RDSのエンドポイントはRDSの詳細画面に記載済

SSH接続でEC2へ接続後、、、

mysql -h RDSのエンドポイント -u ユーザー名 -p

パスワード入力すると、接続できました!

まとめ

今回は、RDSを構築しEC2へ連携する手順を解説しました
他にも記事をまとめていますので、よかったら参考にください

この記事が、少しでも皆さんのお役に立てれば嬉しいです

🔗 参考記事

■EC2へLaravelを構築
https://zenn.dev/morikuma/articles/bb4f6201d83d67

Discussion