全部产品
Search
文档中心

Tablestore:Gunakan Function Compute

更新时间:Nov 26, 2025

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

Cara kerja

Function Compute secara otomatis memproses data inkremental dari Tablestore melalui Tablestore trigger. Ketika terjadi perubahan pada tabel data, Tablestore Stream menangkap perubahan tersebut secara real-time. Pemicu ini mendengarkan perubahan dalam aliran dan secara otomatis memanggil fungsi yang sesuai untuk diproses, sehingga memastikan respons dan pemrosesan data secara real-time.

Pendekatan event-driven ini menghilangkan kebutuhan untuk melakukan polling terhadap perubahan data, sehingga memastikan pemrosesan tepat waktu dan menghindari pemborosan sumber daya. Dibandingkan dengan tugas terjadwal tradisional atau metode manual, Function Compute menawarkan kinerja real-time dan otomatisasi yang lebih baik. Melalui pemrosesan asinkron dan skalabilitas elastis, Function Compute mengurangi kompleksitas sistem serta biaya Operasi dan Pemeliharaan (O&M), menjadikannya ideal untuk skenario yang memerlukan respons real-time terhadap perubahan data—seperti sinkronisasi data, notifikasi event, dan pengarsipan data inkremental.

Selain fungsi berbasis event, Function Compute juga mendukung jenis lainnya, seperti Web function dan task function. Jenis fungsi yang berbeda cocok untuk kebutuhan skenario bisnis dan arsitektur teknis yang berbeda pula. Untuk informasi selengkapnya mengenai jenis fungsi dan cara memilih yang tepat, lihat Pemilihan fungsi.

Akses Tablestore menggunakan fungsi event

Langkah 1: Aktifkan fitur Stream pada tabel data

Pemicu Tablestore di Function Compute (FC) bergantung pada fitur Stream untuk mengambil perubahan data inkremental dari tabel data. Anda harus terlebih dahulu mengaktifkan fitur Stream pada tabel data target.

Pemicu Tablestore didukung 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 berada, lalu klik alias instans target.

  2. Pada 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 Log Expiration Time, lalu klik Enable.

    Log Expiration Time harus berupa bilangan bulat bukan nol dalam satuan jam. Nilai maksimum adalah 168 jam. Durasi masa berlaku log tidak dapat diubah setelah ditetapkan. Tetapkan nilai ini dengan hati-hati.

Langkah 2: Buat dan konfigurasikan fungsi event

Saat membuat pemicu Tablestore, Anda hanya dapat memilih instans dan tabel data Tablestore yang berada di wilayah yang sama dengan fungsi saat ini. Pastikan fungsi dan tabel data target berada di wilayah yang sama.

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

  2. Di panel navigasi sebelah kiri, klik Function Management > Functions.

  3. Klik Create Function, pilih Event Function, lalu klik Create Event Function.

  4. Konfigurasikan parameter fungsi sebagai berikut. Untuk petunjuk konfigurasi lengkap, lihat Buat fungsi event.

    • Function Name: Nama fungsi. Nama harus unik dalam akun dan wilayah yang sama serta mematuhi konvensi penamaan.

    • Runtime: Kami menyarankan Anda memilih Built-in Runtime dan bahasa serta versi yang sudah dikenal, seperti Python dan Java. Contoh ini menggunakan Python 3.12.

    • Code Upload Method: Pilih metode untuk mengunggah kode ke Function Compute. Pada contoh ini, pilih Upload ZIP. Anda dapat mengunduh dan mengunggah kode contoh tablestore_trigger_example.zip.

  5. Klik Create untuk membuat fungsi.

Langkah 3: Uji dan validasi fungsi event

