Panduan ini memandu Anda membuat kluster dan melakukan koneksi pertama ke fitur kompatibel DynamoDB dari dan .
Persyaratan
Sebelum menggunakan fitur kompatibilitas DynamoDB, pastikan kluster Anda memenuhi persyaratan berikut:
Versi database proxy: 2.3.63.1 atau lebih baru.
Buka PolarDB console dan periksa versi kluster Anda di halaman . Jika versinya tidak memenuhi persyaratan, .
Aktifkan fitur kompatibel DynamoDB
Anda dapat mengaktifkan fitur kompatibel DynamoDB untuk suatu kluster dengan salah satu dari dua cara berikut.
Kluster yang sudah ada
Jika kluster Anda memenuhi Persyaratan, buka halaman Basic Information kluster tersebut. Temukan pengaturan DynamoDB Compatibility dan klik On.
Kluster baru
Jika kluster Anda tidak memenuhi Persyaratan atau Anda ingin menggunakan fitur ini pada kluster baru, Anda dapat membuat kluster baru di PolarDB console.
Atur menjadi , lalu centang kotak pilihan DynamoDB Compatibility.
Konfigurasikan opsi lain seperti wilayah, zona, dan spesifikasi node.
Buat akun DynamoDB khusus
Buat akun DynamoDB khusus untuk mendapatkan kredensial (AccessKey) guna akses API.
Di halaman kluster Anda, klik Create Account.
Atur Account Type menjadi DynamoDB Account, lalu tentukan nama akun dan password.
CatatanPassword ini hanya digunakan untuk mengelola akun di konsol, bukan untuk akses API.
Sebagai contoh, atur nama akun menjadi
dynamodb_user. Nama akun harus dimulai dengan huruf, diakhiri dengan huruf atau angka, hanya boleh berisi huruf kecil, angka, dan garis bawah (_), serta tidak boleh melebihi 16 karakter. Password harus terdiri dari 8 hingga 32 karakter dan mencakup minimal tiga jenis karakter berikut: huruf kapital, huruf kecil, angka, dan karakter khusus.Setelah akun dibuat, temukan akun tersebut dalam daftar akun. Nama akun merupakan
Access Key ID. Untuk mendapatkanSecretAccess Key, klik View pada kolom Key.
Konfigurasikan titik akhir DynamoDB
Setelah Anda mengaktifkan fitur kompatibel DynamoDB, sistem secara otomatis membuat titik akhir DynamoDB default. Anda juga dapat membuat titik akhir kustom.
Di halaman Basic Information kluster, temukan DynamoDB default yang dibuat sistem di bagian Database Connections.
Kartu DynamoDB Endpoint ini menampilkan mode sebagai Read/Write Splitting dan mencantumkan titik akhir koneksi privat serta EndpointId. Anda dapat mengelolanya melalui tautan Release dan Configure.
(Opsional) Klik Create Custom Cluster Endpoint dan atur jenis titik akhir menjadi DynamoDB. Anda kemudian dapat menentukan node yang akan disambungkan dan menetapkan tingkat konsistensi data untuk titik akhir ini.
CatatanSetelah tingkat konsistensi ditetapkan pada titik akhir kustom, semua permintaan baca ke titik akhir tersebut akan mengikuti pengaturan tersebut. Anda tidak dapat mengganti tingkat konsistensi yang telah ditetapkan dengan menggunakan parameter
ConsistentRead=truedalam satu permintaan API.Dalam dialog ini, Anda juga dapat mengonfigurasi parameter lain seperti Read/Write Mode (misalnya, Read/Write Splitting), Endpoint Name, Load Balancing, Connection Pool, dan Add New Nodes Automatically. Setelah konfigurasi selesai, klik OK.
Metode koneksi dan daftar putih
Pilih metode koneksi berdasarkan lokasi server atau klien Anda.
Koneksi privat (Direkomendasikan): Jika aplikasi Anda dideploy pada ECS Alibaba Cloud, pastikan instans ECS dan kluster PolarDB berada dalam VPC yang sama. Anda juga perlu menambahkan alamat IP atau security group instans ECS ke kluster.
Koneksi Internet: Jika Anda perlu mengembangkan dan menguji di lingkungan lokal, atau jika instans ECS dan kluster PolarDB tidak berada dalam VPC yang sama, Anda dapat mengajukan titik akhir internet untuk DynamoDB di bagian Database Connections pada halaman Basic Information kluster. Anda juga perlu menambahkan alamat IP lingkungan lokal atau alamat IP publik instans ECS ke kluster.
Pada kartu DynamoDB Endpoint, klik Apply for Public Endpoint di samping titik akhir yang dituju. Sistem kemudian akan menghasilkan informasi titik akhir internet dan port yang sesuai.
CatatanMengakses kluster Anda melalui internet menimbulkan risiko keamanan. Kami merekomendasikan agar Anda hanya menggunakan titik akhir internet untuk pengembangan dan pengujian sementara. Lepaskan titik akhir internet setelah selesai.
Koneksi dan verifikasi
Gunakan kode Python berikut dengan SDK Boto3 untuk memverifikasi konfigurasi Anda. Contoh ini menggunakan instans ECS yang menjalankan sistem operasi Alibaba Cloud Linux 3.2104 LTS 64-bit.
Buka direktori proyek Anda. Contoh ini menggunakan
/home/testDynamoDB.mkdir /home/testDynamoDB cd /home/testDynamoDBDi direktori
/home/testDynamoDB, buatlingkungan virtual(venv) untuk mengisolasi dependensi proyek dan mencegah konflik dengan paket global.python3 -m venv myenvAktifkan lingkungan virtual.
source myenv/bin/activateInstal dependensi Python yang diperlukan.
pip3 install boto3Buat file Python dan salin kode berikut ke dalamnya. Ganti
endpoint_url,aws_access_key_id, danaws_secret_access_keydengan titik akhir dan kredensial Akun DynamoDB untuk kluster PolarDB Anda.vim main.pyimport boto3 from botocore.exceptions import ClientError # 1. Konfigurasikan detail koneksi Anda # Titik akhir untuk fitur kompatibel DynamoDB kluster PolarDB Anda. endpoint_url = "http://<your-polardb-ddb-endpoint>:<port>" # Access Key ID dari akun DynamoDB Anda. aws_access_key_id = "<your-access-key-id>" # Secret Access Key dari akun DynamoDB Anda. aws_secret_access_key = "<your-secret-access-key>" # Untuk fitur kompatibel DynamoDB PolarDB, region_name harus diatur ke "public". region_name = "public" # 2. Buat klien resource DynamoDB dynamodb = boto3.resource( 'dynamodb', endpoint_url=endpoint_url, aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, region_name=region_name, ) table_name = 'usertable' # 3. Definisikan fungsi untuk operasi database def create_table(): """Membuat tabel, atau mengambilnya jika sudah ada.""" try: table = dynamodb.create_table( TableName=table_name, KeySchema=[{'AttributeName': 'userid', 'KeyType': 'HASH'}], # Kunci partisi AttributeDefinitions=[{'AttributeName': 'userid', 'AttributeType': 'S'}] # ProvisionedThroughput bersifat opsional dan diabaikan oleh PolarDB. ) print("Membuat tabel... Menunggu hingga aktif.") table.meta.client.get_waiter('table_exists').wait(TableName=table_name) print("Tabel aktif!") return table except ClientError as e: if e.response['Error']['Code'] == 'ResourceInUseException': print("Tabel sudah ada.") return dynamodb.Table(table_name) else: raise def put_items(table): """Memasukkan beberapa item ke dalam tabel.""" users = [ {'userid': 'user01', 'name': 'Alice', 'age': 24}, {'userid': 'user02', 'name': 'Bob', 'age': 30}, {'userid': 'user03', 'name': 'Charlie', 'age': 28} ] for user in users: table.put_item(Item=user) print("Memasukkan 3 item.") def scan_table(table): """Memindai dan mencetak semua item dalam tabel.""" response = table.scan() items = response.get('Items', []) print(f"Memindai {len(items)} item:") for item in items: print(item) def delete_table(table): """Menghapus tabel.""" table.delete() print("Menghapus tabel... Menunggu hingga dihapus.") table.meta.client.get_waiter('table_not_exists').wait(TableName=table_name) print("Tabel berhasil dihapus.") # 4. Jalankan proses verifikasi if __name__ == '__main__': try: user_table = create_table() put_items(user_table) scan_table(user_table) finally: # Pastikan tabel dibersihkan meskipun terjadi kesalahan. if 'user_table' in locals(): delete_table(user_table)Setelah menjalankan skrip, Anda seharusnya melihat output seperti berikut:
python3 main.pyCreating table... Waiting for it to become active. Table is active! Inserted 3 items. Scanned 3 items: {'age': Decimal('24'), 'name': 'Alice', 'userid': 'user01'} {'age': Decimal('30'), 'name': 'Bob', 'userid': 'user02'} {'age': Decimal('28'), 'name': 'Charlie', 'userid': 'user03'} Deleting table... Waiting for it to be removed. Table deleted successfully.Output ini mengonfirmasi koneksi berhasil dan memverifikasi konfigurasi Anda.