TiDB CloudにAWSから接続してみる...PublicとPrivateどちらがよいのか

はじめに
「AWS上からTiDBへの接続はどうすればよいのだろう?」を動かしていきます。方法として2種類の接続方法がありますので、両方ためしていこうと思います。
※別記事でローカルからTiDB CloudへのDB接続をまとめています。こちらもご参照ください。
1.PublicでDB接続
- OS: EC2 Amazon Linux(Cloud9)
- 別記事で記載したコードと同じものを使っています。
ローカル接続となにも手順は変わりません。証明書のPathだけOSのディストリビューションに沿ったものに変更しました。今回はAmazon LinuxでしたのでCA_PATH(環境変数にしている部分)を/etc/pki/tls/certs/ca-bundle.crtに変更しています。

2.PrivateでDB接続
TiDBのConnectからPrivateを選択してメモを取ります。

AWSにてVPCエンドポイントを作成しましょう。TiDBの情報を入力していきます。
- DNS名の有効が必要
- セキュリティグループのインバウンドで4000ポートを許可

証明書の部分をコメントアウトしますが動作するようになりました。
- Privateに変更すると環境変数の
HOSTが変更になっているので注意
念の為。動いた後にVPCエンドポイントを削除してみると、gateway01-privatelink.ap-northeast-1.prod.aws.tidbcloud.comに繋がらないというエラーになりました。PrivateLinkは確実に動作していたと確認できました。

どちらがよいのか?

あたらめて2種類を比較してみます。比較表は個人的に作ったものです。
| 項目 | Public | Private |
|---|---|---|
| SSL証明書 | 必要 | 不要 |
| VPCエンドポイント | 不要 | 必要 |
| VPCエンドポイント料金 | 0円 | 追加発生 |
| 通信経路 | インターネット | インターネット経由せずPrivate通信 |
| 通信速度 | インターネット経由分ロス | AWS間通信 |
| AWSのセキュリティグループ | インターネットのポート設定必要 | インターネットのポート設定不要 |
| TiDBのPublic Endpoint | Enableが前提 | DisableにしてAWS以外をシャットアウト可能 |
最後に公式ドキュメントを確認します。Privateを推奨と記載されています。
ちょっとした動作確認ではよいですが、Publicを禁止してPrivateで運用したほうが、ビジネスでは不要なリスクを取る必要がなくなるので私もPrivateが良いのではと思っています。

さいごに
今回は、EC2で試しましたが、ECSでもDB接続に関する内容は共通ですので知識を流用することが可能です。これで、AWSでも動作させることができるようになりましたので、だいぶん理解度がついてきたのかなと思います。
引き続きいろいろな動きを見ていこうかなと思っています。
Discussion