さるへい備忘録

さるへいのやったことを綴っているブログです。基本的にテクノロジーの話題です。

Pythonでsshtunnelをつかって本番DBにトンネリング接続を試してみる

パフォーマンステストをする際に開発用のDBじゃ負荷がわかりづらいみたいなことはありませんか?

そんな時にもう開発環境から本番までパフォーマンス測定のためにつなげてみよう!ってなったのでそのやり方を紹介します。

sshtunnel

Python製のsshトンネリングに使えるライブラリ

sshtunnel.readthedocs.io

sshトンネルの用途だったら様々な箇所で有用。

実際のコード

flaskでつなげたのですが、ちょうどdbのsshtunnelをしている箇所だけ抜き出しました。

# coding: utf-8
import sshtunnel

...
...

tunnel = sshtunnel.SSHTunnelForwarder(
    ssh_address_or_host='server_address',
    ssh_username='username',
    ssh_port=port_num,
    remote_bind_address=(
        '踏み台サーバからのアドレス',
        ポート番号
    )
)

tunnel.start()


app.config['DBのURLを入れるためのconfigのkey'] = 'mysql+pymysql://user:pass@127.0.0.1:{}/dbname?charset=utf8mb4'.format(tunnel.local_bind_port) 

...
...

sshtunnel.SSHTunnelForwarder の引数でパスワード設定などもできるので足りない設定があったらいろいろ付け足しましょう。

本番につなげる場合は、できるだけテスト項目をつくりこんでさっと終わらせましょうね。