はじめに
この記事では、ECS コンテナ内で MySQL クライアントを使用して RDS に接続する手順を解説します。
個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。
ECS 上で動作するアプリケーションが RDS を利用する場合に役立ちます。
書こうと思ったきっかけ
ECS を使用した環境で、RDS に正しく接続する方法がわからず困っている人が多いと感じました。
特に、環境変数の設定やセキュリティグループの設定が原因で接続に失敗するケースがよくあります。
本記事では、そうしたトラブルを防ぐための具体的な手順をまとめました。
1. RDS の接続情報を確認
RDS に接続するためには、以下の情報が必要です。
項目 | 説明 |
---|---|
RDS ホスト名 |
MYSQL_HOST 環境変数に設定されている |
ポート |
MYSQL_PORT=3306 (通常は 3306) |
ユーザー名 |
MYSQL_USER 環境変数 (例: myuser) |
パスワード |
MYSQL_PW 環境変数 (基本的にAWS Secrets Manager から取得される) |
データベース名 |
MYSQL_DB 環境変数 (例: mydatabase) |
環境変数の確認
まず、ECS コンテナ内で環境変数を確認してください。
/app # env | grep MYSQL
期待される出力例:
MYSQL_HOST=mydatabase.abcd1234.ap-northeast-1.rds.amazonaws.com
MYSQL_PORT=3306
MYSQL_USER=myuser
MYSQL_DB=mydatabase
MYSQL_PW=mypassword123 # AWS Secrets Manager から取得される場合、表示されない
2. MySQL クライアントをインストール
ECS のコンテナに MySQL クライアント (mysql
) がインストールされていない場合は、apk
を使用してインストールできます。
/app # apk add --no-cache mysql-client
3. RDS に接続
以下のコマンドを実行して、RDS に接続します。
/app # mysql -h $MYSQL_HOST -P $MYSQL_PORT -u $MYSQL_USER -p$MYSQL_PW $MYSQL_DB
または、環境変数を直接入力する場合:
/app # mysql -h mydatabase.abcd1234.ap-northeast-1.rds.amazonaws.com -P 3306 -u myuser -p mydatabase
成功すると、以下のような MySQL プロンプトが表示されます。
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 123
Server version: 8.0.39 MySQL Community Server - GPL
mysql>
4. RDS に接続できない場合の確認ポイント
もし RDS に接続できない場合、以下をチェックしてください。
-
MYSQL_HOST
の値が正しいか?
/app # echo $MYSQL_HOST
-
RDS のセキュリティグループに ECS のセキュリティグループが許可されているか?
Terraform で ECS のセキュリティグループ (ecs_sg
) から RDS のセキュリティグループ (rds_sg
) にアクセス許可があるか確認。 -
RDS のステータスが
available
になっているか?
aws rds describe-db-instances --query "DBInstances[*].DBInstanceStatus"
もし stopped
になっていたら、起動する。
- RDS のパスワード (
MYSQL_PW
) を AWS Secrets Manager から取得する場合、正しく設定されているか?
/app # echo $MYSQL_PW
もし空欄なら、ECS のタスク定義で AWS Secrets Manager の参照が正しく設定されているか確認。
5. RDS のテーブル一覧を確認
RDS に接続できたら、データベースのテーブル一覧を表示してみましょう。
SHOW TABLES;
もし migrate_app
でテーブルが作成されているなら、
users, categories, questions, answers, choices, scores
などのテーブルが表示されるはずです。
まとめ
-
env | grep MYSQL
で環境変数を確認 -
apk add --no-cache mysql-client
で MySQL クライアントをインストール -
mysql -h $MYSQL_HOST -P $MYSQL_PORT -u $MYSQL_USER -p$MYSQL_PW $MYSQL_DB
で接続 - 接続できない場合は RDS のセキュリティグループやステータスを確認
この手順に従えば、ECS コンテナから RDS に接続できるはずです。