Konektor Aurora DSQL untuk Python - Amazon Aurora DSQL

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Konektor Aurora DSQL untuk Python

Konektor Aurora DSQL untuk Python mengintegrasikan Autentikasi IAM untuk menghubungkan aplikasi Python ke cluster Amazon Aurora DSQL. Secara internal, ia menggunakan pustaka klien psycopg, psycopg2, dan asyncpg.

Konektor Aurora DSQL untuk Python dirancang sebagai plugin otentikasi yang memperluas fungsionalitas pustaka klien psycopg, psycopg2, dan asyncpg untuk memungkinkan aplikasi mengautentikasi dengan Amazon Aurora DSQL menggunakan kredenal IAM. Konektor tidak terhubung langsung ke database tetapi menyediakan otentikasi IAM yang mulus di atas pustaka klien yang mendasarinya.

Tentang Konektor

Amazon Aurora DSQL adalah layanan database SQL terdistribusi yang menyediakan ketersediaan dan skalabilitas tinggi untuk aplikasi yang kompatibel dengan PostgreSQL. Aurora DSQL memerlukan otentikasi berbasis IAM dengan token terbatas waktu yang tidak didukung oleh pustaka Python yang ada secara asli.

Ide di balik Konektor Aurora DSQL untuk Python adalah menambahkan lapisan otentikasi di atas pustaka klien psycopg, psycopg2, dan asyncpg yang menangani pembuatan token IAM, memungkinkan pengguna untuk terhubung ke Aurora DSQL tanpa mengubah alur kerja yang ada.

Apa itu Autentikasi Aurora DSQL?

Dalam Aurora DSQL, otentikasi melibatkan:

  • Otentikasi IAM: Semua koneksi menggunakan otentikasi berbasis IAM dengan token terbatas waktu

  • Pembuatan Token: Token otentikasi dibuat menggunakan kredensi AWS dan memiliki masa pakai yang dapat dikonfigurasi

Konektor Aurora DSQL untuk Python dirancang untuk memahami persyaratan ini dan secara otomatis menghasilkan token otentikasi IAM saat membuat koneksi.

Fitur

  • Otentikasi IAM Otomatis - Token IAM dihasilkan secara otomatis menggunakan kredensi AWS

  • Dibangun di atas psycopg, psycopg2, dan asyncpg - Memanfaatkan pustaka klien psycopg, psycopg2, dan asyncpg

  • Integrasi Seamless - Bekerja dengan pola koneksi psycopg, psycopg2, dan asyncpg yang ada tanpa memerlukan perubahan alur kerja

  • Region Auto-Discovery - Mengekstrak wilayah AWS dari nama host cluster DSQL

  • AWS Credentials Support - Mendukung berbagai penyedia kredensi AWS (default, berbasis profil, kustom)

  • Kompatibilitas Pengumpulan Koneksi - Bekerja dengan pengumpulan koneksi bawaan psycopg, psycopg2, dan asyncpg

Panduan memulai cepat

Persyaratan

  • Python 3.10 atau lebih tinggi

  • Akses ke cluster Aurora DSQL

  • Siapkan izin IAM yang sesuai untuk memungkinkan aplikasi Anda terhubung ke Aurora DSQL.

  • Kredensi AWS dikonfigurasi (melalui AWS CLI, variabel lingkungan, atau peran IAM)

Penginstalan

pip install aurora-dsql-python-connector

Instal psycopg atau psycopg2 atau asyncpg secara terpisah

Konektor Aurora DSQL untuk penginstal Python tidak menginstal pustaka yang mendasarinya. Mereka perlu diinstal secara terpisah, misalnya:

# Install psycopg and psycopg pool pip install "psycopg[binary,pool]"
# Install psycopg2 pip install psycopg2-binary
# Install asyncpg pip install asyncpg

Catatan:

Hanya perpustakaan yang dibutuhkan yang harus diinstal. Oleh karena itu, jika klien akan menggunakan psycopg, maka hanya psycopg yang perlu diinstal. Jika klien akan menggunakan psycopg2, maka hanya psycopg2 yang perlu diinstal. Jika klien akan menggunakan asyncpg, maka hanya asyncpg yang perlu diinstal.

Jika klien membutuhkan lebih dari satu, maka semua perpustakaan yang dibutuhkan perlu diinstal.

Penggunaan Dasar

psycopg

import aurora_dsql_psycopg as dsql config = { 'host': "your-cluster.dsql.us-east-1.on.aws", 'region': "us-east-1", 'user': "admin", } conn = dsql.connect(**config) with conn.cursor() as cur: cur.execute("SELECT 1") result = cur.fetchone() print(result)

psycopg2

