はじめに
本記事では、AWSを使用してEC2インスタンスを構築し、RDSに接続する手順を解説します。
EC2とRDSは、クラウド環境でアプリケーションとデータベースを分離して管理する上で欠かせない重要なサービスです。
基本的な内容ですが、未来の自分への備忘録として、体系的にまとめています。
補足:AWSのネットワーク構成はシンプル
今回の技術検証では、EC2インスタンスを構築し、RDSに接続するというシンプルな構成で進めます。
引用画像:https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/tutorial-connect-ec2-instance-to-rds-database.html
この構成では、インターネットからアクセス可能なパブリックサブネットにEC2インスタンスを構築し、プライベートサブネットにRDSを配置します。
これにより、アプリケーションサーバーとデータベースの分離を実現します。
今回の検証で使用するVPC構成は以下のとおりです。
前提条件
以下の準備が整っていることを前提に、技術検証を進めます。
-
AWSアカウント:
EC2およびRDSを操作する権限を持つIAMユーザーまたはロール。 -
ネットワーク構成:
作成済みのVPCとサブネット。
必要なセキュリティグループの設定(後述)。 -
クライアント端末:
SSH接続ができる環境。 -
ソフトウェア:
EC2インスタンスで使用するMySQLクライアント。
また、VPCの作成方法については、以下の記事で詳しく説明していますので、必要に応じて参考にしてみてください!
EC2インスタンスの構築
インスタンスの作成
AWS Management ConsoleでEC2サービスを開き、新しいインスタンスを作成します。名前とAMI(ここではAmazon Linux 2)を選択して、以下の画面のように進めてください。
今回は、EC2 Instance Connectというサービスを使用するため、キーペアの設定は不要です。
ネットワーク設定については、事前に作成したVPCとパブリックサブネットを選択して、パブリックIPの自動割り当てを有効にします。
セキュリティグループについては、デフォルトのままで大丈夫です(後ほど詳細に設定を説明します)。
必要なソフトウェアのインストール
次に、EC2 Instance Connectを使用してインスタンスに接続し、必要なソフトウェアをインストールします。
対象のインスタンスを選択し、「接続」ボタンをクリックし、「EC2 Instance Connect を使用して接続する」を選択します。
インスタンスにSSHで接続後、以下のコマンドを実行してMySQLクライアントをインストールします。
sudo yum update -y
sudo yum install -y mysql
コマンド実行後に以下のように「Complete!
」と表示されれば、インストールは正常に完了しています。
RDSインスタンスの作成
RDSの設定
AWS Management ConsoleでRDSサービスを開き、「データベースの作成」をクリックします。
「簡単作成」を選択し、無料利用枠を使用して進めます(無料利用枠の期間が終了している場合、課金対象となります)。
パスワードは自動生成を選択します。
作成中のバナーに表示される「認証情報の詳細を表示」をクリックすると、自動生成されたパスワードを確認できます。
よくカスタムパスワードを紛失するケースが多いため、忘れそうな人は、以下の記事を参考にしてください!
RDSとEC2の接続セットアップ
上記の手順に沿って、作成をしていくとEC2 接続をセットアップするというオプションがありますので、ここを設定していきます。
このオプションを選択することにより、コンピューティングリソースがこのデータベースに接続できるように、接続設定が自動的に変更されます。
セキュリティグループの確認
RDSセキュリティグループの設定
RDSに関連付けられたセキュリティグループのインバウンドルールを編集し、以下の設定を追加してください。
タイプ | プロトコル | ポート範囲 | ソース |
---|---|---|---|
MYSQL/Aurora | TCP | 3306 | sg-xxx / ec2-rds-1 |
カスタム TCP | TCP | 0 | sg-xxx / ec2-rds-1 |
RDSでMySQLを使用する場合、ポート3306を開放する必要があります。
EC2インスタンスのセキュリティグループIDをソースとして指定してください(設定を忘れないよう注意してください)。
EC2セキュリティグループの設定
EC2インスタンスでは、SSH接続ができることが重要です。セキュリティグループのインバウンドルールで、以下を確認または設定してください。
タイプ | プロトコル | ポート範囲 | ソース |
---|---|---|---|
SSH | TCP | 22 | 0.0.0.0/0 |
ソースで全てを許可していますが、セキュリティを考慮し、必要に応じてソースIPアドレスを絞り込むことを推奨します。
実際にEC2からRDSに接続してみた
接続テスト
EC2インスタンスにEC2 Instance Connectを利用してSSH接続します。以下のコマンドを実行して、RDSに接続します。
mysql -h <RDSエンドポイント> -u admin -p
パスワードを入力後、以下のような画面が表示されれば接続成功です。
[ec2-user@ip-10-0-10-67 ~]$ mysql -h rds.c586grpu6rv9.ap-northeast-1.rds.amazonaws.com -u admin -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 26
Server version: 8.0.39 Source distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]>
データベース操作の検証
次に、簡単なSQL文を使ってCRUD操作が正常に行えるか確認します。
CREATE DATABASE testdb;
USE testdb;
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100));
INSERT INTO users (name) VALUES ('Alice'), ('Bob');
SELECT * FROM users;
正常にデータベース操作ができると、以下のような出力が得られます。
MySQL [testdb]> SELECT * FROM users;
+----+-------+
| id | name |
+----+-------+
| 1 | Alice |
| 2 | Bob |
+----+-------+
2 rows in set (0.00 sec)
MySQL [testdb]>
少し画面が見づらいかもしれませんが、以下のスクリーンショットのように、すべての操作が成功しました!
まとめ
ここまでお読みいただき、ありがとうございました!
本記事では、AWSを使用してEC2インスタンスを構築し、RDSに接続する手順を解説しました。
特に、セキュリティグループの設定など、見落としがちな項目についても触れていますので、作業の際は慎重に確認することをおすすめします。
この記事が、どなたかの技術的な支えになれば幸いです。
関連記事