🌟

【AWS - Aurora Postgre SQL】ローカルからDBへ接続する方法

に公開

概要

  • ローカルからAuroraPostgreDBへ接続。
    • EC2(踏み台サーバー)経由
    • ポートフォワードによるポート転送あり
  • SQLはPythonファイルで実行。
  • Aurora Postgre DB自体は構築済み。
    • Aurora Postgre DBへのパブリックアクセスはFalse
    • Aurora Postgre DBはプライベートサブネット内に配置
    • Secrets Manegerによる認証あり

作業ステップ

一覧

  1. EC2インスタンスの作成
  2. セキュリティグループ設定
  3. EC2へのSSH接続
  4. 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