All Products
Search
Document Center

Tablestore:Gunakan Function Compute

Last Updated:Sep 09, 2026

Function Compute menggunakan arsitektur berbasis event untuk secara otomatis memproses data inkremental dari Tablestore, sehingga memungkinkan respons real-time dan pemrosesan otomatis.

Cara kerja

Function Compute menggunakan Tablestore trigger untuk secara otomatis memproses data inkremental di Tablestore. Saat tabel data dimodifikasi, Tablestore Stream menangkap perubahan tersebut secara real-time. Pemicu ini kemudian memantau aliran data dan secara otomatis memanggil fungsi untuk memproses data baru, sehingga menghasilkan respons segera dan otomatis terhadap peristiwa data.

Pendekatan event-driven ini menghilangkan kebutuhan polling, memastikan pemrosesan data tepat waktu dan mencegah pemborosan sumber daya. Dibandingkan dengan tugas terjadwal tradisional atau pemrosesan manual, Function Compute memberikan kinerja real-time dan otomatisasi yang lebih unggul. Dengan memanfaatkan pemrosesan asinkron dan skalabilitas elastis, kompleksitas sistem serta beban operasional berkurang, sehingga sangat ideal untuk kasus penggunaan yang memerlukan respons langsung terhadap perubahan data, seperti sinkronisasi data, notifikasi event, dan pengarsipan data inkremental.

Selain fungsi event, Function Compute juga mendukung jenis lainnya, seperti Web function dan task function. Jenis fungsi yang berbeda cocok untuk skenario bisnis dan arsitektur teknis yang berbeda. Untuk perbandingan mendetail dan panduan memilih jenis yang sesuai, lihat Pemilihan fungsi.

Akses Tablestore menggunakan fungsi event

Langkah 1: Aktifkan Tablestore Stream

Tablestore trigger di Function Compute (FC) bergantung pada Tablestore Stream untuk menangkap data inkremental. Oleh karena itu, Anda harus terlebih dahulu mengaktifkan fitur ini untuk tabel data target.

Tablestore trigger tersedia di wilayah berikut: Tiongkok (Beijing), Tiongkok (Hangzhou), Tiongkok (Shanghai), Tiongkok (Shenzhen), Jepang (Tokyo), Singapura, Jerman (Frankfurt), dan Tiongkok (Hong Kong).
  1. Masuk ke Konsol Tablestore. Di bilah navigasi atas, pilih wilayah tempat instans Anda berada, lalu klik alias instans target.

  2. Di halaman Instance Details, klik nama tabel data target dalam daftar Tables.

  3. Klik tab Tunnels, lalu klik Enable di sebelah kanan Stream Information.

  4. Pada kotak dialog Enable Stream, atur waktu kedaluwarsa log, lalu klik Enable.

    Waktu kedaluwarsa log harus berupa bilangan bulat bukan nol dalam satuan jam, dengan maksimum 168. Pengaturan ini tidak dapat diubah setelah dikonfigurasi. Atur nilai ini dengan hati-hati.

Langkah 2: Buat dan konfigurasikan fungsi event

Saat membuat Tablestore trigger, Anda hanya dapat memilih instans Tablestore dan tabel data yang berada di wilayah yang sama dengan fungsi tersebut.

  1. Masuk ke Konsol Function Compute. Di bilah navigasi atas, pilih wilayah yang sama dengan instans Tablestore Anda.

  2. Di panel navigasi kiri, pilih Function Management > Functions.

  3. Klik Create Function, pilih Event Function sebagai jenis fungsi, lalu klik Create Event Function.

  4. Konfigurasikan parameter fungsi seperti dijelaskan di bawah ini. Untuk petunjuk lengkap, lihat Buat fungsi event.

    • Function Name: Masukkan nama unik untuk fungsi tersebut. Nama harus unik dalam akun dan wilayah yang sama serta mengikuti konvensi penamaan.

    • Runtime: Kami menyarankan memilih Built-in Runtime dan memilih bahasa serta versi yang Anda kuasai, seperti Python atau Java. Topik ini menggunakan Python 3.12 sebagai contoh.

    • Code Upload Method: Pilih cara mengunggah kode Anda. Topik ini menggunakan Upload ZIP sebagai contoh. Anda dapat mengunduh dan mengunggah file kode contoh: tablestore_trigger_example.zip.

  5. Klik Create.

Langkah 3: Uji dan validasi fungsi event

