PrismaからEC2を介してRDSにアクセスする方法

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

コメント

タイトルとURLをコピーしました