Criar e configurar cron jobs

Destino Pub/Sub

Se você escolher o tipo de destino Pub/Sub:

  1. Especifique o nome do tópico em que o job será publicado. Deve ser um tópico do Pub/Sub já configurado no seu projeto.

  2. Especifique a mensagem para enviar ao tópico. Isso é enviado como o parâmetro data na mensagem do Pub/Sub. Para ver um exemplo que faz isso, consulte o Guia de início rápido.

  3. Adicione os atributos de mensagem necessários.

  4. Defina qualquer outra configuração usando a seção Configure optional settings.

O Cloud Scheduler publicará mensagens neste tópico como uma conta de serviço de APIs do Google.

Destino HTTP do App Engine

Se você escolher o tipo de destino App Engine HTTP, precisará usar o aplicativo do App Engine e a região associada ao projeto atual. Para usar outro aplicativo do App Engine fora do projeto atual, escolha HTTP como destino, e não HTTP do App Engine. As regras de firewall de destino precisam permitir solicitações do intervalo de IP 0.1.0.2/32.

Defina o formulário da seguinte maneira:

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

  2. Especifique o nome do serviço do App Engine que está executando o gerenciador do job do Cloud Scheduler. Se omitido, o serviço default será usado. Se você quiser configurá-lo, encontre os nomes dos serviços no Console do Google Cloud.

  3. Você também pode especificar a versão. Se ela não for definida, será usada a versão disponibilizada no momento. Encontre as versões disponíveis no Console do Google Cloud.

  4. Também é possível especificar a instância. Se não for definida, qualquer instância disponível poderá ser usada. Encontre as versões disponíveis no Console do Google Cloud.

  5. Especifique o URL relativo do endpoint do App Engine com o qual o job entrará em contato. Se você usar o valor padrão /, o job usará PROJECT-ID.appspot.com, em que PROJECT-ID é o ID do projeto atual.

  6. Defina o método HTTP que você quer usar ao executar o job. O padrão é POST.

  7. Adicione os cabeçalhos necessários à solicitação.

  8. Se quiser, especifique os dados do corpo a serem enviados ao destino. Esses dados são enviados no corpo da solicitação como bytes quando o método HTTP POST ou PUT é selecionado.

Os endpoints do App Engine de destino precisam estar no mesmo projeto e podem ser protegidos com login: admin no elemento handlers no arquivo app.yaml.

Destino HTTP

Se você escolher o tipo de destino HTTP:

  1. especifique o URL completo do ponto de extremidade com que o job entrará em contato.

  2. Especifique o método HTTP. O padrão é POST.

  3. Se você quiser, pode especificar também os dados que serão enviados ao destino. Esses dados são enviados no corpo da solicitação como bytes quando o método HTTP POST ou PUT é selecionado.

  4. Adicione os cabeçalhos necessários.

  5. Para criar um job de destino HTTP que exija autenticação, consulte Usar autenticação com destinos HTTP.

Os pontos de extremidade HTTP de destino precisam estar publicamente acessíveis.

É possível usar o Cloud Scheduler para configurar unidades de trabalho programadas, conhecidas como cron jobs, que são enviadas para destinos em alguma programação recorrente, também chamada de intervalo ou frequência do job.

Apenas uma única instância de um job deve ser executada por vez. Em raras circunstâncias, é possível que sejam solicitadas várias instâncias do mesmo job. Dessa forma, seu gerenciador de solicitações precisa ser idempotente, e o código deve garantir que não haja efeitos colaterais prejudiciais caso isso ocorra.

O Cloud Scheduler é destinado a jobs recorrentes. Se você precisar executar um job apenas uma vez, considere usar o Cloud Tasks, que pode programar uma tarefa com até 30 dias de antecedência.

Antes de começar

Verifique se você configurou o ambiente para o Cloud Scheduler.

Escolha um tipo de segmentação

O Cloud Scheduler pode invocar os seguintes tipos de destinos:

Invocar serviços de destino que são restritos à entrada interna

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

  • Cloud Functions
  • Cloud Run (no URL run.app, não em domínios personalizados)

Para invocar esses destinos internamente, eles precisam estar no mesmo projeto do Google Cloud ou perímetro de VPC Service Controls que o job do Cloud Scheduler.

