🐟

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

2024/02/21に公開

はじめに

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