Open5
TiDB ServerlessへEC2から接続してクエリ叩くまで
TiDB Serverless の登録
ここから「無料で始める」をクリックしてアカウントを作成。
→ Googleアカウントを使ってログインするよう進めた。
接続情報確認
画面右上の「Connect」を押すと接続情報が確認できる。
Endpoint Typeが Public
だと、macなどから直接接続できる。
Private
だと、VPCエンドポイント経由で、EC2からアクセスできる。
(接続情報は、Endpoint Type を切り替えたときに画面上に情報が表示される)
Private 接続を試す1 - VPCエンドポイント関連の設定
具体的な手順は公式にあり。
事前準備として、AWS側で以下を実施済み。
- VPCを作成
- Public Subnet x2、Private Subnet x2 ※今回使うのはPublic Subnet1つだけ
- EC2を作成(Amazon Linux 2023)
- EC2はSSHで接続するため、Public Subnetに配置
- EC2には、
mariadb105
をインストールし、mysqlコマンドでTiDBへ接続できるようにした。 sudo dnf install mariadb105
AWS側の準備ができたあとは、公式手順でVPCエンドポイントを作成する。
設定メモ
- VPCエンドポイント作成時、サブネットの指定があるが、EC2サーバーが配置されているサブネットを指定。
- セキュリティグループはVPCエンドポイント作成後にインバウンドルールの追加を実施。
- ポート
4000
に対し、特定のIPレンジは通信可能とした。- 今回は、EC2サーバーのプライベートIPが
10.0.x.x
だったため、10.0.0.0/16
をソースに設定。
- 今回は、EC2サーバーのプライベートIPが
- ポート
Private 接続を試す2 - EC2から接続
EC2にSSH接続したターミナルで、mysql
コマンドを実行し接続する
※接続用コマンドは、TiDBの Connect
から表示される接続情報の中にコマンド文字列が表示されるため、そのまま流用。
コマンド例
mysql --comments -u 'xxxxxxxxxx.root' -h gateway01-privatelink.ap-northeast-1.prod.aws.tidbcloud.com -P 4000 -D 'test' -p'xxxxxxxxxx'
接続できるとこんな感じ。
パブリック接続の制限方法
- 画面左下の
Networking
をクリックと、Public Endpoint の有効・無効を切り替える画面が開く。 -
Disable
をクリックし、確認画面でもう一度Disable
をクリックすると、パブリック接続が無効化される。
Overviewの Connect
から、Endpoint Typeを選択するとき、 Public
が選べなくなる。