Para saber mais sobre como proteger metas restringindo a entrada, consulte Como restringir a entrada (no Cloud Run) e Como configurar configurações de rede (no Cloud Functions).

Criar um job

É possível criar um job usando o console do Google Cloud ou a Google Cloud CLI.

Console

  1. No console do Google Cloud, acesse o Cloud Scheduler.

    Acessar o Cloud Scheduler

  2. Clique em Criar job.

  3. No campo Nome, forneça um nome para o job exclusivo para o projeto.

    Depois de excluir o job associado, é possível reutilizar o nome de um job em um projeto.

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

    Se você estiver usando um destino HTTP do App Engine, escolha a mesma região do aplicativo do App Engine. Para mais informações, consulte Regiões compatíveis por destino.

  5. Se quiser, você também pode inserir uma breve descrição do job, como um lembrete da função dele.

    Essa descrição aparece no console ao lado do nome do job.

  6. Especifique a frequência de execução do job usando uma string de configuração.

    Por exemplo, a string 0 1 * * 0 executa o job uma vez por semana à 1h todos os domingos de manhã. Você pode usar aqui qualquer string compatível com o formato unix-cron. Para mais informações, consulte Configurar programações de cron job.

  7. Na lista Fuso horário, escolha o fuso horário a ser usado para a programação do job.

  8. Clique em Continuar.

  9. Especifique o Tipo de segmentação:

    • HTTP

    • Pub/Sub: especifique o nome do tópico do Pub/Sub que você já configurou no seu projeto e em que o job será publicado.

    • App Engine HTTP: use o aplicativo do App Engine e a região associada ao projeto atual.

  10. Clique em Continuar.

  11. Para definir qualquer comportamento de repetição, clique em Definir configurações opcionais. Para especificar a duração, use uma sequência de números inteiros não negativos decimais com os seguintes sufixos de unidade:

    • h: hora
    • m: minuto
    • s: segundo
    • ms: (milissegundos)
    • µ: microssegundo
    • ns: nanossegundo

    Não é permitido usar valores negativos e fracionários. O campo Max retry duration aceita apenas valores h, m e s. Tanto Min backoff duration quanto Max backoff duration aceitam o conjunto completo.

  12. Opcionalmente, para destinos HTTP e HTTP do App Engine, configure um prazo para tentativas de job. Se o gerenciador de solicitações não responder até esse prazo, a solicitação será cancelada e a tentativa será marcada como falha. O Cloud Scheduler repete o job de acordo com a configuração de repetição.

  13. Para criar e salvar o job, clique em Criar.

    O job agora será executado na frequência especificada.

gcloud

Ao criar um job usando a CLI gcloud, você usa comandos diferentes para cada tipo de target:

HTTP

Você pode enviar uma solicitação para qualquer ponto de extremidade HTTP ou HTTPS. Os endpoints HTTP de destino precisam ser acessíveis publicamente.

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

Substitua:

  • JOB: um nome de job que precisa ser exclusivo no projeto. Não é possível reutilizar o nome de um job em um projeto mesmo que você exclua o job associado.

  • LOCATION: o local em que o job será executado.

  • SCHEDULE: frequência ou intervalo de job em que o job será executado, por exemplo, every 3 hours. Você pode usar aqui qualquer string compatível com unix-cron. Apesar de não ser mais recomendado usá-la, a sintaxe cron do App Engine legada ainda é compatível com os jobs atuais.

    Para mais informações, consulte Configurar programações de cron job.

  • URI: o URI totalmente qualificado do endpoint em que o job vai contatar.

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

  • Se preferir, especifique o método HTTP. O padrão é POST.

  • Se você quiser, pode especificar também os dados que serão enviados ao destino. Esses dados são enviados no corpo da solicitação como bytes quando o método HTTP POST ou PUT é selecionado.

  • Se quiser, defina os valores de repetição, que especificam como será feita uma nova tentativa do job do App Engine em caso de falha. Na maioria dos casos, os padrões são suficientes.

  • Para criar um job de destino HTTP que exija autenticação, consulte Como usar 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

Você precisa usar um tópico do Pub/Sub que já tenha configurado no seu projeto. O Cloud Scheduler publicará mensagens no tópico como uma conta de serviço da API do Google.

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

