O Serverless Workflow permite agendar execuções de fluxo de trabalho configurando expressões cron. Este tópico mostra como criar um agendamento baseado em tempo para o Serverless Workflow.
Pré-requisitos
Criar um agendamento no console
Faça login no console do Serverless Workflow.
Acesse a página Flow. Na lista de fluxos, clique em Flow Name do fluxo desejado.
Na página Flows, clique em Time-based Schedules. Em seguida, na área Time-based Schedule Management, clique em Create Time-based Schedule.
-
No painel Create Time-based Schedule, preencha os parâmetros e clique em OK.
Parâmetro
Ações
Exemplo
Nome do agendamento baseado em tempo
Insira um nome personalizado para o agendamento baseado em tempo.
schedule-test
Configuração do horário de acionamento
Selecione um método de agendamento e insira uma regra de tempo.
Há suporte para dois tipos de expressão:
-
Cron expression: use uma expressão cron padrão. Para mais informações, consulte Parâmetros de tempo de agendamento.
-
Time interval: use uma expressão
@every.Intervalo, em minutos, para execução do fluxo de trabalho.
Selecione Time interval e insira 1 para executar o fluxo de trabalho a cada minuto.
Payload
Parâmetros personalizados no formato JSON.
{"key": "value"}
Descrição
Insira uma descrição para o agendamento baseado em tempo.
test schedule
Ativar agendamento baseado em tempo
Ative ou desative o agendamento baseado em tempo.
Ative a chave Enable time-based schedule.
Após criar o agendamento, visualize-o na aba Time-based Schedule do fluxo de trabalho.
Na aba Executions do fluxo de trabalho, visualize o histórico de execuções. Os registros de acionamentos agendados exibidos nessa aba têm nomes que começam com
scheduled-exec, status Succeeded e tempo de execução em milissegundos. Neste exemplo, uma nova execução aparece a cada minuto.
-
Criar um agendamento usando a CLI
Para criar um agendamento baseado em tempo com a Alibaba Cloud CLI, instale-a e configure-a previamente. Para mais informações, consulte O que é a Alibaba Cloud CLI?.
-
(Opcional) Execute o comando a seguir para visualizar os parâmetros de solicitação da operação CreateSchedule.
aliyun fnf CreateSchedule helpSaída esperada:
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 -
Execute o comando a seguir para criar um agendamento baseado em tempo.
aliyun fnf CreateSchedule --FlowName test --ScheduleName "schedule-test" --CronExpression "@every 1m" --Payload "{\"key\":\"value\"}" --Description "test schedule" --Enable trueSaída esperada:
{ "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" }
Parâmetros de tempo de agendamento
Um agendamento baseado em tempo utiliza os seguintes parâmetros:
{
payload: "payload"
cronExpression: "cronExpression"
enable: true|false
}
payload: entrada personalizada para a execução agendada. O payload deve estar no formato JSON.
-
cronExpression: agendamento do fluxo de trabalho. Há suporte para dois tipos de expressão.
NotaIntervalos menores que 1 minuto são inválidos.
-
@every Valor Unidade
Essa expressão executa o fluxo de trabalho em um intervalo fixo. O valor deve ser um número inteiro positivo e a unidade deve ser "m" (minutos).
Exemplo de cenário
Expressão
Executar a cada 5 minutos
@every 5m
Executar a cada 1,5 horas
@every 90m
-
Expressão de tempo
-
Expressão Cron
Por padrão, as expressões cron usam o Tempo Universal Coordenado (UTC). O formato padrão da expressão cron é:
Seconds Minutes Hours Day-of-month Month Day-of-week. -
Expressão de fuso horário
Para executar uma tarefa em um fuso horário específico, adicione o prefixo CRON_TZ=<TIMEZONE> à expressão. Por exemplo, para acionar um fluxo às 04:00 no primeiro dia de cada mês no fuso horário Asia/Shanghai, use
CRON_TZ=Asia/Shanghai 0 0 4 1 * *.NotaSe o seu fuso horário adota o Horário de Verão (DST), podem ocorrer execuções duplicadas ou perdidas durante as transições. Recomendamos evitar o agendamento de execuções nessas janelas de transição.
A tabela a seguir apresenta exemplos comuns de expressões de tempo. Por exemplo, para agendar um fluxo de trabalho às 12:00 no Horário de Pequim, a expressão cron correspondente é
0 0 4 * * *e a expressão de fuso horário éCRON_TZ=Asia/Shanghai 0 0 12 * * *.Exemplo
Expressão Cron
Expressão de fuso horário
Agendar um fluxo de trabalho para executar às 12:00 todos os dias.
0 0 4 * * *CRON_TZ=Asia/Shanghai 0 0 12 * * *Agendar um fluxo de trabalho para executar às 12:30 todos os dias.
0 30 4 * * *CRON_TZ=Asia/Shanghai 0 30 12 * * *Executar um fluxo de trabalho aos 26, 29 e 33 minutos de cada hora.
0 26,29,33 * * * *CRON_TZ=Asia/Shanghai 0 26,29,33 * * * *Agendar um fluxo de trabalho para executar às 12:30 todos os dias, de segunda a sexta-feira.
0 30 4 ? * MON-FRICRON_TZ=Asia/Shanghai 0 30 12 ? * MON-FRIAgendar um fluxo de trabalho para executar a cada 5 minutos, das 12:00 às 14:00, de segunda a sexta-feira.
0 0/5 4-6 ? * MON-FRICRON_TZ=Asia/Shanghai 0 0/5 12-14 ? * MON-FRIAgendar um fluxo de trabalho para executar às 12:00 todos os dias, de janeiro a abril.
0 0 4 ? JAN,FEB,MAR,APR *CRON_TZ=Asia/Shanghai 0 0 12 ? JAN,FEB,MAR,APR *-
Descrições dos campos
Campo
Faixa de valores
Caracteres especiais permitidos
Seconds
0–59
Não suportado
Minutes
0–59
, - * /
Hours
0–23
, - * /
Day-of-month
1–31
, - * ? /
Month
1–12 ou JAN–DEC
, - * /
Day-of-week
1–7 ou MON–SUN
, - * ?
-
Descrições dos caracteres especiais
Caractere
Definição
Exemplo
*
Indica qualquer valor no campo.
No campo Minutes, * significa que a ação ocorre a cada minuto.
,
Indica uma lista de valores.
No campo Day-of-week, MON,WED,FRI indica segunda-feira, quarta-feira e sexta-feira.
-
Indica um intervalo de valores.
No campo Hours, 10-12 indica o intervalo de tempo das 10:00 às 12:00 UTC.
?
Indica ausência de valor específico.
Use este caractere ao especificar um valor para Day-of-month ou Day-of-week, mas não para ambos. Por exemplo, se você especificar uma data em Day-of-month, use
?no campo Day-of-week./
Indica incrementos. n/m indica um incremento de m começando em n.
No campo Minutes, 3/5 executa o fluxo de trabalho a cada 5 minutos, começando aos 3 minutos após a hora cheia.
-
-
Formato de entrada
Quando um agendamento baseado em tempo aciona um fluxo de trabalho, o serviço passa o seguinte objeto JSON como entrada:
{
"triggerTime": "2020-01-01T00:00:00Z",
"triggerName": "time-trigger",
"payload": {
"key": "value",
"key_int": 1
}
}
triggerTime: horário em que o fluxo de trabalho foi agendado para execução. Um fluxo pode ser agendado mais de uma vez no horário especificado. Use esse valor para deduplicação.
triggerName: nome do agendamento baseado em tempo.
payload: entrada personalizada definida na configuração do agendamento. Acesse os valores desse objeto na definição do fluxo usando uma expressão, como
$.payload.key. Para mais informações, consulte Entrada e saída.