Faça a gestão de tarefas cron

Destino do Pub/Sub

Se escolher o tipo de destino Pub/Sub:

  1. Especifique o nome do tópico para o qual a tarefa vai publicar. Este é um tópico do Pub/Sub que já configurou no seu projeto.

  2. Especifique uma mensagem a ser enviada para o tópico. Este valor é enviado como o parâmetro data na mensagem do Pub/Sub. Para ver um exemplo que o faça, consulte o início rápido.

  3. Adicione os atributos de mensagem necessários.

  4. Configure qualquer configuração adicional através da secção Configure optional settings.

O Cloud Scheduler publica mensagens neste tópico como uma conta de serviço das APIs Google.

Destino HTTP do App Engine

Se escolher o tipo de destino HTTP do App Engine, tem de usar a app do App Engine e a região associada ao projeto atual. Se quiser usar outra app do App Engine fora do seu projeto atual, escolha HTTP como destino e não App Engine HTTP. As regras de firewall de destino têm de permitir pedidos do intervalo de IP 0.1.0.2/32.

Defina o formulário da seguinte forma:

  1. Na lista Tipo de destino, selecione HTTP do App Engine.

  2. Especifique o nome do serviço do App Engine que está a executar o controlador para a tarefa do Cloud Scheduler. Se for omitido, é assumido o default serviço. Se quiser defini-lo, pode encontrar os nomes dos serviços na Google Cloud consola.

  3. Opcionalmente, especifique a versão. Se não estiver definida, é usada a versão atualmente publicada. Pode encontrar as versões disponíveis na Google Cloud consola.

  4. Opcionalmente, especifique a instância. Se não for definido, pode ser usada qualquer instância disponível. Pode encontrar as versões disponíveis na Google Cloud consola.

  5. Especifique o URL relativo do ponto final do App Engine que a tarefa vai contactar. Se usar o valor predefinido /, a tarefa vai usar PROJECT-ID.appspot.com, em que PROJECT-ID é o ID do projeto atual.

  6. Defina o método HTTP que quer usar quando a tarefa é executada. A predefinição é POST.

  7. Adicione os cabeçalhos necessários ao pedido.

  8. Opcionalmente, especifique os dados corporais a enviar para o destino. Estes dados são enviados no corpo do pedido como bytes quando o método HTTP POST ou PUT é selecionado.

Os pontos finais do App Engine segmentados têm de estar no mesmo projeto e podem ser protegidos com login: admin no elemento handlers no ficheiro app.yaml.

Destino HTTP

Se escolher o tipo de destino HTTP:

  1. Especifique o URL totalmente qualificado do ponto final que a tarefa vai contactar.

  2. Especifique o método HTTP. A predefinição é POST.

  3. Opcionalmente, especifique os dados a enviar para o destino. Estes dados são enviados no corpo do pedido como bytes quando o método HTTP POST ou PUT é selecionado.

  4. Adicione os cabeçalhos de que precisa.

  5. Para criar uma tarefa de destino HTTP que requer autenticação, consulte o artigo Use a autenticação com destinos HTTP.

Os pontos finais HTTP segmentados têm de ser acessíveis publicamente.

Pode usar o Cloud Scheduler para configurar unidades de tarefas agendadas, conhecidas como tarefas cronológicas, que são enviadas para destinos num agendamento recorrente, também denominado intervalo ou frequência da tarefa.

Só deve executar uma única instância de uma tarefa em qualquer altura. Em circunstâncias raras, é possível pedir várias instâncias da mesma tarefa. Como resultado, o processador de pedidos deve ser idempotente e o seu código deve garantir que não existem efeitos secundários prejudiciais se isto ocorrer.

O Cloud Scheduler destina-se a tarefas repetitivas. Se precisar de executar uma tarefa apenas uma vez, considere usar o Cloud Tasks, que pode agendar uma tarefa com até 30 dias de antecedência.

Antes de começar

Certifique-se de que configurou o seu ambiente para o Cloud Scheduler.

Escolha um tipo de alvo

O Cloud Scheduler pode invocar os seguintes tipos de destinos:

Invocar serviços de destino restritos à entrada interna

