Pemicu layanan Alibaba Cloud memanggil fungsi sebagai respons terhadap event dari layanan Alibaba Cloud, seperti Cloud Monitor, ActionTrail, ECS, dan IoT Platform. Topik ini menggunakan event ECS sebagai contoh untuk menunjukkan cara membuat pemicu, mengonfigurasi parameter input-nya, dan menulis kode fungsi di Konsol Function Compute.
Cara kerja
Saat Anda membuat pemicu di Konsol Function Compute, Function Compute secara otomatis membuat aturan event bernama FunctionName-TriggerName pada event bus default di EventBridge. Setelah pemicu dibuat, Anda dapat melihat informasinya di Konsol Function Compute dan melihat aturan event yang dibuat secara otomatis di Konsol EventBridge. Ketika event dari sumber event dengan tipe tertentu dikirimkan ke event bus, fungsi yang terkait dengan pemicu tersebut akan dipanggil.
Catatan penggunaan
Anda dapat membuat maksimal 10 aturan event pada event bus default di EventBridge. Jika batas ini tercapai, Anda tidak dapat membuat pemicu tambahan untuk layanan Alibaba Cloud.
Anda tidak dapat menggunakan Serverless Devs untuk membuat pemicu layanan Alibaba Cloud.
Prasyarat
EventBridge: Aktifkan EventBridge dan berikan izin
Function Compute: Buat fungsi
Langkah 1: Buat pemicu
Masuk ke Konsol Function Compute. Di panel navigasi kiri, pilih .
Di bilah navigasi atas, pilih Wilayah. Pada halaman Functions, klik fungsi yang dituju.
Di halaman detail fungsi, klik tab Triggers, lalu klik Create Trigger.
Di panel Create Trigger, konfigurasikan parameter, lalu klik OK.
Parameter
Tindakan
Contoh
Trigger Type
Pilih ECS.
ECS
Name
Masukkan nama kustom untuk pemicu.
ecs-trigger
Version or Alias
Nilai default-nya adalah LATEST. Untuk membuat pemicu untuk versi atau alias lain, alihkan terlebih dahulu ke versi/alias tersebut di pojok kanan atas halaman detail fungsi. Untuk informasi lebih lanjut, lihat Manage versions dan Manage aliases.
LATEST
Event Type
Pilih Custom Event Types atau Select All Event Types. Jika Anda memilih Custom Event Types, Anda dapat memilih satu atau beberapa tipe event untuk ECS.
Disk Retained
Event Pattern Content
Parameter ini bersifat read-only. Konten akan diisi secara otomatis setelah Anda memilih event type. Untuk informasi lebih lanjut tentang pola event, lihat Event patterns.
{ "source": [ "acs.ecs" ], "type": [ "ecs:Disk:ConvertToPostpaidCompleted" ] }Invocation Method
Pilih metode pemanggilan fungsi. Nilai yang valid:
Sync Invocation: Ini adalah metode default. Setelah event memicu pemanggilan fungsi, Function Compute menunggu hingga pemanggilan selesai, lalu mengembalikan hasilnya. Untuk informasi lebih lanjut, lihat synchronous invocation.
Async Invocation: Metode ini cocok untuk fungsi dengan latensi panjang. Setelah event memicu pemanggilan fungsi, Function Compute segera mengembalikan respons dan memastikan bahwa fungsi dieksekusi setidaknya sekali, tetapi tidak mengembalikan hasil eksekusi. Untuk informasi lebih lanjut, lihat asynchronous invocation.
Synchronous Invocation
Trigger State
Menentukan apakah pemicu diaktifkan saat dibuat. Secara default, Enable Trigger dipilih.
Enable Trigger
Setelah pemicu dibuat, pemicu tersebut muncul dalam daftar Trigger Name. Untuk mengubah atau menghapus pemicu, lihat Manage triggers.
Langkah 2: Konfigurasikan parameter input
Fungsi menerima event ECS sebagai parameter input event. Anda dapat secara manual mengirimkan sampel event ke fungsi untuk mensimulasikan pemicu.
Di tab Code halaman detail fungsi, klik ikon
di samping Test Function dan pilih Configure Test Parameters dari daftar drop-down.Di panel Configure Test Parameters, pilih Create New Test Event atau Modify Existing Test Event, masukkan nama event dan konten event, lalu klik OK.
Kode berikut menunjukkan format parameter
event. Untuk konten event dari semua sumber event resmi, lihat Alibaba Cloud official event sources.{ "datacontenttype": "application/json;charset=utf-8", "aliyunaccountid": "123456789098****", "data": { "result": "accomplished", "diskId": "d-bp11ba7acc69nkta****" }, "subject": "acs:ecs:cn-hangzhou:123456789098****:disk/d-bp11ba7acc69nkta****", "source": "acs.ecs", "type": "ecs:Disk:ConvertToPostpaidCompleted", "aliyunpublishtime": "2021-01-18T03:58:31.762Z", "specversion": "1.0", "aliyuneventbusname": "default", "id": "70c0414c-b260-4923-b584-1d6e5646****", "time": "2021-01-18T11:58:31.125+08:00", "aliyunregionid": "cn-hangzhou", "aliyunpublishaddr": "172.25.XX.XX" }Tabel berikut menjelaskan parameter dalam muatan event.
Parameter
Tipe
Contoh
Deskripsi
datacontenttype
String
application/json;charset=utf-8
Menentukan format konten parameter data. Parameter datacontenttype hanya mendukung format application/json.
aliyunaccountid
String
123456789098****
ID akun Alibaba Cloud.
data
Struct
{ "result": "accomplished", "diskId": "d-bp11ba7acc69nkta****" }Konten event. Ini adalah objek JSON yang isinya ditentukan oleh layanan yang memulai event. CloudEvents dapat berisi konteks dari produsen event, yang dikemas dalam bidang data.
subject
String
acs:ecs:cn-hangzhou:123456789098****:disk/d-bp11ba7acc69nkta****
Subjek event.
source
String
acs.ecs
Sumber event.
type
String
ecs:Disk:ConvertToPostpaidCompleted
Tipe event.
aliyunpublishtime
Timestamp
2021-01-18T03:58:31.762Z
Waktu event diterima.
specversion
String
1.0
Versi spesifikasi CloudEvents.
aliyuneventbusname
String
default
Nama event bus yang menerima event.
id
String
70c0414c-b260-4923-b584-1d6e5646****
ID event.
time
Timestamp
2021-01-18T11:58:31.125+08:00
Waktu event terjadi.
aliyunregionid
String
cn-hangzhou
Wilayah tempat event diterima.
aliyunpublishaddr
String
172.25.XX.XX
Alamat IP server yang menerima event.
Langkah 3: Tulis dan uji kode
Setelah membuat pemicu ECS, Anda dapat menulis dan menguji kode fungsi untuk memverifikasi bahwa fungsinya bekerja sesuai harapan. Dalam skenario dunia nyata, ketika event dari ECS dikirimkan ke Function Compute melalui EventBridge, pemicu secara otomatis memanggil fungsi tersebut.
Di halaman detail fungsi, pada tab Code, tulis kode Anda di editor kode dan klik Deploy.
Topik ini menggunakan kode Node.js sebagai contoh.
'use strict'; /* Untuk mengaktifkan fitur inisialisasi, implementasikan fungsi inisialisasi sebagai berikut: exports.initializer = (context, callback) => { console.log('initializing'); callback(null, ''); }; */ exports.handler = (event, context, callback) => { console.log("event: %s", event); // Parsing parameter event dan proses event-nya. callback(null, 'return result'); }Klik Test Function.
Informasi selengkapnya
Untuk mengubah atau menghapus pemicu, lihat Manage triggers.