Sebelum mengonfigurasi pemicu Tablestore, uji fungsi dengan mensimulasikan sebuah event. Pemicu Tablestore menggunakan format CBOR untuk enkode. Untuk pengujian, Anda dapat mensimulasikannya dengan format JSON.

  1. Pada halaman Function Details, klik panah tarik-turun di samping Test Function, lalu klik Configure Test Parameters.

  2. Masukkan Event Name, misalnya test-event, masukkan event contoh berikut di editor teks, 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. Jika eksekusi berhasil, OK dikembalikan. Klik Log Output untuk melihat log eksekusi.

    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 pemicu Tablestore agar secara otomatis merespons perubahan pada tabel data. Kemudian, verifikasi fungsionalitas pemicu dengan melakukan operasi data.

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

  2. Konfigurasikan parameter pemicu sebagai berikut.

    • Trigger Type: Pilih Tablestore.

    • Name: Masukkan nama pemicu kustom, misalnya test_trigger.

    • Instance: Pilih instans Tablestore target.

    • Table: Pilih tabel data target.

  3. Klik OK untuk membuat pemicu.

  4. Sisipkan atau perbarui satu baris data di tabel data Tablestore. Contoh ini menunjukkan cara menyisipkan baris di Konsol Tablestore.

  5. Pada halaman Function Details, klik tab Logs untuk melihat log pemanggilan fungsi dan hasilnya. Di kolom Actions, klik Request Logs untuk melihat informasi log secara detail.

    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] --------------------------------------------------

Kuota dan batasan

  • Saat menulis kode fungsi, hindari loop logika. Misalnya, jangan mengonfigurasi pemicu untuk Tabel A agar memanggil fungsi yang memperbarui data di Tabel A, karena hal ini akan menyebabkan pemanggilan fungsi tanpa henti.

  • Jika terjadi pengecualian selama eksekusi fungsi, fungsi akan dicoba ulang terus-menerus hingga data log di Tablestore kedaluwarsa.

    Catatan
    • Pengecualian eksekusi fungsi dapat terjadi dalam situasi berikut:

      • Kode fungsi melemparkan pengecualian: Instans fungsi telah dimulai, dan Anda dikenai biaya atas waktu eksekusinya.

      • Fungsi gagal dimulai: Instans fungsi tidak dimulai karena perintah startup salah atau alasan lainnya. Anda tidak dikenai biaya dalam kasus ini.

    • Jika terjadi pengecualian eksekusi fungsi, nonaktifkan fitur Stream pada tabel data untuk mencegah percobaan ulang tanpa henti. Sebelum menonaktifkan fitur Stream, pastikan tidak ada pemicu lain yang menggunakan tabel data tersebut agar tidak memengaruhi pemicu lainnya.

FAQ

  • Jika Anda tidak dapat membuat pemicu Tablestore di wilayah tertentu, periksa daftar wilayah yang didukung.

  • Jika Anda tidak dapat menemukan tabel data Tablestore saat membuat pemicu Tablestore, pastikan tabel data Tablestore dan layanan Function Compute berada di wilayah yang sama.

  • Jika kesalahan yang menunjukkan bahwa klien membatalkan permintaan dilaporkan berulang kali saat menggunakan pemicu Tablestore, hal ini biasanya terjadi karena periode timeout yang ditetapkan pada klien lebih pendek daripada waktu eksekusi fungsi. Kami menyarankan Anda menambah periode timeout klien. Untuk informasi selengkapnya, lihat Apa yang harus saya lakukan jika klien terputus dan muncul error "Invocation canceled by client"?.

  • Jika data baru ditambahkan ke tabel data Tablestore tetapi pemicu Tablestore tidak dipanggil, lakukan pemecahan masalah dengan memeriksa hal-hal berikut:

    • Periksa apakah fitur Stream diaktifkan untuk tabel data tersebut.

    • Periksa apakah peran yang dikonfigurasi untuk pemicu sudah benar. Anda dapat menggunakan peran pemicu default AliyunTableStoreStreamNotificationRole.

    • Periksa log eksekusi fungsi untuk menentukan apakah fungsi gagal dijalankan. Jika fungsi gagal, fungsi tersebut akan dicoba ulang hingga data log di Tablestore kedaluwarsa.