import aurora_dsql_psycopg2 as dsql config = { 'host': "your-cluster.dsql.us-east-1.on.aws", 'region': "us-east-1", 'user': "admin", } conn = dsql.connect(**config) with conn.cursor() as cur: cur.execute("SELECT 1") result = cur.fetchone() print(result)

asyncpg

import asyncio import aurora_dsql_asyncpg as dsql config = { 'host': "your-cluster.dsql.us-east-1.on.aws", 'region': "us-east-1", 'user': "admin", } conn = await dsql.connect(**config) result = await conn.fetchrow("SELECT 1") await conn.close() print(result)

Hanya menggunakan host

psycopg
import aurora_dsql_psycopg as dsql conn = dsql.connect("your-cluster.dsql.us-east-1.on.aws")
psycopg2
import aurora_dsql_psycopg2 as dsql conn = dsql.connect("your-cluster.dsql.us-east-1.on.aws")
asyncpg
import asyncio import aurora_dsql_asyncpg as dsql conn = await dsql.connect("your-cluster.dsql.us-east-1.on.aws")

Hanya menggunakan ID cluster

psycopg
import aurora_dsql_psycopg as dsql conn = dsql.connect("your-cluster")
psycopg2
import aurora_dsql_psycopg2 as dsql conn = dsql.connect("your-cluster")
asyncpg
import asyncio import aurora_dsql_asyncpg as dsql conn = await dsql.connect("your-cluster")

Catatan:

Dalam skenario “hanya menggunakan ID cluster”, wilayah yang telah ditetapkan sebelumnya pada mesin digunakan, misalnya:

aws configure set region us-east-1

Jika wilayah belum disetel, atau ID cluster yang diberikan berada di wilayah yang berbeda, koneksi akan gagal. Untuk membuatnya berfungsi, berikan wilayah sebagai parameter seperti pada contoh di bawah ini:

psycopg
import aurora_dsql_psycopg as dsql config = { "region": "us-east-1", } conn = dsql.connect("your-cluster", **config)
psycopg2
import aurora_dsql_psycopg2 as dsql config = { "region": "us-east-1", } conn = dsql.connect("your-cluster", **config)
asyncpg
import asyncio import aurora_dsql_asyncpg as dsql config = { "region": "us-east-1", } conn = await dsql.connect("your-cluster", **config)

String Koneksi

psycopg

import aurora_dsql_psycopg as dsql conn = dsql.connect("postgresql://your-cluster.dsql.us-east-1.on.aws/postgres?user=admin&token_duration_secs=15")

psycopg2

import aurora_dsql_psycopg2 as dsql conn = dsql.connect("postgresql://your-cluster.dsql.us-east-1.on.aws/postgres?user=admin&token_duration_secs=15")

asyncpg

import asyncio import aurora_dsql_asyncpg as dsql conn = await dsql.connect("postgresql://your-cluster.dsql.us-east-1.on.aws/postgres?user=admin&token_duration_secs=15")

Konfigurasi Lanjutan

psycopg

import aurora_dsql_psycopg as dsql config = { 'host': "your-cluster.dsql.us-east-1.on.aws", 'region': "us-east-1", 'user': "admin", "profile": "default", "token_duration_secs": "15", } conn = dsql.connect(**config) with conn.cursor() as cur: cur.execute("SELECT 1") result = cur.fetchone() print(result)

psycopg2

import aurora_dsql_psycopg2 as dsql config = { 'host': "your-cluster.dsql.us-east-1.on.aws", 'region': "us-east-1", 'user': "admin", "profile": "default", "token_duration_secs": "15", } conn = dsql.connect(**config) with conn.cursor() as cur: cur.execute("SELECT 1") result = cur.fetchone() print(result)

asyncpg

import asyncio import aurora_dsql_asyncpg as dsql config = { 'host': "your-cluster.dsql.us-east-1.on.aws", 'region': "us-east-1", 'user': "admin", "profile": "default", "token_duration_secs": "15", } conn = await dsql.connect(**config) result = await conn.fetchrow("SELECT 1") await conn.close() print(result)

Opsi konfigurasi

Opsi Tipe Diperlukan Deskripsi
host string Ya Nama host cluster DSQL atau ID cluster
user string Tidak Nama pengguna DSQL. Default: admin
dbname string Tidak Nama basis data. Default: postgres
region string Tidak Wilayah AWS (terdeteksi otomatis dari nama host jika tidak disediakan)
port int Tidak Default ke 5432
custom_credentials_provider CredentialProvider Tidak Penyedia kredensi AWS khusus
profile string Tidak Nama profil IAM. Default: default.
token_duration_secs int Tidak Waktu kedaluwarsa token dalam hitungan detik

