Deskripsi masalah
Pemicu tidak dapat memicu eksekusi fungsi.
Penyebab yang mungkin
Berikut adalah kemungkinan penyebab:
Peristiwa pemicu tidak berhasil dihasilkan.
Aturan untuk memicu eksekusi fungsi tidak terpenuhi.
Peran yang dikonfigurasi untuk pemicu salah.
Solusi
Solusi 1: Periksa apakah peristiwa pemicu dihasilkan
Pemicu OSS
Sebagai contoh, jika Anda menentukan untuk memicu fungsi setelah objek diunggah ke Object Storage Service (OSS), ikuti langkah-langkah berikut untuk mendiagnosis masalah:
Periksa apakah objek diunggah ke bucket yang sesuai.
Jika objek diunggah dengan benar, periksa log eksekusi yang sesuai di Function Compute.
Jika log eksekusi ditemukan, fungsi telah dipicu. Dalam hal ini, fungsi mungkin gagal. Anda harus men-debug kode Anda berdasarkan log tersebut.
Jika tidak ada log eksekusi yang ditemukan, fungsi tidak dipicu. Dalam hal ini, periksa apakah aturan pemicu terpenuhi. Untuk informasi lebih lanjut, lihat Solusi 2: Periksa apakah aturan pemicu terpenuhi.
Jika file belum diunggah, unggah file tersebut.
Pemicu Simple Log Service
Jika pemicu Simple Log Service gagal memicu eksekusi fungsi, Anda dapat mendiagnosis masalah dengan melakukan langkah-langkah berikut:
Periksa apakah perubahan data tambahan terjadi di Logstore yang terkait dengan pemicu. Fungsi terkait akan dipicu jika data shard berubah.
Periksa pengecualian dalam log eksekusi fungsi.
Solusi 2: Periksa apakah aturan pemicu terpenuhi
Berikut adalah beberapa contoh aturan pemicu umum.
Pemicu waktu
Periksa metode pemicu dan sistem waktu. Anda harus memeriksa sistem waktu mana yang digunakan oleh pemicu Anda. Jika Anda mengatur metode pemicu ke ekspresi CRON kustom CRON expression, secara default Waktu Universal Terkoordinasi (UTC) digunakan. Untuk informasi lebih lanjut, lihat Langkah 1: Buat pemicu waktu.
Jika Anda mengatur ekspresi CRON menjadi 0 0 4 * * *, fungsi dipicu pada pukul 04:00 (UTC+0) atau 12:00 (UTC+8) setiap hari.
Jika Anda mengatur ekspresi CRON menjadi CRON_TZ=Asia/Shanghai 0 0 4 1 * *, fungsi dipicu pada pukul 04:00 (UTC+8) pada hari pertama setiap bulan.
Pemicu OSS
Fungsi Anda dan OSS bucket terkaitnya harus berada di wilayah yang sama.
Awalan atau akhiran objek yang diunggah harus sama dengan awalan atau akhiran objek yang Anda konfigurasikan untuk pemicu.
Sebagai contoh, jika Anda mengatur awalan objek menjadi ab, dan mengunggah a/b.zip, ab.zip, dan abc.zip ke OSS, hanya ab.zip dan abc.zip yang dapat memicu eksekusi fungsi.
Peristiwa OSS harus persis sama dengan peristiwa pemicu yang dikonfigurasikan. Jika tidak, eksekusi fungsi tidak dapat dipicu. Berikut adalah kasus-kasus di mana peristiwa OSS tidak cocok dengan peristiwa pemicu.
Anda mengunggah objek menggunakan ossbrowser dan unggah multipart. Setelah pengunggahan, peristiwa adalah
oss:ObjectCreated:CompleteMultipartUpload. Jika peristiwa pemicu yang Anda konfigurasikan adalahoss:ObjectCreated:PutObjectatauoss:ObjectCreated:PostObject, eksekusi fungsi tidak dapat dipicu.Peristiwa ketika Anda mengunggah objek menggunakan konsol adalah
oss:ObjectCreated:PostObject, tetapi peristiwa pemicu yang Anda konfigurasikan adalahoss:ObjectCreated:PutObject. Peristiwa ketika Anda mengunggah file dengan memanggil operasioss:ObjectCreated:PutObjectadalahoss:ObjectCreated:PutObject, tetapi peristiwa pemicu yang Anda konfigurasikan adalahoss:ObjectCreated:PostObject. Dalam kedua kasus tersebut, eksekusi fungsi tidak dapat dipicu.
Ketika Anda menghapus objek dari bucket tempat versioning diaktifkan di OSS, Anda harus menentukan ID versi.
Jika Anda tidak menentukan ID versi saat menggunakan ossbrowser untuk menghapus objek, peristiwa
oss:ObjectRemoved:DeleteObjectatauoss:ObjectRemoved:DeleteObjectstidak dipicu. Versi saat ini dari objek menjadi versi sebelumnya, dan penanda hapus ditambahkan. Untuk informasi lebih lanjut, lihat FAQ.Pemicu OSS berbasis EventBridge mulai berlaku 30 detik setelah dibuat.
Pemicu Tablestore
Anda harus mengaktifkan fitur Stream untuk tabel data instance Tablestore. Untuk informasi lebih lanjut, lihat bagian "Langkah 1: Aktifkan fitur Stream untuk tabel data" dari topik Gunakan Function Compute.
Solusi 3: Periksa apakah peran pemicu benar
Periksa apakah peran yang Anda konfigurasikan untuk pemicu dihapus, atau apakah peran tersebut memiliki izin yang diperlukan. Kami merekomendasikan agar Anda mengonfigurasi peran standar untuk pemicu.
Untuk pemicu OSS, konfigurasikan peran
AliyunOSSEventNotificationRole. Untuk informasi lebih lanjut, lihat Konfigurasikan pemicu OSS asli.Untuk pemicu Tablestore, konfigurasikan peran
AliyunTableStoreStreamNotificationRole. Untuk informasi lebih lanjut, lihat Langkah 2: Buat pemicu Tablestore.
Referensi
Jika objek yang Anda unggah memicu fungsi beberapa kali, Anda harus mengonfigurasi ulang peristiwa pemicu untuk fungsi Anda. Untuk informasi lebih lanjut, lihat Apa yang harus saya lakukan jika fungsi dipicu beberapa kali ketika objek diunggah ke OSS?