O Cloud Scheduler pode invocar os seguintes serviços internamente:

  • Funções do Cloud Run
  • Cloud Run (no URL run.app e não em domínios personalizados)

Para invocar estes destinos internamente, o destino tem de estar no mesmo Google Cloud projeto ou perímetro do VPC Service Controls que a sua tarefa do Cloud Scheduler.

Para saber mais sobre como proteger alvos restringindo a entrada, consulte os artigos Restringir a entrada (para o Cloud Run) e Configurar definições de rede (para as funções do Cloud Run).

Crie um trabalho

Pode criar uma tarefa através da Google Cloud consola ou da Google Cloud CLI.

Consola

  1. Na Google Cloud consola, aceda à página Cloud Scheduler.

    Aceda ao Cloud Scheduler

  2. Clique em Criar tarefa.

  3. No campo Nome, indique um nome para a tarefa que seja exclusivo do projeto.

    Depois de eliminar a tarefa associada, pode reutilizar o nome de uma tarefa num projeto.

  4. Na lista Região, selecione uma região.

    Se estiver a usar um destino HTTP do App Engine, tem de escolher a mesma região que a sua app do App Engine. Para mais informações, consulte Regiões suportadas por destino.

  5. Opcionalmente, forneça uma breve descrição da tarefa, como um lembrete do que a tarefa faz.

    Esta descrição é apresentada na consola junto ao nome da tarefa.

  6. Especifique a frequência com que a tarefa deve ser executada, através de uma string de configuração.

    Por exemplo, a string 0 1 * * 0 executa a tarefa uma vez por semana à 1:00 todas as manhãs de domingo. A string que fornece aqui pode ser qualquer string compatível com unix-cron. Para mais informações, consulte o artigo Configure programações de tarefas cron.

  7. Na lista Fuso horário, escolha o fuso horário a usar para a agenda da tarefa.

  8. Clique em Continuar.

  9. Especifique o Tipo de destino:

    • HTTP

    • Pub/Sub: tem de especificar o nome do tópico Pub/Sub que já configurou no seu projeto e para o qual a tarefa vai publicar.

    • HTTP do App Engine: tem de usar a app do App Engine e a região associada ao projeto atual.

  10. Clique em Continuar.

  11. Opcionalmente, para configurar qualquer comportamento de repetição, clique em Configurar definições opcionais. Para especificar a duração, use uma sequência de números inteiros decimais não negativos com os seguintes sufixos de unidades:

    • h - hora
    • m – minuto
    • s - segundo
    • ms – milissegundo
    • us – microssegundo
    • ns – nanossegundo

    Não são permitidos valores negativos nem fracionários. O campo Max retry duration só suporta os valores h, m e s. Tanto o Min backoff duration como o Max backoff duration suportam o conjunto completo.

  12. Opcionalmente, para destinos HTTP e HTTP do App Engine, configure um prazo para as tentativas de tarefas. Se o controlador de pedidos não responder até a esta data, o pedido é cancelado e a tentativa é marcada como falhada. O Cloud Scheduler tenta novamente a tarefa de acordo com a configuração de repetição.

  13. Para criar e guardar a tarefa, clique em Criar.

    A tarefa vai ser executada com a frequência especificada.

gcloud

Quando cria uma tarefa com a CLI gcloud, usa comandos diferentes para cada tipo de alvo:

HTTP

Pode enviar um pedido para qualquer ponto final HTTP ou HTTPS. Os pontos finais HTTP segmentados têm de ser acessíveis publicamente.

gcloud scheduler jobs create http JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --uri=URI

Substitua o seguinte:

  • JOB: um nome de tarefa que tem de ser exclusivo no projeto. Tenha em atenção que não pode reutilizar o nome de uma tarefa num projeto, mesmo que elimine a tarefa associada.

  • LOCATION: a localização onde a tarefa é executada.

  • SCHEDULE: frequência ou intervalo de tarefas em que a tarefa deve ser executada, por exemplo, every 3 hours. A string que fornece aqui pode ser qualquer string compatível com unix-cron. Embora já não recomendemos a sua utilização, a sintaxe cron do App Engine antigo ainda é suportada para tarefas existentes.

    Para mais informações, consulte o artigo Configure programações de tarefas cron.

  • URI: o URI totalmente qualificado do ponto final com o qual o trabalho vai entrar em contacto.

