PrismaからRDSにアクセスするために手こずったので、過程を記録して誰かの役に立てばと思います。
かなりメモ書きっぽく書いていますがご了承ください😇
ネットワーク構築
1、VPCを作成
2、同じVPC内の2つのAZに2つずつサブネット(publicとprivate)を作成。合計4つのサブネットを用意。
3、public用とprivate用のルートテーブルを作成し、publicサブネット2つをpublicルートテーブル、privateサブネット2つをprivateルートテーブルに接続
4、publicルートテーブルとインターネットゲートウェイ(外部との接点)を接続。privateは外部からアクセスされたら困るので繋がない。
5、以上でネットワークの設定は完了
セキュリティグループの作成
前提:EC2用とRDS用はそれぞれ別にしたほうが良い。他のAWSをサービスを使ったりする場合は他にも追加する必要がある。
・RDS
タイプ:MYSQL/Aurora
ソース:カスタムでEC2のプライペートIPもしくはEC2のセキュリティグループ
・EC2
タイプ:ssh
ソース:マイ IP(ローカルPCの IPアドレス)
(ルーティングがうまく行っていることを確かめるために、ブラウザから確認したいなら)
タイプ:TCP
ソース:0.0.0.0/0(誰でもアクセス可能)
RDSとEC2を作成
・RDSをprivateサブネット内(データベースに外部からアクセスされたくないため)に立ち上げる
・mysqlに設定
・VPCやセキュリティグループを適切に設定
・認証情報管理をセルフマネージドに設定(名前とパスワードは後で必要)
・EC2インスタンスをpublicサブネット内に立ち上げる
・public IPを有効にする
・キーペアを作成しておかないとssh接続ができなくなる
・(Apacheをインストール。パブリックIPにブラウザからアクセスして正しくルーティングができているか確認するためなので、しなくても問題ない。)
・mysqlをインストールためにEC2インスタンスにアクセス
ssh -i <path-to-your-private-key.pem> ec2-user@<ec2-public-ip>
・RDSのmysqlにアクセスするためにmysqlクライアントをインストール。おそらく以下の2つのコマンドで問題ですが、いろんなコマンドを試したので足りてないかも
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
sudo yum install mysql-community-client
(お世話になったページ)https://qiita.com/Code_Dejiro/items/c97c400b92a85dce4468
ローカルPCからEC2を介してRDSにアクセス
前提:ローカルPC(外部)からRDSには直接アクセスできないようになっているので、同じVPC内にあるパブリックなEC2にアクセスしてからRDSにアクセスする必要がある
1, SSHトンネルを設定して、ローカルPCのポートをEC2インスタンス経由でRDSにマッピング
ssh -i <your-private-key.pem> -L 3306:<rds-endpoint>:3306 ec2-user@<ec2-public-ip>
2, 別のターミナルで以下のどれかを実行
(1)MySQLにアクセス
mysql -h 127.0.0.1 -P 3306 -u <RDSのマスターユーザー名> -p
実行したらパスワード入力を求められるので入力
(2)Prisma Studioを使ってデータベースにアクセスし、データが見えるかどうかを確認
npx prisma studio
(3)Prisma Clientを使ってRDSに対して簡単なクエリを実行する方法
①好きなjsファイルを作成
②以下を実行
node 〇〇.js
コメント