概要
- ローカルからAuroraPostgreDBへ接続。
- EC2(踏み台サーバー)経由
- ポートフォワードによるポート転送あり
- SQLはPythonファイルで実行。
- Aurora Postgre DB自体は構築済み。
- Aurora Postgre DBへのパブリックアクセスはFalse
- Aurora Postgre DBはプライベートサブネット内に配置
- Secrets Manegerによる認証あり
作業ステップ
一覧
- EC2インスタンスの作成
- セキュリティグループ設定
- EC2へのSSH接続
- SQLクエリ実行
1. EC2インスタンスの作成
- EC2インスタンスを作成する。
- 注意点:
- 接続先(AuroraPostgreDB)と同一のVPC内に配置。
- パブリックIPアドレス(= Elastic IPアドレス)の割り当てが必要。
- 作成したキーペア(.pem)を保管。※後続処理で使用する
2. セキュリティグループ設定
- EC2、AuroraPostgreDBクラスターのそれぞれに下記設定のセキュリティグループを割り当てる。
EC2
| タイプ |
リソースタイプ |
ソース |
| SSH |
マイ IP |
(自動設定) |
AuroraPostgreDBクラスター
| タイプ |
リソースタイプ |
ソース |
| PostgreSQL |
カスタム |
(EC2のセキュリティグループID) |
3. EC2へのSSH接続
- EC2インスタンス作成時に保管しておいたキーペア(.pem)をローカルの
~/.ssh/ ディレクトリへ移動。
- ターミナルでsshコマンドを実行。
$ ssh -i ~/.ssh/{保管したキーペアの名前}.pem ec2-user@{EC2のパブリックIPアドレス} -L 15432:[AuroraPostgreDBクラスターのエンドポイント]:5432
4. SQLクエリ実行
# -*- coding: utf-8 -*-
import psycopg2
DATABASE = 'postgres'
HOSTNAME = 'localhost'
USERNAME = データベースのユーザー名 #AuroraPostgreDBクラスターのSercret Managerから確認可
USERPASSWORD = データベースのパスワード ##AuroraPostgreDBクラスターのSercret Managerから確認可
PORTFORWORD = 指定したポート番号 #今回は15432を指定している
def get_connection():
conn = psycopg2.connect(
host = HOSTNAME,
port = PORTFORWORD,
user = USERNAME,
password = USERPASSWORD,
database = DATABASE
)
return conn
with get_connection() as conn:
with conn.cursor() as cur:
cur.execute({SQLクエリ})
参考
Discussion