【初心者向け】EC2からRDSへ接続してみた

記事タイトルとURLをコピーする

こんにちは、アプリケーションサービス部 ディベロップメントサービス2課の木田です。
本記事ではAWS初心者の方向けに、パブリックサブネット上のEC2からプライベートサブネット上のRDS(MySQL)に接続してみよう!という内容です。

また、筆者自身が躓いた点も記述してあります。筆者の失敗から学んで頂ければ幸いです!

構成

前提

EC2(Amazon Linux2)が構築され・SSH接続確認済みであること

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

まず、RDS用のセキュリティグループを作成します。
EC2からのアクセスのみを許可するように設定します。

セキュリティグループの作成画面(EC2 ⇨ セキュリティグループ ⇨ セキュリティグループを作成)まで進み、以下のように入力してください。

基本的な詳細
設定項目 項目入力値
セキュリティグループ名 db-sg(任意)
説明 Security Group For RDS(任意)
VPC EC2があるVPC
インバウンドルール

「ルールを追加」を選択します。

設定項目 項目入力値
タイプ MYSQL/Aurora
プロトコル ※TCP
ポート範囲 ※3306
ソース カスタム/EC2のセキュリティグループID
説明 空欄(任意)

※タイプを選択すると自動入力されます。

アウトバウンドルール、タグはここではデフォルトのまま進みます。 「セキュリティグループの作成」を選択し、RDS用のセキュリティグループが作成できました。

筆者が躓いた点

当初、インバウンドルールにEC2のパブリックIPを設定していたため、EC2からRDSが接続できませんでした。
RDSとEC2は同一VPC内に存在するので、RDSのセキュリティグループのインバウンドで許可するのはEC2のセキュリティグループID or EC2のプライベートIPとなります。
セキュリティグループIDを指定すると、指定されたセキュリティグループに関連付けられたリソースのプライベート IP (ここではEC2のプライベートIP)が許可されることになります。運用的な観点から、今回はセキュリティグループIDで設定しました。

プライベートサブネットの作成

次にRDS用のプライベートサブネットを作成します。
本記事ではシングルAZで構成していますが、後述するRDSのサブネットグループとして、異なるAZにそれぞれ最低サブネットを1つ用意する必要があります。

サブネットの作成画面(VPC ⇨ サブネット ⇨ サブネットの作成)まで進み、以下のように入力してください。

VPC
設定項目 項目入力値
VPC ID EC2と同一上のVPC

サブネットの設定
設定項目 項目入力値
サブネット名 db-private-subnet-1(任意)
アベイラビリティゾーン EC2があるアベイラビリティゾーン
IPv4 CIDR ブロック 使用済みでない任意の値

1つ目のサブネット項目を入力後、「新しいサブネットを追加」を選択し、同様に2つ目のサブネットの内容を入力します。

設定項目 項目入力値
サブネット名 db-private-subnet-2(任意)
アベイラビリティゾーン 1つ目で作成したサブネットと別のアベイラビリティゾーン
IPv4 CIDR ブロック 使用済みでない任意の値

「サブネットを作成」を選択し、サブネットが作成されました。

サブネットグループの作成

次にRDS用のサブネットグループを作成します。

サブネットグループの作成画面(RDS ⇨ サブネットグループ ⇨ DBサブネットグループを作成)まで進み、以下のように入力してください。

サブネットグループの詳細
設定項目 項目入力値
名前 db-subnet-group(任意)
説明 Subnet Group For RDS(任意)
VPC EC2があるVPC

サブネットを追加
設定項目 項目入力値
アベイラビリティゾーン 作成したプライベートサブネットがあるアベイラビリティゾーン(2つ)
サブネット 作成した2つのプライベートサブネット

RDSの起動

RDSを起動させます。
RDSの作成画面まで進みます(RDS ⇨ データベースの作成 )。

設定項目が多く冗長的なため、今回設定する必要のある項目のみ後述します。他の項目はデフォルト値のまま進んでいただいて構いません。

エンジンのオプション
設定項目 項目入力値
エンジンのタイプ MySQL

テンプレート
設定項目 項目入力値
テンプレート 開発/テスト

設定
設定項目 項目入力値
DBインスタンス識別子 test-db(任意)
マスターパスワード/パスワードの確認 任意のパスワード(覚えておいてください)

インスタンスの設定
設定項目 項目入力値
DBインスタンスクラス バースト可能クラス (t クラスを含む) / db.t3.micro

接続
設定項目 項目入力値
VPC EC2があるVPC
サブネットグループ 今回作成したサブネットグループ
既存のセキュリティグループ 今回作成したセキュリティグループ

データベースの作成を選択します。

データベースは数分で起動が完了します。起動後、データベースのエンドポイントをメモしておいてください。

EC2からRDSへ接続

まず、EC2にSSH接続してください。 EC2にMySQLクライアントがない場合は以下のコマンドでインストールしてください。

$ sudo yum install mysql

インストール完了確認後、以下のコマンドでRDSに接続してください。

$ mysql -u admin -p -h データベースのエンドポイント

パスワード入力が求められますので、設定したパスワードを入力してください。

以下のように表示されれば接続成功です。

まとめ

ご一読いただきありがとうございました。 パブリックサブネット上のEC2からプライベートサブネット上のRDS(MySQL)に接続してみました。
筆者にとってはセキュリティグループ辺りで躓いたことが「基礎からしっかり固めよう!」と改めて思う良いきっかけになりました。
この記事をご覧になった皆さんにも何かの参考になれば幸いです。