SSH転送しながらRMySQLでAWS上のDBにつなぐ

社内データを取得する際に踏み台を介してAWS上のDB(MySQL)につなぐ必要が出てきた。
データ取得関数は社内用のパッケージに実装していたのだがこれを少し変える必要がある。
もっと良いやり方ないだろうか。
とりあえず以下メモ。

踏み台接続用のサーバを立ち上げる

TeraTermProを使ってSSHで接続する。SSH接続の設定などは下記参考文献を確認のこと。

sshlogin <-function(){
  system('"C:/Program Files (x86)/teraterm/ttermpro.exe" 踏み台のIP /auth=publickey /user=踏み台のユーザ名 /keyfile=keyのパス',
         wait=FALSE, invisible=FALSE
  )
}

で、これをパッケージ読み込み時に動かしたいので.onLoad関数に下記のように指定した。

.onLoad <- function(libname, pkgname) {
  sshlogin()
}

RMySQLでつなぐ

localhostが立ち上がった状態で下記のようにしてつなぐ。
hostに"localhost"と指定するのではなく"127.0.0.1"と指定するのがポイントらしい。

library("RMySQL")
con <- dbConnect(MySQL(), user=AWSのユーザ名, password=AWSのパスワード, 
                 host="127.0.0.1", port=localhostのポート, dbname=DB名)