Serverless Workflow vous permet de planifier l'exécution des workflows en configurant des expressions cron. Cette rubrique explique comment créer une planification temporelle pour Serverless Workflow.
Prérequis
Créer une planification dans la console
Connectez-vous à la console Serverless Workflow.
Accédez à la page Flow. Dans la liste des flux, cliquez sur le Flow Name du flux cible.
Sur la page Flows, cliquez sur l'onglet Time-based Schedules, puis dans la zone Time-based Schedule Management, cliquez sur Create Time-based Schedule.
-
Dans le panneau Create Time-based Schedule, renseignez les paramètres, puis cliquez sur OK.
Paramètre
Actions
Exemple
Nom de la planification temporelle
Saisissez un nom personnalisé pour la planification temporelle.
schedule-test
Configuration de l'heure de déclenchement
Sélectionnez une méthode de planification et saisissez une règle horaire.
Les deux types d'expressions suivants sont pris en charge :
-
Cron expression : Utilisez une expression cron standard. Pour plus d'informations, consultez la section Paramètres de temps de planification.
-
Time interval : Utilisez une expression
@every.Intervalle, en minutes, entre chaque exécution du workflow.
Sélectionnez Time interval et saisissez 1 pour exécuter le workflow toutes les minutes.
Payload
Paramètres personnalisés au format JSON.
{"key": "value"}
Description
Saisissez une description pour la planification temporelle.
test schedule
Activer la planification temporelle
Activez ou désactivez la planification temporelle.
Activez le commutateur Enable time-based schedule.
Après avoir créé la planification, vous pouvez la consulter dans l'onglet Enable time-based schedule du workflow.
Dans l'onglet Time-based Schedule du workflow, vous pouvez consulter l'historique des exécutions. Les enregistrements issus des déclencheurs planifiés affichés dans l'onglet Executions ont des noms commençant par
scheduled-exec, un statut Succeeded et une heure d'exécution exprimée en millisecondes. Dans cet exemple, une nouvelle exécution apparaît toutes les minutes.
-
Créer une planification à l'aide de la CLI
Pour créer une planification temporelle à l'aide d'Alibaba Cloud CLI, vous devez d'abord l'installer et la configurer. Pour plus d'informations, consultez la rubrique Qu'est-ce qu'Alibaba Cloud CLI ?.
-
(Facultatif) Exécutez la commande suivante pour afficher les paramètres de requête de l'opération CreateSchedule.
aliyun fnf CreateSchedule helpSortie attendue :
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 -
Exécutez la commande suivante pour créer une planification temporelle.
aliyun fnf CreateSchedule --FlowName test --ScheduleName "schedule-test" --CronExpression "@every 1m" --Payload "{\"key\":\"value\"}" --Description "test schedule" --Enable trueSortie attendue :
{ "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" }
Paramètres de temps de planification
Une planification temporelle utilise les paramètres suivants :
{
payload: "payload"
cronExpression: "cronExpression"
enable: true|false
}
payload : Entrée personnalisée pour l'exécution planifiée. Le payload doit être au format JSON.
-
cronExpression : Planification du workflow. Les deux types d'expressions suivants sont pris en charge.
RemarqueLes intervalles inférieurs à 1 minute ne sont pas valides.
-
@every Valeur Unité
Cette expression exécute le workflow à intervalle fixe. La valeur doit être un entier positif et l'unité doit être « m » (minutes).
|
**Exemple de scénario**
|
**Expression**
| | --- | --- | |
Exécution toutes les 5 minutes
|
@every 5m
| |
Exécution toutes les 1,5 heures
|
@every 90m
| -
Expression horaire
-
Expression cron
Par défaut, les expressions cron utilisent le temps universel coordonné (UTC). Le format standard d'une expression cron est le suivant :
Seconds Minutes Hours Day-of-month Month Day-of-week. -
Expression de fuseau horaire
Pour exécuter une tâche dans un fuseau horaire spécifique, préfixez l'expression par CRON_TZ=<FUSEAU_HORAIRE>. Par exemple, pour déclencher un flux le premier jour de chaque mois à 04 h 00 dans le fuseau horaire Asia/Shanghai, vous pouvez utiliser
CRON_TZ=Asia/Shanghai 0 0 4 1 * *.RemarqueSi votre fuseau horaire observe l'heure d'été (HDE), vous risquez de constater des exécutions en double ou manquantes lors des transitions HDE. Nous vous recommandons d'éviter de planifier des exécutions pendant ces fenêtres de transition.
Le tableau suivant fournit des exemples courants d'expressions horaires. Par exemple, si vous souhaitez planifier l'exécution d'un workflow à 12 h 00 (heure de Pékin), l'expression cron correspondante est
|0 0 4 * * *et l'expression de fuseau horaire estCRON_TZ=Asia/Shanghai 0 0 12 * * *.
**Exemple**
|
**Expression cron**
|
**Expression de fuseau horaire**
| | --- | --- | --- | |
Planifiez l'exécution d'un workflow tous les jours à 12 h 00.
|
`0 0 4 * * *`
|
`CRON_TZ=Asia/Shanghai 0 0 12 * * *`
| |
Planifiez l'exécution d'un workflow tous les jours à 12 h 30.
|
`0 30 4 * * *`
|
`CRON_TZ=Asia/Shanghai 0 30 12 * * *`
| |
Exécutez un workflow aux 26e, 29e et 33e minutes de chaque heure.
|
`0 26,29,33 * * * *`
|
`CRON_TZ=Asia/Shanghai 0 26,29,33 * * * *`
| |
Planifiez l'exécution d'un workflow du lundi au vendredi à 12 h 30.
|
`0 30 4 ? * MON-FRI`
|
`CRON_TZ=Asia/Shanghai 0 30 12 ? * MON-FRI`
| |
Planifiez l'exécution d'un workflow toutes les 5 minutes de 12 h 00 à 14 h 00, du lundi au vendredi.
|
`0 0/5 4-6 ? * MON-FRI`
|
`CRON_TZ=Asia/Shanghai 0 0/5 12-14 ? * MON-FRI`
| |
Planifiez l'exécution d'un workflow tous les jours à 12 h 00, de janvier à avril.
|
`0 0 4 ? JAN,FEB,MAR,APR *`
|
`CRON_TZ=Asia/Shanghai 0 0 12 ? JAN,FEB,MAR,APR *`
|-
Descriptions des champs
|
**Champ**
|
**Plage de valeurs**
|
**Caractères spéciaux autorisés**
| | --- | --- | --- | |
Secondes
|
0–59
|
Non pris en charge
| |
Minutes
|
0–59
|
, - * /
| |
Heures
|
0–23
|
, - * /
| |
Jour du mois
|
1–31
|
, - * ? /
| |
Mois
|
1–12 ou JAN–DEC
|
, - * /
| |
Jour de la semaine
|
1–7 ou MON–SUN
|
, - * ?
| -
Descriptions des caractères spéciaux
|
**Caractère**
|
**Définition**
|
**Exemple**
| | --- | --- | --- | |
*
|
Indique n'importe quelle valeur dans le champ.
|
Dans le champ Minutes, * signifie que l'action est effectuée chaque minute.
| |
,
|
Indique une liste de valeurs.
|
Dans le champ Day-of-week, MON,WED,FRI indique lundi, mercredi et vendredi.
| |
-
|
Indique une plage de valeurs.
|
Dans le champ Hours, 10-12 indique la plage horaire de 10 h 00 à 12 h 00 UTC.
| |
?
|
Indique l'absence de valeur spécifique.
|
Utilisez ce caractère lorsque vous spécifiez une valeur pour le jour du mois ou le jour de la semaine, mais pas pour les deux. Par exemple, si vous spécifiez une date dans le champ Jour du mois, utilisez `?` dans le champ Day-of-week.
| |
/
|
Indique des incréments. n/m indique un incrément de m à partir de n.
|
Dans le champ Minutes, 3/5 exécute le workflow toutes les 5 minutes, en commençant à la 3e minute de l'heure.
|
-
-
Format d'entrée
Lorsqu'une planification temporelle déclenche un workflow, le service transmet l'objet JSON suivant en tant qu'entrée :
{
"triggerTime": "2020-01-01T00:00:00Z",
"triggerName": "time-trigger",
"payload": {
"key": "value",
"key_int": 1
}
}
triggerTime : Heure à laquelle l'exécution du workflow était planifiée. Un workflow peut être planifié plusieurs fois à l'heure spécifiée. Vous pouvez utiliser cette valeur pour la déduplication.
triggerName : Nom de la planification temporelle.
payload : Entrée personnalisée que vous avez définie dans la configuration de la planification. Vous pouvez accéder aux valeurs de cet objet dans la définition de votre flux à l'aide d'une expression, telle que
$.payload.key. Pour plus d'informations, consultez la rubrique Entrée et sortie.