Semua opsi koneksi standar dari pustaka psycopg, psycopg2, dan asyncpg yang mendasarinya juga didukung, dengan pengecualian parameter asyncpg krbsrvname dan gsslib yang tidak didukung oleh DSQL.

Menggunakan konektor Aurora DSQL untuk Python dengan penyatuan koneksi

Konektor Aurora DSQL untuk Python bekerja dengan psycopg, psycopg2, dan asyncpg built-in connection pooling. Konektor menangani pembuatan token IAM selama pembentukan koneksi, memungkinkan kumpulan koneksi beroperasi secara normal.

psycopg

Untuk psycopg, konektor mengimplementasikan kelas koneksi bernama DSQLConnection yang dapat diteruskan langsung ke psycopg_pool. ConnectionPool konstruktor. Untuk operasi asinkron, ada juga versi async dari kelas bernama Connection. DSQLAsync

from psycopg_pool import ConnectionPool as PsycopgPool ... pool = PsycopgPool( "", connection_class=dsql.DSQLConnection, kwargs=conn_params, min_size=2, max_size=8, max_lifetime=3300 )

Catatan: Konfigurasi koneksi max_lifetime

Parameter max_lifetime harus diatur ke kurang dari 3600 detik (satu jam), karena ini adalah durasi koneksi maksimum yang diizinkan oleh database Aurora DSQL. Menyetel max_lifetime yang lebih rendah memungkinkan kumpulan koneksi untuk secara proaktif mengelola daur ulang koneksi, yang lebih efisien daripada menangani kesalahan batas waktu koneksi dari database.

psycopg2

Untuk psycopg2, konektor menyediakan kelas bernama Aurora DSQLThreaded ConnectionPool yang mewarisi dari psycopg2.pool. ThreadedConnectionPool. DSQLThreadedConnectionPool Kelas Aurora hanya mengganti metode _connect internal. Sisa implementasi disediakan oleh psycopg2.pool. ThreadedConnectionPool tidak berubah.

import aurora_dsql_psycopg2 as dsql pool = dsql.AuroraDSQLThreadedConnectionPool( minconn=2, maxconn=8, **conn_params, )

asyncpg

Untuk asyncpg, konektor menyediakan fungsi create_pool yang mengembalikan instance Asyncpg.pool.

import asyncio import os import aurora_dsql_asyncpg as dsql pool_params = { 'host': "your-cluster.dsql.us-east-1.on.aws", 'user': "admin", "min_size": 2, "max_size": 5, } pool = await dsql.create_pool(**pool_params)

Autentikasi

Konektor secara otomatis menangani otentikasi DSQL dengan menghasilkan token menggunakan generator token klien DSQL. Jika wilayah AWS tidak disediakan, wilayah AWS akan diurai secara otomatis dari nama host yang disediakan.

Untuk informasi selengkapnya tentang otentikasi di Aurora DSQL, lihat panduan pengguna.

Admin vs Pengguna Reguler

  • Pengguna bernama "admin" secara otomatis menggunakan token otentikasi admin

  • Semua pengguna lain menggunakan token otentikasi non-admin

  • Token dihasilkan secara dinamis untuk setiap koneksi

Contoh

Untuk kode contoh lengkap, lihat contoh seperti yang ditunjukkan pada bagian di bawah ini. Untuk petunjuk cara menjalankan contoh, silakan lihat contoh file READMDE.

psycopg

Contoh README

Deskripsi Contoh
Menggunakan Konektor Aurora DSQL untuk Python untuk koneksi dasar Contoh Koneksi Dasar
Menggunakan Konektor Aurora DSQL untuk Python untuk koneksi asinkron dasar Contoh Koneksi Asinkron Dasar
Menggunakan Konektor Aurora DSQL untuk Python dengan kumpulan koneksi Contoh Koneksi Dasar Dengan Connection Pool
Contoh Koneksi Serentak Dengan Connection Pool
Menggunakan Konektor Aurora DSQL untuk Python dengan kumpulan koneksi asinkron Contoh Koneksi Dasar Dengan Kolam Koneksi Asinkron

psycopg2

Contoh README

Deskripsi Contoh
Menggunakan Konektor Aurora DSQL untuk Python untuk koneksi dasar Contoh Koneksi Dasar
Menggunakan Konektor Aurora DSQL untuk Python dengan kumpulan koneksi Contoh Koneksi Dasar Dengan Connection Pool
Contoh Koneksi Serentak Dengan Connection Pool

asyncpg

Contoh README

Deskripsi Contoh
Menggunakan Konektor Aurora DSQL untuk Python untuk koneksi dasar Contoh Koneksi Dasar
Menggunakan Konektor Aurora DSQL untuk Python dengan kumpulan koneksi Contoh Koneksi Dasar Dengan Connection Pool
Contoh Koneksi Serentak Dengan Connection Pool