Outros parâmetros são descritos na referência da linha de comandos gcloud:

  • Opcionalmente, especifique o método HTTP. A predefinição é POST.

  • Opcionalmente, especifique os dados a enviar para o destino. Estes dados são enviados no corpo do pedido como bytes quando o método HTTP POST ou PUT é selecionado.

  • Opcionalmente, defina os valores de repetição, que especificam como a tarefa do App Engine deve ser repetida em caso de falha. Na maioria dos casos, as predefinições são suficientes.

  • Para criar uma tarefa de destino HTTP que exija autenticação, consulte o artigo Usar a autenticação com destinos HTTP.

Exemplo

gcloud scheduler jobs create http my-http-job \
    --schedule "0 1 * * 0" \
    --uri "http://myproject/my-url.com" \
    --http-method GET

Pub/Sub

Tem de usar um tópico Pub/Sub que já tenha configurado no seu projeto. O Cloud Scheduler publica mensagens neste tópico como uma conta de serviço da API Google.

gcloud scheduler jobs create pubsub JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --topic=TOPIC

Substitua o seguinte:

  • JOB: um nome de tarefa que tem de ser exclusivo no projeto. Tenha em atenção que não pode reutilizar o nome de uma tarefa num projeto, mesmo que elimine a tarefa associada.

  • LOCATION: a localização onde a tarefa é executada.

  • SCHEDULE: frequência ou intervalo de tarefas em que a tarefa deve ser executada, por exemplo, every 3 hours. A string que fornece aqui pode ser qualquer string compatível com unix-cron. Embora já não recomendemos a sua utilização, a sintaxe cron do App Engine antigo ainda é suportada para tarefas existentes.

    Para mais informações, consulte o artigo Configure programações de tarefas cron.

  • TOPIC: o nome do tópico para o qual a tarefa vai publicar. Use a flag --message-body ou --message-body-from-file para especificar uma mensagem a ser enviada para o tópico. Este valor é enviado como o parâmetro data na mensagem do Pub/Sub. Para ver um exemplo que o faça, consulte o início rápido.

Outros parâmetros são descritos na referência da linha de comandos gcloud.

Exemplo

gcloud scheduler jobs create pubsub myjob \
    --schedule "0 1 * * 0" \
    --topic cron-topic \
    --message-body "Hello"

HTTP do App Engine

O destino App Engine HTTP só está disponível para a app do App Engine associada ao projeto atual. Se quiser usar outra app do App Engine fora do seu projeto atual, escolha HTTP como alvo e não App Engine HTTP. As regras de firewall de destino têm de permitir pedidos do intervalo de IP 0.1.0.2/32.

Os pontos finais do App Engine podem ser protegidos com login: admin no elemento handlers do ficheiro app.yaml.

gcloud scheduler jobs create app-engine \
    --JOB=JOB \
    --location=LOCATION \
    --schedule=SCHEDULE

Substitua o seguinte:

  • JOB: um nome de tarefa que tem de ser exclusivo no projeto. Tenha em atenção que não pode reutilizar o nome de uma tarefa num projeto, mesmo que elimine a tarefa associada.

  • LOCATION: a localização onde a tarefa é executada. Tem de ser igual à localização da sua app do App Engine.

  • SCHEDULE: frequência ou intervalo de tarefas em que a tarefa deve ser executada, por exemplo, every 3 hours. A string que fornecer aqui pode ser qualquer string compatível com unix-cron. Embora já não recomendemos a sua utilização, a sintaxe cron do App Engine antigo ainda é suportada para tarefas existentes.

    Para mais informações, consulte o artigo Configure programações de tarefas cron.

