0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人的備忘録: ECSコンテナからRDSに接続する方法とMySQLクライアントのインストールについて、自分なりに体系的にまとめた

Last updated at Posted at 2025-02-22

はじめに

この記事では、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 に接続できるはずです。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?