Serverless Workflow memungkinkan Anda menjadwalkan eksekusi alur kerja dengan mengonfigurasi ekspresi cron. Topik ini menjelaskan cara membuat jadwal berbasis waktu untuk Serverless Workflow.
Prasyarat
Buat jadwal di Konsol
-
Masuk ke Konsol Serverless Workflow.
-
Buka halaman Flow. Pada daftar alur, klik Flow Name dari alur target.
-
Di halaman Flows, klik tab Time-based Schedules, lalu di area Time-based Schedule Management, klik Create Time-based Schedule.
-
Pada panel Create Time-based Schedule, isi parameter, lalu klik OK.
Parameter
Aksi
Contoh
Time-based schedule name
Masukkan nama kustom untuk jadwal berbasis waktu.
schedule-test
Trigger time configuration
Pilih metode penjadwalan dan masukkan aturan waktu.
Dua jenis ekspresi berikut didukung:
-
Cron expression: Gunakan ekspresi cron standar. Untuk informasi selengkapnya, lihat Parameter waktu jadwal.
-
Time interval: Gunakan ekspresi
@every.Interval dalam menit untuk menjalankan alur kerja.
Pilih Time interval dan masukkan 1 untuk menjalankan alur kerja setiap menit.
Payload
Parameter kustom dalam format JSON.
{"key": "value"}
Description
Masukkan deskripsi untuk jadwal berbasis waktu.
test schedule
Enable time-based schedule
Aktifkan atau nonaktifkan jadwal berbasis waktu.
Nyalakan sakelar Enable time-based schedule.
-
Setelah membuat jadwal, Anda dapat melihatnya di tab Time-based Schedule alur kerja tersebut.
-
Di tab Executions alur kerja, Anda dapat melihat riwayat eksekusi. Catatan dari pemicu terjadwal yang ditampilkan di tab Executions memiliki nama yang diawali dengan
scheduled-exec, status Succeeded, dan waktu eksekusi dalam milidetik. Dalam contoh ini, eksekusi baru muncul setiap menit.
-
Buat jadwal menggunakan CLI
Untuk membuat jadwal berbasis waktu menggunakan Alibaba Cloud CLI, Anda harus terlebih dahulu menginstal dan mengonfigurasinya. Untuk informasi selengkapnya, lihat Apa itu Alibaba Cloud CLI?.
-
(Opsional) Jalankan perintah berikut untuk melihat parameter permintaan untuk operasi CreateSchedule.
aliyun fnf CreateSchedule helpOutput yang diharapkan:
Alibaba Cloud Command Line Interface Version 3.0.45 Product: fnf (FunctionFlow) Link: https://xxxxxxxx.html Parameters: --CronExpression String Required --FlowName String Required --ScheduleName String Required --Description String Optional --Enable Boolean Optional --Payload String Optional --RequestId String Optional -
Jalankan perintah berikut untuk membuat jadwal berbasis waktu.
aliyun fnf CreateSchedule --FlowName test --ScheduleName "schedule-test" --CronExpression "@every 1m" --Payload "{\"key\":\"value\"}" --Description "test schedule" --Enable trueOutput yang diharapkan:
{ "CreatedTime": "2024-06-26T03:36:57Z", "CronExpression": "@every 1m", "Description": "test schedule", "Enable": true, "LastModifiedTime": "2024-06-26T03:36:57Z", "Payload": "{\"key\":\"value\"}", "RequestId": "c7034d83-d1ba-648c-f05c-156439a857d7", "ScheduleId": "b888a48f-229d-4b35-adc6-5c63a37cf3b1", "ScheduleName": "schedule-test" }
Parameter waktu jadwal
Jadwal berbasis waktu menggunakan parameter berikut:
{
payload: "payload"
cronExpression: "cronExpression"
enable: true|false
}
-
payload: Input kustom untuk eksekusi terjadwal. Payload harus dalam format JSON.
-
cronExpression: Jadwal untuk alur kerja. Dua jenis ekspresi berikut didukung.
CatatanInterval lebih pendek dari 1 menit tidak valid.
-
@every Nilai Satuan
Ekspresi ini menjalankan alur kerja pada interval tetap. Nilai harus berupa bilangan bulat positif dan satuan harus "m" (menit).
Contoh skenario
Ekspresi
Jalankan setiap 5 menit
@every 5m
Jalankan setiap 1,5 jam
@every 90m
-
Ekspresi waktu
-
Cron expression
Secara default, ekspresi cron menggunakan Coordinated Universal Time (UTC). Format standar ekspresi cron adalah:
Seconds Minutes Hours Day-of-month Month Day-of-week. -
Ekspresi zona waktu
Untuk menjalankan tugas dalam zona waktu tertentu, tambahkan awalan ekspresi dengan CRON_TZ=<TIMEZONE>. Misalnya, untuk memicu alur pada pukul 04.00 pada hari pertama setiap bulan di zona waktu Asia/Shanghai, Anda dapat menggunakan
CRON_TZ=Asia/Shanghai 0 0 4 1 * *.CatatanJika zona waktu Anda menerapkan Daylight Saving Time (DST), Anda mungkin melihat eksekusi ganda atau terlewat selama transisi DST. Kami menyarankan agar Anda menghindari penjadwalan eksekusi selama periode transisi tersebut.
Tabel berikut menyediakan contoh umum ekspresi waktu. Misalnya, jika Anda ingin menjadwalkan alur kerja pada pukul 12.00 waktu Beijing, ekspresi cron yang sesuai adalah
0 0 4 * * *, dan ekspresi zona waktunya adalahCRON_TZ=Asia/Shanghai 0 0 12 * * *.Contoh
Cron expression
Ekspresi zona waktu
Jadwalkan alur kerja untuk dijalankan pukul 12.00 setiap hari.
0 0 4 * * *CRON_TZ=Asia/Shanghai 0 0 12 * * *Jadwalkan alur kerja untuk dijalankan pukul 12.30 setiap hari.
0 30 4 * * *CRON_TZ=Asia/Shanghai 0 30 12 * * *Jalankan alur kerja pada menit ke-26, ke-29, dan ke-33 setiap jam.
0 26,29,33 * * * *CRON_TZ=Asia/Shanghai 0 26,29,33 * * * *Jadwalkan alur kerja untuk dijalankan pukul 12.30 setiap hari dari Senin hingga Jumat.
0 30 4 ? * MON-FRICRON_TZ=Asia/Shanghai 0 30 12 ? * MON-FRIJadwalkan alur kerja untuk dijalankan setiap 5 menit dari pukul 12.00 hingga 14.00, Senin hingga Jumat.
0 0/5 4-6 ? * MON-FRICRON_TZ=Asia/Shanghai 0 0/5 12-14 ? * MON-FRIJadwalkan alur kerja untuk dijalankan pukul 12.00 setiap hari dari Januari hingga April.
0 0 4 ? JAN,FEB,MAR,APR *CRON_TZ=Asia/Shanghai 0 0 12 ? JAN,FEB,MAR,APR *-
Deskripsi bidang
Bidang
Rentang nilai
Karakter khusus yang diizinkan
Seconds
0–59
Tidak didukung
Minutes
0–59
, - * /
Hours
0–23
, - * /
Day-of-month
1–31
, - * ? /
Month
1–12 atau JAN–DEC
, - * /
Day-of-week
1–7 atau MON–SUN
, - * ?
-
Deskripsi karakter khusus
Karakter
Definisi
Contoh
*
Menunjukkan nilai apa pun dalam bidang tersebut.
Pada bidang Minutes, * berarti aksi dilakukan setiap menit.
,
Menunjukkan daftar nilai.
Pada bidang Day-of-week, MON,WED,FRI menunjukkan Senin, Rabu, dan Jumat.
-
Menunjukkan rentang nilai.
Pada bidang Hours, 10-12 menunjukkan rentang waktu dari pukul 10.00 hingga 12.00 UTC.
?
Menunjukkan tidak ada nilai spesifik.
Gunakan ini ketika Anda menentukan nilai untuk Day-of-month atau Day-of-week, tetapi tidak keduanya. Misalnya, jika Anda menentukan tanggal di Day-of-month, gunakan
?pada bidang Day-of-week./
Menunjukkan kenaikan. n/m berarti kenaikan sebesar m dimulai dari n.
Pada bidang Minutes, 3/5 menjalankan alur kerja setiap 5 menit, dimulai dari menit ke-3 setiap jam.
-
-
Format input
Ketika jadwal berbasis waktu memicu alur kerja, layanan meneruskan objek JSON berikut sebagai input:
{
"triggerTime": "2020-01-01T00:00:00Z",
"triggerName": "time-trigger",
"payload": {
"key": "value",
"key_int": 1
}
}
-
triggerTime: Waktu saat alur kerja dijadwalkan untuk dijalankan. Alur kerja mungkin dijadwalkan lebih dari sekali pada waktu yang ditentukan. Anda dapat menggunakan nilai ini untuk deduplikasi.
-
triggerName: Nama jadwal berbasis waktu.
-
payload: Input kustom yang Anda definisikan dalam konfigurasi jadwal. Anda dapat mengakses nilai dari objek ini dalam definisi alur Anda menggunakan ekspresi, seperti
$.payload.key. Untuk informasi selengkapnya, lihat Input dan output.