Outros parâmetros são descritos na referência da linha de comandos gcloud:

  • Especifique o URL relativo do ponto final do App Engine que a tarefa vai contactar. Se usar o valor predefinido /, a tarefa vai usar PROJECT-ID.appspot.com, em que PROJECT-ID é o ID do projeto atual.

  • Especifique o nome do serviço do App Engine que está a executar o controlador para a tarefa do Cloud Scheduler. Se for omitido, é assumido o default serviço. Se quiser defini-lo, pode encontrar os nomes dos serviços na Google Cloud consola.

  • Opcionalmente, defina o método HTTP que quer usar quando a tarefa for executada. A predefinição é POST.

  • Opcionalmente, especifique a versão. Se não for definido, é usada a versão atualmente publicada. Pode encontrar as versões disponíveis na Google Cloud consola.

  • Opcionalmente, especifique a instância. Se não for definido, pode ser usada qualquer instância disponível. Pode encontrar as versões disponíveis na Google Cloud consola.

  • Opcionalmente, especifique os dados a enviar para o destino. Estes dados são enviados no corpo do pedido como bytes quando o método HTTP POST ou PUT é selecionado.

  • Opcionalmente, defina os valores de repetição, que especificam como a tarefa do App Engine deve ser repetida em caso de falha. Na maioria dos casos, as predefinições são suficientes.

Exemplo

gcloud scheduler jobs create app-engine my-appengine-job \
    --schedule "0 1 * * 0" \
    --relative-url "/cron-handler"

Editar uma tarefa

Pode editar a configuração de um trabalho.

Consola

  1. Na Google Cloud consola, aceda à página Cloud Scheduler.

    Aceda ao Cloud Scheduler

  2. Selecione a tarefa a editar.

  3. Clique em Edit.

  4. Siga os passos para definir a programação, configurar a execução e configurar definições opcionais quando criar uma tarefa.

gcloud

Quando edita uma tarefa através da CLI gcloud, usa comandos diferentes para cada tipo de alvo:

HTTP

Pode enviar um pedido para qualquer ponto final HTTP ou HTTPS. Os pontos finais HTTP segmentados têm de ser acessíveis publicamente.

gcloud scheduler jobs update http JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --uri=URI

Substitua o seguinte:

  • JOB: um nome de tarefa que tem de ser exclusivo no projeto. Tenha em atenção que não pode reutilizar o nome de uma tarefa num projeto, mesmo que elimine a tarefa associada.

  • LOCATION: a localização em que a tarefa é executada. Se não especificar a localização, a CLI gcloud usa a sua localização predefinida. Se o trabalho que quer editar estiver numa localização diferente, tem de especificar a localização, além do NAME, para que o trabalho seja identificado. Não pode atualizar a localização do trabalho.

  • SCHEDULE: frequência ou intervalo de tarefas em que a tarefa deve ser executada, por exemplo, every 3 hours. A string que fornece aqui pode ser qualquer string compatível com unix-cron. Embora já não recomendemos a sua utilização, a sintaxe cron do App Engine antigo ainda é suportada para tarefas existentes.

    Para mais informações, consulte o artigo Configure programações de tarefas cron.

  • URI: o URI totalmente qualificado do ponto final com o qual o trabalho vai entrar em contacto.

Outros parâmetros são descritos na referência da linha de comandos gcloud.

Exemplo

gcloud scheduler jobs update http my-http-job \
    --schedule "0 1 * * 0" \
    --uri "http://myproject/my-url.com" \
    --http-method GET

Pub/Sub

Tem de usar um tópico Pub/Sub que já tenha configurado no seu projeto. O Cloud Scheduler publica mensagens neste tópico como uma conta de serviço da API Google.

gcloud scheduler jobs update pubsub JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --topic=TOPIC

Substitua o seguinte:

  • JOB: um nome de tarefa que tem de ser exclusivo no projeto. Tenha em atenção que não pode reutilizar o nome de uma tarefa num projeto, mesmo que elimine a tarefa associada.

  • LOCATION: a localização em que a tarefa é executada. Se não especificar a localização, a CLI gcloud usa a sua localização predefinida. Se o trabalho que quer editar estiver numa localização diferente, tem de especificar a localização, além do NAME, para que o trabalho seja identificado. Não pode atualizar a localização do trabalho.

  • SCHEDULE: frequência ou intervalo de tarefas em que a tarefa deve ser executada, por exemplo, every 3 hours. A string que fornecer aqui pode ser qualquer string compatível com unix-cron. Embora já não recomendemos a sua utilização, a sintaxe cron do App Engine antigo ainda é suportada para tarefas existentes.

    Para mais informações, consulte o artigo Configure programações de tarefas cron.

  • TOPIC: o nome do tópico para o qual a tarefa vai publicar. Use a flag --message-body ou --message-body-from-file para especificar uma mensagem a ser enviada para o tópico. Este valor é enviado como o parâmetro data na mensagem do Pub/Sub. Para ver um exemplo que o faça, consulte o início rápido.