Substitua:

  • JOB: um nome de job que precisa ser exclusivo no projeto. Não é possível reutilizar o nome de um job em um projeto mesmo que você exclua o job associado.

  • LOCATION: o local em que o job será executado.

  • SCHEDULE: frequência ou intervalo de job em que o job será executado, por exemplo, every 3 hours. Você pode usar aqui qualquer string compatível com unix-cron. Apesar de não ser mais recomendado usá-la, a sintaxe cron do App Engine legada ainda é compatível com os jobs atuais.

    Para mais informações, consulte Configurar programações de cron job.

  • TOPIC: o nome do tópico em que o job será publicado. Use a sinalização --message-body ou --message-body-from-file para especificar uma mensagem a ser enviada ao tópico. Isso é enviado como o parâmetro data na mensagem do Pub/Sub. Para ver um exemplo que faz isso, consulte o quickstart.

Outros parâmetros são descritos na referência da linha de comando do 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 está disponível apenas para o aplicativo do App Engine associado ao projeto atual. Para usar outro aplicativo do App Engine fora do projeto atual, escolha HTTP como destino, não App Engine HTTP. As regras de firewall de destino precisam permitir solicitações do intervalo de IP 0.1.0.2/32.

É possível proteger os endpoints do App Engine com login: admin no elemento handlers do arquivo app.yaml.

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

Substitua:

  • JOB: um nome de job que precisa ser exclusivo no projeto. Não é possível reutilizar o nome de um job em um projeto mesmo que você exclua o job associado.

  • LOCATION: o local em que o job será executado. Ele precisa ser o mesmo local do seu aplicativo do App Engine.

  • SCHEDULE: frequência ou intervalo do job em que o job será executado. Por exemplo, every 3 hours. A string fornecida aqui pode ser qualquer string compatível com unix-cron. Apesar de não ser mais recomendado usá-la, a sintaxe cron do App Engine legada ainda é compatível com os jobs atuais.

    Para mais informações, consulte Configurar programações de cron job.

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

  • Especifique o URL relativo do endpoint do App Engine que o job vai contatar. Se você usar o valor padrão /, o job 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á executando o gerenciador do job do Cloud Scheduler. Se omitido, o serviço default será usado. Se você quiser configurá-lo, encontre os nomes dos serviços no Console do Google Cloud.

  • Se preferir, defina o método HTTP que você quer usar ao executar o job. O padrão é POST.

  • Você também pode especificar a versão. Se não for definida, a versão disponível atualmente será usada. Encontre as versões disponíveis no Console do Google Cloud.

  • Também é possível especificar a instância. Se não for definida, qualquer instância disponível poderá ser usada. Encontre as versões disponíveis no Console do Google Cloud.

  • Se você quiser, pode especificar também os dados que serão enviados ao destino. Esses dados são enviados no corpo da solicitação como bytes quando o método HTTP POST ou PUT é selecionado.

  • Se quiser, defina os valores de repetição, que especificam como será feita uma nova tentativa do job do App Engine em caso de falha. Na maioria dos casos, os padrões são suficientes.

Exemplo

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

Editar um job

É possível editar a configuração de um job.

Console

  1. No console do Google Cloud, acesse o Cloud Scheduler.

    Acessar o Cloud Scheduler

  2. Selecione o job a ser editado.

  3. Clique em Editar.

  4. Siga as etapas para definir a programação, configurar a execução e definir configurações opcionais ao criar um job.

gcloud

Ao editar um job usando a CLI gcloud, você usa comandos diferentes para cada tipo de target:

HTTP

Você pode enviar uma solicitação para qualquer ponto de extremidade HTTP ou HTTPS. Os endpoints HTTP de destino precisam ser acessíveis publicamente.

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

Substitua:

  • JOB: um nome de job que precisa ser exclusivo no projeto. Não é possível reutilizar o nome de um job em um projeto mesmo que você exclua o job associado.

  • LOCATION: o local em que o job é executado. Se você não especificar o local, a CLI gcloud usará o local padrão. Se o job que você quer editar estiver em um local diferente, especifique o local além de NAME para que o job seja identificado. Não é possível atualizar o local do job.

  • SCHEDULE: frequência ou intervalo de job em que o job será executado, por exemplo, every 3 hours. Você pode usar aqui qualquer string compatível com unix-cron. Apesar de não ser mais recomendado usá-la, a sintaxe cron do App Engine legada ainda é compatível com os jobs atuais.

    Para mais informações, consulte Configurar programações de cron job.

  • URI: o URI totalmente qualificado do endpoint em que o job vai contatar.