Sebelum mengonfigurasi Tablestore trigger, uji fungsi tersebut dengan mensimulasikan sebuah event. Tablestore trigger menggunakan format Concise Binary Object Representation (CBOR) untuk encoding, tetapi Anda dapat menggunakan format JSON untuk mensimulasikan event saat debugging.

  1. Di halaman Function Details, klik panah di samping Test Function dan pilih Configure Test Parameters.

  2. Masukkan Event Name, misalnya test-event, tempel contoh event berikut ke editor, lalu klik OK.

    {
        "Version": "Sync-v1",
        "Records": [
            {
                "Type": "PutRow",
                "Info": {
                    "Timestamp": 1506416585740836
                },
                "PrimaryKey": [
                    {
                        "ColumnName": "pk_0",
                        "Value": 1506416585881590900
                    },
                    {
                        "ColumnName": "pk_1",
                        "Value": "2017-09-26 17:03:05.8815909 +0800 CST"
                    },
                    {
                        "ColumnName": "pk_2",
                        "Value": 1506416585741000
                    }
                ],
                "Columns": [
                    {
                        "Type": "Put",
                        "ColumnName": "attr_0",
                        "Value": "hello_table_store",
                        "Timestamp": 1506416585741
                    },
                    {
                        "Type": "Put",
                        "ColumnName": "attr_1",
                        "Value": 1506416585881590900,
                        "Timestamp": 1506416585741
                    }
                ]
            }
        ]
    }
  3. Klik Test Function dan tunggu hingga pengujian selesai. Eksekusi yang berhasil mengembalikan OK. Anda dapat melihat log eksekusi di tab Log Output.

    2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Begin to handle event
    2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] --------------------------------------------------
    2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Event Type: PutRow
    2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Timestamp: 1506416585740836
    2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Primary Keys:
    2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO]   Name: pk_0, Value: 1506416585881590900
    2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO]   Name: pk_1, Value: 2017-09-26 17:03:05.8815909 +0800 CST
    2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO]   Name: pk_2, Value: 1506416585741000
    2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Attribute Columns:
    2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO]   Type: Put, Name: attr_0, Value: hello_table_store, Timestamp: 1506416585741
    2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO]   Type: Put, Name: attr_1, Value: 1506416585881590900, Timestamp: 1506416585741
    2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] --------------------------------------------------

Langkah 4: Konfigurasikan dan validasi pemicu

Setelah menguji dan memvalidasi fungsi, konfigurasikan Tablestore trigger agar fungsi tersebut dieksekusi secara otomatis saat tabel data berubah. Kemudian, verifikasi pemicu tersebut dengan melakukan operasi data.

  1. Di halaman Function Details, klik tab Triggers, lalu klik Create Trigger.

  2. Konfigurasikan parameter pemicu sebagai berikut.

    • Trigger Type: Pilih Tablestore.

    • Name: Masukkan nama kustom untuk pemicu, misalnya test_trigger.

    • Instance: Pilih instans Tablestore target.

    • Table: Pilih tabel data target.

  3. Klik OK.

  4. Sebagai contoh, Anda dapat menyisipkan baris data menggunakan Konsol Tablestore.

  5. Di halaman Function Details, klik tab Logs untuk melihat log pemanggilan dan hasilnya. Di kolom Actions, klik Request Logs untuk permintaan tertentu guna melihat log detailnya.

    2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] Begin to handle event
    2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] --------------------------------------------------
    2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] Event Type: PutRow
    2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] Timestamp: 1763973009228992
    2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] Primary Keys:
    2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO]   Name: id, Value: 8
    2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO]   Name: name, Value: test-name
    2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] Attribute Columns:
    2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO]   Type: Put, Name: age, Value: 18, Timestamp: 1763973009229
    2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] --------------------------------------------------

Batasan

  • Sebagai contoh, fungsi yang dipicu oleh pembaruan pada Tabel A sebaiknya tidak memperbarui Tabel A lagi, karena hal ini akan menyebabkan pemanggilan tak hingga.

  • Jika eksekusi fungsi gagal, Function Compute akan mencoba menjalankan ulang fungsi tersebut hingga data stream di Tablestore kedaluwarsa.

    Catatan
    • Penyimpangan selama eksekusi fungsi dapat terjadi dalam kondisi berikut:

      • Kode fungsi melemparkan exception: Instans fungsi telah dimulai, sehingga Anda dikenai biaya berdasarkan durasi eksekusinya.

      • Fungsi gagal dimulai: Jika instans gagal dimulai karena perintah startup salah atau masalah lainnya, Anda tidak dikenai biaya.

      • Setelah Anda menghapus pemicu, instans fungsi yang sedang berjalan tidak langsung berhenti dan akan terus berjalan hingga selesai atau timeout.

    • Jika eksekusi fungsi gagal, Anda dapat menonaktifkan Tablestore Stream untuk tabel data guna mencegah percobaan ulang tak hingga. Sebelum menonaktifkan fitur ini, pastikan tidak ada pemicu lain yang menggunakan tabel data tersebut agar tidak terjadi gangguan.

FAQ

  • Jika Anda tidak dapat membuat Tablestore trigger, pastikan wilayah yang dipilih mendukung fitur ini.

  • Jika Anda tidak dapat menemukan tabel data yang sudah ada saat membuat Tablestore trigger, pastikan tabel data dan fungsi berada di wilayah yang sama.

  • Jika Anda berulang kali menerima error Invocation canceled by client saat menggunakan Tablestore trigger, hal ini biasanya berarti timeout sisi klien lebih pendek daripada waktu eksekusi fungsi. Untuk mengatasinya, perpanjang periode timeout sisi klien. Untuk informasi lebih lanjut, lihat Apa yang harus saya lakukan jika klien terputus dan melaporkan error 'Invocation canceled by client'?.

  • Jika Tablestore trigger tidak berjalan saat data baru ditambahkan ke tabel data, periksa hal berikut:

    • Pastikan Tablestore Stream telah diaktifkan untuk tabel data tersebut.

    • Verifikasi bahwa peran yang dikonfigurasi untuk pemicu sudah benar. Anda dapat menggunakan peran pemicu default, AliyunTableStoreStreamNotificationRole.

    • Periksa log fungsi untuk melihat apakah eksekusi gagal. Jika fungsi gagal, Function Compute akan mencoba menjalankannya kembali hingga data stream di Tablestore kedaluwarsa.