Outros parâmetros são descritos na referência da linha de comandos gcloud.

Exemplo

gcloud scheduler jobs update pubsub myjob \
    --schedule "0 1 * * 0" \
    --topic cron-topic --message-body "Hello"

HTTP do App Engine

O destino App Engine HTTP só está disponível para a app do App Engine associada ao projeto atual. Se quiser usar outra app do App Engine fora do seu projeto atual, escolha HTTP como alvo e não App Engine HTTP.

Os pontos finais do App Engine podem ser protegidos com login: admin no elemento handlers do ficheiro app.yaml.

gcloud scheduler jobs update app-engine JOB \
    --location=LOCATION \
    --schedule=SCHEDULE

Substitua o seguinte:

  • JOB: um nome de tarefa que tem de ser exclusivo no projeto. Tenha em atenção que não pode reutilizar o nome de uma tarefa num projeto, mesmo que elimine a tarefa associada.

  • LOCATION: a localização na qual a tarefa é executada (é igual à localização da sua app do App Engine de destino). Se não especificar a localização, a CLI gcloud usa a sua localização predefinida. Se o trabalho que quer editar estiver numa localização diferente, tem de especificar a localização, além do NAME, para que o trabalho seja identificado. Não pode atualizar a localização do trabalho.

  • SCHEDULE: frequência ou intervalo de tarefas em que a tarefa deve ser executada, por exemplo, every 3 hours. A string que fornecer aqui pode ser qualquer string compatível com unix-cron. Embora já não recomendemos a sua utilização, a sintaxe cron do App Engine antigo ainda é suportada para tarefas existentes.

    Para mais informações, consulte o artigo Configure programações de tarefas cron.

Outros parâmetros são descritos na referência da linha de comandos gcloud.

Exemplo

gcloud scheduler jobs update app-engine my-appengine-job \
    --schedule "0 1 * * 0" \
    --relative-url "/cron-handler"

Pause uma tarefa

Pode pausar a execução de uma tarefa.

Consola

  1. Na Google Cloud consola, aceda ao Cloud Scheduler.

    Aceda ao Cloud Scheduler

  2. Selecione a tarefa a pausar.

  3. Clique em Pausar.

gcloud

  1. Abra uma janela de terminal na máquina onde instalou a CLI gcloud.

  2. Execute o comando:

     gcloud scheduler jobs pause MY_JOB
    

    Substitua MY_JOB pelo nome da tarefa a pausar.

Enquanto uma tarefa está pausada, também pode editá-la. Depois de editar a tarefa, esta permanece pausada até a retomar.

Retome uma tarefa

Pode retomar a execução de uma tarefa pausada.

Consola

  1. Na Google Cloud consola, aceda ao Cloud Scheduler.

    Aceda ao Cloud Scheduler

  2. Selecione a tarefa a retomar.

    A tarefa já tem de estar em pausa.

  3. Clique em Retomar.

gcloud

  1. Abra uma janela de terminal na máquina onde instalou a CLI gcloud.

  2. Execute o comando:

     gcloud scheduler jobs resume MY_JOB
    

    Substitua MY_JOB pelo nome da tarefa a retomar.

Elimine uma tarefa

Pode eliminar uma tarefa.

Consola

  1. Na Google Cloud consola, aceda ao Cloud Scheduler.

    Aceda ao Cloud Scheduler

  2. Selecione a tarefa a eliminar.

  3. Clique em Eliminar.

gcloud

  1. Abra uma janela de terminal na máquina onde instalou a CLI gcloud.

  2. Execute o comando:

     gcloud scheduler jobs delete MY_JOB
    

    Substitua MY_JOB pelo nome da tarefa a eliminar.