Outros parâmetros são descritos na referência da linha de comando do 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

Você precisa usar um tópico do Pub/Sub que já tenha configurado no seu projeto. O Cloud Scheduler publicará mensagens no tópico como uma conta de serviço da API do Google.

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

Substitua:

  • JOB: um nome de job que precisa ser exclusivo no projeto. Não é possível reutilizar o nome de um job em um projeto mesmo que você exclua o job associado.

  • LOCATION: o local em que o job é executado. Se você não especificar o local, a CLI gcloud usará o local padrão. Se o job que você quer editar estiver em um local diferente, especifique o local além de NAME para que o job seja identificado. Não é possível atualizar o local do job.

  • SCHEDULE: frequência ou intervalo do job em que o job será executado. Por exemplo, every 3 hours. A string fornecida aqui pode ser qualquer string compatível com unix-cron. Apesar de não ser mais recomendado usá-la, a sintaxe cron do App Engine legada ainda é compatível com os jobs atuais.

    Para mais informações, consulte Configurar programações de cron job.

  • TOPIC: o nome do tópico em que o job será publicado. Use a sinalização --message-body ou --message-body-from-file para especificar uma mensagem a ser enviada ao tópico. Isso é enviado como o parâmetro data na mensagem do Pub/Sub. Para ver um exemplo que faz isso, consulte o quickstart.

Outros parâmetros são descritos na referência da linha de comando do 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 está disponível apenas para o aplicativo do App Engine associado ao projeto atual. Para usar outro aplicativo do App Engine fora do projeto atual, escolha HTTP como destino, não App Engine HTTP.

É possível proteger os endpoints do App Engine com login: admin no elemento handlers do arquivo app.yaml.

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

Substitua:

  • JOB: um nome de job que precisa ser exclusivo no projeto. Não é possível reutilizar o nome de um job em um projeto mesmo que você exclua o job associado.

  • LOCATION: o local em que o job é executado (igual ao local do aplicativo do App Engine de destino). Se você não especificar o local, a CLI gcloud usará o local padrão. Se o job que você quer editar estiver em um local diferente, especifique o local além de NAME para que o job seja identificado. Não é possível atualizar o local do job.

  • SCHEDULE: frequência ou intervalo do job em que o job será executado. Por exemplo, every 3 hours. A string fornecida aqui pode ser qualquer string compatível com unix-cron. Apesar de não ser mais recomendado usá-la, a sintaxe cron do App Engine legada ainda é compatível com os jobs atuais.

    Para mais informações, consulte Configurar programações de cron job.

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

Exemplo

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

Pausar um job

É possível pausar a execução de um job.

Console

  1. No console do Google Cloud, acesse o Cloud Scheduler.

    Acessar o Cloud Scheduler

  2. Selecione o job a ser pausado.

  3. Clique em Pausar.

gcloud

  1. Abra uma janela do terminal na máquina em que você instalou a CLI gcloud.

  2. Execute o comando:

    gcloud scheduler jobs pause MY_JOB
    

    Substitua MY_JOB pelo nome do job a ser pausado.

Enquanto um job estiver pausado, você também pode editá-lo. Depois de editar o job, ele permanece pausado até que você o retome.

Retomar um job

É possível retomar a execução de um job pausado.

Console

  1. No console do Google Cloud, acesse o Cloud Scheduler.

    Acessar o Cloud Scheduler

  2. Selecione o job para retomar.

    O job precisa estar pausado.

  3. Clique em Retomar.

gcloud

  1. Abra uma janela do terminal na máquina em que você instalou a CLI gcloud.

  2. Execute o comando:

    gcloud scheduler jobs resume MY_JOB
    

    Substitua MY_JOB pelo nome do job a ser retomado.

Excluir um job

Você pode excluir um job.

Console

  1. No console do Google Cloud, acesse o Cloud Scheduler.

    Acessar o Cloud Scheduler

  2. Selecione o job a ser excluído.

  3. Clique em Excluir.

gcloud

  1. Abra uma janela do terminal na máquina em que você instalou a CLI gcloud.

  2. Execute o comando:

    gcloud scheduler jobs delete MY_JOB
    

    Substitua MY_JOB pelo nome do job a ser excluído.