全部产品
Search
文档中心

Function Compute:Pemicu Tablestore

更新时间:Jul 06, 2025

Tablestore adalah layanan penyimpanan data NoSQL terdistribusi yang dibangun di atas sistem Apsara. Anda dapat membuat pemicu Tablestore untuk menghubungkan Tablestore sebagai sumber acara Function Compute. Fungsi dalam Function Compute secara otomatis dipicu untuk memproses data Tablestore ketika acara tertentu terjadi.

Skenario

Gambar berikut menunjukkan skenario tipikal dari pemicu Tablestore.

image

Sumber data menyimpan data ke Tabel A. Pembaruan data memicu fungsi untuk membersihkan data dan menyimpan data yang telah dibersihkan ke Tabel B untuk pembacaan langsung. Seluruh proses ini merupakan aplikasi web serverless yang elastis dan scalable.

Sebelum Anda mulai

Batasan

  • Pemicu Tablestore didukung di wilayah berikut: Cina (Beijing), Cina (Hangzhou), Cina (Shanghai), Cina (Shenzhen), Jepang (Tokyo), Singapura, Jerman (Frankfurt), dan Cina (Hong Kong).

  • Tabel Tablestore harus berada di wilayah yang sama dengan layanan Function Compute yang terkait.

  • Jika Anda ingin mengakses fungsi yang terkait dengan pemicu Tablestore melalui jaringan internal, gunakan titik akhir VPC Tablestore dengan format berikut: {instance}.{region}.vpc.tablestore.aliyuncs.com. Jangan gunakan titik akhir internal Tablestore dalam kasus ini.

  • Durasi eksekusi fungsi yang dipicu tidak boleh melebihi satu menit.

Catatan Penggunaan

  • Hindari loop pemanggilan saat menulis kode fungsi. Dalam loop pemanggilan, Tabel A memicu Fungsi B untuk memperbarui data di Tabel A, yang pada gilirannya memicu Fungsi B lagi.

  • Jika terjadi kesalahan selama eksekusi fungsi, fungsi akan terus mencoba hingga data log di Tablestore kedaluwarsa.

Langkah 1: Aktifkan fitur stream untuk tabel data

Sebelum membuat pemicu, aktifkan fitur Stream untuk tabel data di konsol Tablestore agar fungsi dapat memproses data tambahan yang ditulis ke tabel.

  1. Masuk ke konsol Tablestore.

  2. Di bilah navigasi atas, pilih wilayah.

  3. Di halaman Overview, klik alias instans atau klik Manage Instance di kolom Actions.

  4. Di tab Instance Details, klik tab Data Tables. Lalu, klik nama tabel data dan pilih tab Stream, atau klik fig_001 dan pilih Stream.

  5. Di tab Stream, klik Enable di sebelah Informasi Stream.

  6. Di kotak dialog Enable Stream, atur parameter Waktu Kedaluwarsa Log dan klik Enable.

    Nilai parameter Waktu Kedaluwarsa Log harus berupa bilangan bulat non-nol. Unit: jam. Nilai maksimum: 168.

    Penting

    Parameter Waktu Kedaluwarsa Log tidak dapat diubah setelah ditentukan. Lanjutkan dengan hati-hati.

Langkah 2: Buat pemicu Tablestore

  1. Masuk ke konsol Function Compute.

  2. Di panel navigasi sisi kiri, klik Services & Functions.

  3. Di bilah navigasi atas, pilih wilayah.

  4. Di halaman Services, temukan layanan yang diinginkan dan klik Functions di kolom Actions.

  5. Di halaman Functions, klik fungsi yang ingin Anda kelola.

  6. Di halaman detail fungsi, klik tab Triggers, pilih versi atau alias dari daftar drop-down Version or Alias, lalu klik Create Trigger.

  7. Di panel Buat Pemicu, konfigurasikan parameter dan klik OK.

    Parameter

    Deskripsi

    Contoh

    Tipe Pemicu

    Pilih Tablestore.

    Tablestore

    Parameter

    Masukkan nama pemicu kustom.

    Tablestore-trigger

    Versi atau Alias

    Nilai default adalah LATEST. Jika Anda ingin membuat pemicu untuk versi atau alias lain, pilih versi atau alias dari daftar drop-down Version or Alias di halaman detail fungsi. Untuk informasi lebih lanjut tentang versi dan alias, lihat Kelola versi dan Kelola alias.

    LATEST

    Instans

    Pilih instans Tablestore dari daftar drop-down.

    d00dd8xm****

    Tabel

    Pilih tabel dari daftar drop-down.

    mytable

    Nama Peran

    Pilih AliyunTableStoreStreamNotificationRole.

    Catatan

    Jika ini pertama kalinya Anda membuat pemicu jenis ini, klik Authorize Now di pesan yang muncul.

    AliyunTableStoreStreamNotificationRole

    Setelah pemicu dibuat, pemicu tersebut akan ditampilkan di tab Triggers. Untuk memodifikasi atau menghapus pemicu yang ada, lihat Kelola pemicu.

