Skip to content

Instantly share code, notes, and snippets.

@taiar
Forked from jshahriddhi/connect_private_rds.py
Created October 29, 2023 20:39
Show Gist options
  • Save taiar/6d7db603e872f67e67b4aaf43b2dfa19 to your computer and use it in GitHub Desktop.
Save taiar/6d7db603e872f67e67b4aaf43b2dfa19 to your computer and use it in GitHub Desktop.

Revisions

  1. @jshahriddhi jshahriddhi created this gist Oct 22, 2018.
    26 changes: 26 additions & 0 deletions connect_private_rds.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,26 @@
    from sshtunnel import SSHTunnelForwarder
    import pymysql

    with SSHTunnelForwarder(
    ('ec2-52-202-194-76.public-ec2-instance.amazonaws.com'),
    ssh_username="ec2-user",
    ssh_pkey="~/ssh-tunnel-rds.pem",
    remote_bind_address=('private-rds-instance.ckfkidfytpr4.us-east-1.rds.amazonaws.com', 3306)
    ) as tunnel:
    print("****SSH Tunnel Established****")

    db = pymysql.connect(
    host='127.0.0.1', user="rdsuser",
    password="rdspassword", port=tunnel.local_bind_port
    )
    # Run sample query in the database to validate connection
    try:
    # Print all the databases
    with db.cursor() as cur:
    cur.execute('SHOW DATABASES')
    for r in cur:
    print(r)
    finally:
    db.close()

    print("YAYY!!")