All Products
Search
Document Center

PolarDB:Mulai menggunakan kompatibilitas DynamoDB

Last Updated:Jul 29, 2026

Panduan ini memandu Anda melalui proses pembuatan kluster dan membuat koneksi pertama ke fitur yang kompatibel dengan DynamoDB dari PolarDB for PostgreSQL dan .

Persyaratan

Sebelum menggunakan fitur kompatibilitas DynamoDB, pastikan kluster Anda memenuhi persyaratan berikut:

  • Versi kernel:

    • PostgreSQL 16, dengan versi minor kernel 2.0.16.13.16.0 atau lebih baru.

  • 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 versi tidak memenuhi persyaratan, tingkatkan versi minor.

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 mesin database ke PostgreSQL 16, 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 tetapkan 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 oleh sistem di bagian Database Connections.

  • (Opsional) Klik Create Custom Cluster Endpoint dan atur tipe titik akhir menjadi DynamoDB. Anda kemudian dapat menentukan node yang akan disambungkan dan menetapkan tingkat konsistensi data untuk titik akhir ini.

Metode koneksi dan daftar putih

Pilih metode koneksi berdasarkan lokasi server atau client Anda.

  • Koneksi privat (Direkomendasikan) Jika aplikasi Anda dideploy di ECS Alibaba Cloud, pastikan instance ECS dan kluster PolarDB berada dalam VPC yang sama. Anda juga perlu menambahkan alamat IP atau security group instance ECS ke daftar putih kluster.

  • Koneksi Internet Jika Anda perlu mengembangkan dan menguji di lingkungan lokal, atau jika instance 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 Anda atau alamat IP publik instance ECS ke daftar putih kluster.

    Pada kartu DynamoDB Endpoint, klik Apply for Public Endpoint di sebelah titik akhir yang dituju. Sistem kemudian akan menghasilkan titik akhir internet dan informasi 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 instance 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 client 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'}], # Partition key
                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("Menyisipkan 3 item.")
    def scan_table(table):
        """Memindai dan mencetak semua item dalam tabel."""
        response = table.scan()
        items = response.get('Items', [])
        print(f"Dipindai {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 error.
            if 'user_table' in locals():
                delete_table(user_table)
  6. Setelah menjalankan skrip, Anda seharusnya melihat output seperti berikut:

    python3 main.py
    Membuat tabel... Menunggu hingga aktif.
    Tabel aktif!
    Menyisipkan 3 item.
    Dipindai 3 item:
    {'age': Decimal('24'), 'name': 'Alice', 'userid': 'user01'}
    {'age': Decimal('30'), 'name': 'Bob', 'userid': 'user02'}
    {'age': Decimal('28'), 'name': 'Charlie', 'userid': 'user03'}
    Menghapus tabel... Menunggu hingga dihapus.
    Tabel berhasil dihapus.

    Output ini mengonfirmasi koneksi yang berhasil dan memverifikasi konfigurasi Anda.