Langkah 3: Konfigurasikan parameter input fungsi

  1. Di halaman detail fungsi, klik tab Code, klik ikon xialatubiao di sebelah Test Function, dan pilih Configure Test Parameters dari daftar drop-down.

  2. Di panel Configure Test Parameters, pilih tab Create New Test Event atau Modify Existing Test Event, konfigurasikan Event Name dan isi acara di editor kode, lalu klik OK.

    Pemicu Tablestore mengkodekan data tambahan dalam format Concise Binary Object Representation (CBOR) untuk membangun parameter acara Function Compute. Contoh kode berikut memberikan contoh:

    {
        "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
                    }
                ]
            }
        ]
    }

    Tabel berikut menjelaskan bidang dalam acara.

    Bidang

    Deskripsi

    Version

    Versi payload. Contoh: Sync-v1. Nilainya adalah string.

    Records

    Array yang menyimpan baris data tambahan dalam tabel. Parameter ini mencakup bidang berikut:

    • Type: tipe operasi yang dilakukan pada baris. Nilai valid: PutRow, UpdateRow, dan DeleteRow. Nilainya adalah string.

    • Info: informasi tentang baris, termasuk parameter Timestamp, yang menentukan waktu terakhir kali baris dimodifikasi. Waktu harus dalam UTC. Nilainya bertipe "Int64."

    PrimaryKey

    Array yang menyimpan kolom kunci utama. Parameter ini mencakup bidang berikut:

    • ColumnName: nama kolom kunci utama. Nilainya adalah string.

    • Value: konten kolom kunci utama. Nilainya bertipe formated_value, yang bisa berupa Integer, String, atau Blob.

    Columns

    Array yang menyimpan kolom atribut. Parameter ini mencakup bidang berikut:

    • Type: tipe operasi yang dilakukan pada kolom atribut. Nilai valid: Put, DeleteOneVersion, dan DeleteAllVersions. Nilainya adalah string.

    • ColumnName: nama kolom atribut. Nilainya adalah string.

    • Value: konten kolom atribut. Nilainya bertipe formatted_value, yang bisa berupa Integer, Boolean, Double, String, atau Blob.

    • Timestamp: waktu terakhir kali kolom atribut dimodifikasi. Waktu harus dalam UTC. Nilainya bertipe "Int64."

Langkah 4: Tulis dan uji fungsi

Setelah membuat pemicu Tablestore, tulis kode fungsi dan uji fungsi untuk memverifikasi apakah kode tersebut benar. Fungsi secara otomatis dipicu ketika data di Tablestore diperbarui.

  1. Di halaman detail fungsi, klik tab Code, masukkan kode fungsi di editor kode, lalu klik Deploy.

    Dalam contoh ini, kode fungsi ditulis dalam Python. Untuk informasi lebih lanjut tentang cara menulis fungsi dalam lingkungan runtime lainnya, lihat Contoh pemanggilan Function Compute menggunakan pemicu Tablestore.

    import logging
    import cbor
    import json
     def get_attribute_value(record, column):
         attrs = record[u'Columns']
         for x in attrs:
             if x[u'ColumnName'] == column:
                 return x['Value']
     def get_pk_value(record, column):
         attrs = record[u'PrimaryKey']
         for x in attrs:
             if x['ColumnName'] == column:
                 return x['Value']
     def handler(event, context):
         logger = logging.getLogger()
         logger.info("Mulai menangani acara")
         #records = cbor.loads(event)
         records = json.loads(event)
         for record in records['Records']:
             logger.info("Tangani rekaman: %s", record)
             pk_0 = get_pk_value(record, "pk_0")
             attr_0 = get_attribute_value(record, "attr_0")
         return 'OK'
  2. Di tab Code, klik Test Function.

    Setelah fungsi dieksekusi, Anda dapat melihat hasilnya di tab Code.

Referensi

  • Jika Anda gagal membuat pemicu Tablestore di wilayah tertentu, periksa apakah wilayah tersebut mendukung pemicu Tablestore. Untuk informasi lebih lanjut, lihat Batasan.

  • Jika Anda tidak dapat menemukan tabel Tablestore yang telah dibuat saat membuat pemicu Tablestore, periksa apakah tabel tersebut berada di wilayah yang sama dengan layanan Function Compute yang terkait.

  • Dalam banyak kasus, jika kesalahan yang menunjukkan bahwa klien membatalkan pemanggilan terus dilaporkan saat Anda menggunakan pemicu Tablestore, periode timeout yang dikonfigurasi untuk eksekusi fungsi di klien lebih pendek daripada durasi eksekusi fungsi. Dalam kasus ini, kami sarankan Anda meningkatkan periode timeout klien. Untuk informasi lebih lanjut, lihat Apa yang harus saya lakukan jika klien terputus dan pesan "Invocation canceled by client" dilaporkan?

  • Jika data ditambahkan ke tabel Tablestore tetapi pemicu Tablestore yang terkait tidak dipicu, Anda dapat mendiagnosis masalah dengan melakukan langkah-langkah berikut. Untuk informasi lebih lanjut tentang cara mendiagnosis kegagalan pemicu, lihat Apa yang harus saya lakukan jika pemicu tidak dapat memicu eksekusi fungsi?

    • Periksa apakah fitur Stream diaktifkan untuk tabel. Untuk informasi lebih lanjut, lihat Langkah 1: Aktifkan fitur stream untuk tabel data.

    • Periksa apakah peran yang benar dikonfigurasi saat Anda membuat pemicu. Anda dapat menggunakan peran pemicu default AliyunTableStoreStreamNotificationRole. Untuk informasi lebih lanjut, lihat Langkah 2: Buat pemicu Tablestore.

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