AWS Advanced Drivers

Documentation for AWS Advanced JDBC, Python, Node.js, Go, .NET, and ODBC Drivers

AWS Advanced Python Wrapper

← Back to Home

The AWS Advanced Python Wrapper is a Python database driver wrapper that adds AWS-specific features to standard Python database drivers for Aurora and RDS.

Latest Version: 1.4.0
Repository: github.com/aws/aws-advanced-python-wrapper

Installation

pip install aws-advanced-python-wrapper

Quick Start

import aws_advanced_python_wrapper
from aws_advanced_python_wrapper import AwsWrapperConnection

config = {
    'host': 'db-instance.cluster-xyz.us-east-1.rds.amazonaws.com',
    'database': 'mydb',
    'user': 'username',
    'password': 'password',
    'plugins': 'failover,iam'
}

conn = AwsWrapperConnection.connect(config, driver_dialect='pg8000')
cursor = conn.cursor()
cursor.execute("SELECT 1")

Key Features

Configuration

Configure plugins and settings via connection parameters:

config = {
    'plugins': 'failover,iam,secretsManager',
    'failover_timeout_ms': 60000,
    'cluster_id': 'my-cluster'
}

Common Configurations

Basic Failover

config = {
    'host': 'cluster.region.rds.amazonaws.com',
    'database': 'mydb',
    'user': 'username',
    'password': 'password',
    'plugins': 'failover'
}

conn = AwsWrapperConnection.connect(config, driver_dialect='pg8000')

IAM Authentication

config = {
    'host': 'cluster.region.rds.amazonaws.com',
    'database': 'mydb',
    'user': 'iamuser',
    'plugins': 'failover,iam',
    'region': 'us-east-1'
}

conn = AwsWrapperConnection.connect(config, driver_dialect='pg8000')

Secrets Manager

config = {
    'plugins': 'failover,secrets_manager',
    'secret_id': 'arn:aws:secretsmanager:region:account:secret:name',
    'region': 'us-east-1'
}

conn = AwsWrapperConnection.connect(config, driver_dialect='pg8000')

Read/Write Splitting

config = {
    'host': 'cluster.region.rds.amazonaws.com',
    'database': 'mydb',
    'user': 'username',
    'password': 'password',
    'plugins': 'failover,read_write_splitting'
}

conn = AwsWrapperConnection.connect(config, driver_dialect='pg8000')

# Reads go to reader
cursor = conn.cursor()
cursor.execute("SELECT * FROM users")

# Writes go to writer
cursor.execute("INSERT INTO users VALUES (%s, %s)", ('name', 'email'))
conn.commit()

Supported Driver Dialects

Context Manager Support

with AwsWrapperConnection.connect(config, driver_dialect='pg8000') as conn:
    with conn.cursor() as cursor:
        cursor.execute("SELECT 1")
        result = cursor.fetchone()

Resources