手元のPCから踏み台サーバー→分析サーバー→RedShiftび順にアクセスしてデータを取得したいのですが、どのように行えば良いのか調べても中々見つからないため質問させて頂きます。
サーバ構成
・EC2踏み台サーバー(IP:192.0.0.1, port:22)
・EC2分析サーバー(IP:192.0.0.2, port:3389)
・RedShift(port5439)
上記のサーバーを上から順に接続していきたいという内容になります。
途中まで書いてみたコードは下記のようになります。
知見のある方がいらっしゃいましたら、ご教授頂けますと幸いです。
(細部の情報は抜いています。)
import sqlalchemy import pandas as pd from sshtunnel import SSHTunnelForwarder import psycopg2 SSH_HOST1 = '192.0.0.1' SSH_PORT1 = 22 SSH_HOST_KEY1 = None SSH_USERNAME1 = 'user' SSH_PASSWORD1 = "user" SSH_PKEY1 = None SSH_HOST2 = '192.0.0.2' SSH_PORT2 = 3389 SSH_HOST_KEY2 = None SSH_USERNAME2 = 'user' SSH_PASSWORD2 = "user" SSH_PKEY2 = None DB_HOST = '*********ap-northeast-1.redshift.amazonaws.com' DB_PORT = "5439" DB_USER = '' DB_PASSWORD = '' DB_NAME = '' with SSHTunnelForwarder(SSH_HOST1, SSH_PORT1, ssh_host_key=SSH_HOST_KEY1, ssh_username=SSH_USERNAME1, ssh_password=SSH_PASSWORD1, ssh_pkey=SSH_PKEY1, remote_bind_address=(SSH_HOST2, SSH_PORT2), local_bind_address=('0.0.0.0', 10022)) as server1: with SSHTunnelForwarder(SSH_HOST2, SSH_PORT2, ssh_host_key=SSH_HOST_KEY2, ssh_username=SSH_USERNAME2, ssh_password=SSH_PASSWORD2, ssh_pkey=SSH_PKEY2, remote_bind_address=('127.0.0.1', 5439)) as server2: con = psycopg2.connect( host=DB_HOST, database=DB_NAME, port=DB_PORT, user=DB_USER, password=DB_PASSWORD ); data = pd.read_sql(SQL, con) print(data) con.close()
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/30 07:05