All Products
Search
Document Center

PolarDB:Mulai menggunakan kompatibilitas DynamoDB

Last Updated:Jun 19, 2026

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.

Catatan

Buka PolarDB console dan periksa versi kluster Anda di halaman Settings and Management > Version Management. 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.

  1. Buka halaman pembelian kustom untuk kluster PolarDB.

  2. Atur menjadi , lalu centang kotak pilihan DynamoDB Compatibility.

  3. Konfigurasikan opsi lain seperti wilayah, zona, dan spesifikasi node.

Buat akun DynamoDB khusus

Buat akun DynamoDB khusus untuk mendapatkan kredensial (AccessKey) guna akses API.

  1. Di halaman Settings and Management > Accounts kluster Anda, klik Create Account.

  2. Atur Account Type menjadi DynamoDB Account, lalu tentukan nama akun dan password.

    Catatan

    Password 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.

  3. Setelah akun dibuat, temukan akun tersebut dalam daftar akun. Nama akun merupakan Access Key ID. Untuk mendapatkan SecretAccess 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.

    Catatan

    Setelah 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=true dalam 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.

    Catatan

    Mengakses 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.

  1. Buka direktori proyek Anda. Contoh ini menggunakan /home/testDynamoDB.

    mkdir /home/testDynamoDB
    cd /home/testDynamoDB
  2. Di direktori /home/testDynamoDB, buat lingkungan virtual (venv) untuk mengisolasi dependensi proyek dan mencegah konflik dengan paket global.

    python3 -m venv myenv
  3. Aktifkan lingkungan virtual.

    source myenv/bin/activate
  4. Instal dependensi Python yang diperlukan.

    pip3 install boto3
  5. Buat file Python dan salin kode berikut ke dalamnya. Ganti endpoint_url, aws_access_key_id, dan aws_secret_access_key dengan titik akhir dan kredensial Akun DynamoDB untuk kluster PolarDB Anda.

    vim main.py
    import 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)
  6. Setelah menjalankan skrip, Anda seharusnya melihat output seperti berikut:

    python3 main.py
    Creating 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.