全部产品
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 dari Function Compute. Fungsi dalam Function Compute secara otomatis dipicu untuk memproses data Tablestore ketika peristiwa tertentu terjadi.

Skenario

Gambar berikut menunjukkan skenario tipikal dari pemicu Tablestore.

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

Prasyarat

  • Function Compute

    • Fungsi telah dibuat. Untuk informasi lebih lanjut, lihat bagian Buat fungsi dari topik "Kelola fungsi".

  • Tablestore

    • Instansi Tablestore telah dibuat. Untuk informasi lebih lanjut, lihat Buat instansi.

    • Tabel telah dibuat. Untuk informasi lebih lanjut, lihat Buat tabel.

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 terkait di Function Compute.

  • Jika Anda ingin mengakses Tablestore melalui jaringan internal, Anda dapat menggunakan titik akhir Virtual Private Cloud (VPC), yang memiliki format berikut: {instance}.{region}.vpc.tablestore.aliyuncs.com.

  • Durasi eksekusi fungsi yang dipicu oleh pemicu Tablestore tidak boleh melebihi 1 menit.

Perhatian

  • Hindari loop pemanggilan saat Anda menulis kode fungsi. Sebagai contoh, logika berikut menyebabkan 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.

    Catatan
    • Kesalahan eksekusi fungsi terjadi dalam salah satu skenario berikut:

      • Instance fungsi dimulai tetapi kode fungsi tidak berjalan seperti yang diharapkan. Dalam hal ini, biaya akan dikenakan untuk instance tersebut.

      • Instance fungsi gagal dimulai karena alasan seperti kesalahan perintah startup. Dalam hal ini, biaya tidak akan dikenakan untuk instance tersebut.

    • Jika terjadi kesalahan eksekusi fungsi, Anda dapat menonaktifkan fitur Stream untuk tabel data untuk mencegah fungsi dicoba ulang tanpa batas kali. Sebelum Anda menonaktifkan fitur Stream, pastikan bahwa tidak ada pemicu lain yang menggunakan tabel data. Jika tidak, pemicu-pemicu tersebut mungkin tidak bekerja seperti yang diharapkan.

Langkah 1: Aktifkan fitur stream untuk tabel data

Sebelum membuat pemicu, Anda harus mengaktifkan 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 instansi atau klik Manage Instance di kolom Actions.

  4. Di tab Instance Details, klik tab Data Tables. Kemudian, 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 integer non-nol. Satuan: 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. Di panel navigasi kiri, klik Functions.

  2. Di bilah navigasi atas, pilih wilayah. Di halaman Functions, klik fungsi yang ingin Anda kelola.

  3. Di halaman Detail Fungsi, klik tab Configurations. Di panel navigasi kiri, klik Triggers. Kemudian, klik Create Trigger.

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

    Parameter

    Deskripsi

    Contoh

    Trigger Type

    Jenis pemicu. Pilih Tablestore.

    Tablestore

    Name

    Nama pemicu.

    Tablestore-trigger

    Version or Alias

    Versi atau alias pemicu. Nilai default: 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

    Instance

    Nama instansi Tablestore yang ada.

    d00dd8xm****

    Table

    Nama tabel yang ada.

    mytable

    Role Name

    Pilih AliyunTableStoreStreamNotificationRole.

    Catatan

    Setelah Anda mengonfigurasi parameter di atas, klik OK. Jika Anda membuat pemicu jenis ini untuk pertama kalinya, klik Authorize Now di kotak dialog yang muncul.

    AliyunTableStoreStreamNotificationRole

    Setelah pemicu dibuat, pemicu tersebut ditampilkan di tab Triggers. Untuk memodifikasi atau menghapus pemicu, lihat Manajemen Pemicu.

Langkah 3: Konfigurasikan parameter input fungsi

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

  2. Di panel Configure Test Parameters, klik tab Create New Test Event atau Modify Existing Test Event, masukkan nama acara dan konten acara, lalu klik OK.

    Pemicu Tablestore mengkodekan data tambahan dalam format Concise Binary Object Representation (CBOR) untuk membangun acara yang digunakan untuk memanggil fungsi di Function Compute. Contoh kode berikut memberikan contoh format konten acara:

    {
        "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.

    Parameter

    Deskripsi

    Version

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

    Records

    Array yang menyimpan baris data tambahan dalam tabel. Setiap elemen berisi parameter berikut:

    • Type: jenis 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 baris dimodifikasi. Waktu harus dalam UTC. Nilainya bertipe INT64.

    PrimaryKey

    Array yang menyimpan kolom kunci utama. Setiap elemen berisi parameter berikut:

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

    • Value: nilai kolom kunci utama. Nilainya bertipe formated_value, yang bisa berupa INTEGER, STRING, atau BLOB.

    Columns

    Array yang menyimpan kolom atribut. Setiap elemen berisi parameter berikut:

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

    • ColumnName: nama kolom atribut. Nilainya adalah string.

    • Value: nilai kolom atribut. Nilainya bertipe formatted_value, yang bisa berupa INTEGER, BOOLEAN, DOUBLE, STRING, atau BLOB.

    • Timestamp: waktu terakhir kolom atribut dimodifikasi. Waktu harus dalam UTC. Nilainya bertipe INT64.

Langkah 4: Tulis dan uji kode fungsi

Setelah membuat pemicu Tablestore, Anda dapat menulis kode fungsi dan menguji kode fungsi untuk memverifikasi apakah kode tersebut valid. Fungsi secara otomatis dipanggil 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 kode fungsi di lingkungan runtime lainnya, lihat Gunakan Tablestore untuk memicu Function Compute dalam runtime Node.js, PHP, Java, dan C#.

    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("Menangani rekaman: %s", record)
             pk_0 = get_pk_value(record, "pk_0")
             attr_0 = get_attribute_value(record, "attr_0")
         return 'OK'
  2. Klik Test Function.

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

FAQ

  • 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 terkait di Function Compute.

  • Dalam banyak kasus, jika kesalahan yang menunjukkan bahwa klien membatalkan pemanggilan dilaporkan berulang kali saat Anda menggunakan pemicu Tablestore, periode timeout yang dikonfigurasikan untuk eksekusi fungsi di klien lebih pendek daripada durasi eksekusi fungsi sebenarnya. Dalam hal 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 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 dikonfigurasikan 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 akan dicoba ulang hingga data log di Tablestore kedaluwarsa.