Criar e configurar cron jobs

Com o Cloud Scheduler, você configura unidades de trabalho programadas, conhecidas como cron jobs, enviadas aos destinos com 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 solicitar que várias instâncias do mesmo job sejam solicitadas. Como resultado, seu gerenciador de solicitações precisa ser idempotente, e o código precisa garantir que não haja efeitos colaterais prejudiciais se isso ocorrer.

O Cloud Scheduler foi desenvolvido para jobs repetidos. Se você precisar executar um job apenas uma vez, considere usar o Cloud Tasks, que pode agendar uma tarefa com até 30 dias de antecedência.

Antes de começar

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

Criar um job

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

Console

  1. No Console, 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 do projeto.

    Depois de excluir o job associado, será 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, precisará escolher a mesma região que seu 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 na qual o job será executado usando uma string de configuração.

    Por exemplo, a string 0 1 * * 0 executa o job uma vez por semana à 1h todos os domingos pela manhã. A string fornecida aqui pode ser qualquer string compatível com unix-cron. Para saber mais, 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:

  10. Clique em Continuar.

  11. Também é possível clicar em Definir configurações opcionais para configurar qualquer comportamento de repetição. 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. Como opção, para destinos HTTP e do App Engine HTTP, configure um prazo para as tentativas do job. Se o gerenciador não responder até esse prazo, a solicitação será cancelada e a tentativa será marcada como falha. O Cloud Scheduler repete a tarefa de acordo com a configuração de repetição.

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

    Agora, o job será executado na frequência especificada.

gcloud

Ao criar um job usando a CLI gcloud, você usa comandos diferentes para cada tipo de destino. Para comandos de amostra, clique em um destino:

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. Ele é enviado como o parâmetro data na mensagem do Pub/Sub. Para ver um exemplo disso, 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. Se você quiser usar outro app do App Engine fora do projeto atual, escolha HTTP como destino, e não App Engine HTTP.

Defina o formulário da seguinte maneira:

  1. Na lista Target type, 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 é pressuposto. Se quiser configurá-lo, poderá encontrar os nomes dos serviços no console.

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

  4. Também é possível especificar a instância. Se deixada sem definição, qualquer instância disponível poderá ser usada. Consulte as versões disponíveis no console.

  5. Especifique o URL relativo do endpoint do App Engine com que 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. Também é possível especificar os dados do corpo a serem enviados para o destino. Esses dados são enviados no corpo da solicitação como bytes quando o método HTTP POST ou PUT é selecionado.

Os endpoints de destino do App Engine 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 trabalho 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.

Destino Pub/Sub

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

Sintaxe

gcloud scheduler jobs create pubsub JOB --location=LOCATION --schedule=SCHEDULE --topic=TOPIC (--message-body=MESSAGE_BODY | --message-body-from-file=MESSAGE_BODY_FROM_FILE) [optional flags]

Para usar o destino Pub/Sub na linha de comando:

  1. Em JOB, especifique o nome do job. Ele precisa ser exclusivo no projeto. Você não pode reutilizar o nome de um job em um projeto mesmo depois de excluir o job com esse nome.

  2. Especifique o local. Se não for especificado, o local do app atual do App Engine do projeto, se houver, será usado.

  3. Especifique a programação, também chamada de frequência ou intervalo, de execução do job (por exemplo, "a cada três horas"). A cadeia que você fornece aqui pode ser qualquer cadeia compatível com o unix-cron. Você também pode usar a sintaxe cron legada do Google App Engine para descrever a programação.

Para mais informações, consulte Como configurar programações de jobs.

  1. Especifique o nome do tópico em que o job será publicado.

  2. Especifique a mensagem para enviar ao tópico. Ela será enviada como o parâmetro data na mensagem do Pub/Sub. Veja um exemplo no guia de início rápido.

  3. Estão disponíveis outros parâmetros opcionais, como fuso horário, atributos, novas tentativas, entre outros parâmetros descritos na referência da linha de comando gcloud.

Exemplo de linha de comando:

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

Destino HTTP do App Engine

O destino App Engine HTTP está disponível apenas para o aplicativo App Engine associado ao projeto atual. Se você quiser usar outro aplicativo do App Engine fora do seu projeto atual, escolha HTTP como destino, não App Engine HTTP.

Os pontos de extremidade do App Engine podem ser protegidos com login: admin no elemento handlers no arquivo app.yaml.

Sintaxe

gcloud scheduler jobs create app-engine JOB --location=LOCATION --schedule=SCHEDULE [optional flags]

Para usar App Engine HTTP target:

  1. Em JOB, especifique o nome do job. Ele precisa ser exclusivo no projeto. Você não pode reutilizar o nome de um job em um projeto mesmo depois de excluir o job com esse nome.

  2. Especifique o local. Ele precisa ser o mesmo local do seu aplicativo do App Engine.

  3. Especifique a programação, também chamada de frequência ou intervalo, de execução do job (por exemplo, "a cada três horas"). A cadeia que você fornece aqui pode ser qualquer cadeia compatível com o unix-cron. Você também pode usar a sintaxe cron legada do Google App Engine para descrever a programação.

Para mais informações, consulte Como configurar programações de jobs.

  1. Especifique o URL relativo do ponto de extremidade do App Engine com que o job entrará em contato. Se você usar o valor padrão /, o trabalho usará PROJECT-ID.appspot.com em que PROJECT-ID é o seu ID de projeto atual.

  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 é assumido. Se quiser configurá-la, encontre os nomes dos serviços no Console do Google Cloud.

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

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

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

  6. 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 está selecionado.

  7. Você também tem a opção de definir os valores de novas tentativas. Em caso de falha, eles especificam como tentar executar novamente o job do App Engine. Na maioria dos casos, os padrões são suficientes. Para mais informações, consulte a referência da linha de comando da gcloud

  8. Estão disponíveis outros parâmetros opcionais, como fuso horário, descrição etc. Veja a descrição de cada um deles na referência da linha de comando gcloud.

Exemplo de linha de comando:

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

Destino HTTP

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

Sintaxe

gcloud scheduler jobs create http JOB --location-LOCATION --schedule=SCHEDULE --uri=URI [optional flags]

Para usar HTTP target:

  1. Em JOB, especifique o nome do job. Ele precisa ser exclusivo no projeto. Você não pode reutilizar o nome de um job em um projeto mesmo depois de excluir o job com esse nome.

  2. Especifique o local. Se não for especificado, o local do app atual do App Engine do projeto, se houver, será usado.

  3. Especifique a programação, também chamada de frequência ou intervalo, de execução do job (por exemplo, "a cada três horas"). A cadeia que você fornece aqui pode ser qualquer cadeia compatível com o unix-cron. Você também pode usar a sintaxe cron legada do Google App Engine para descrever a programação.

Para mais informações, consulte Como configurar programações de jobs.

  1. Especifique o URI totalmente qualificado do endpoint com que o job entrará em contato.

  2. Se preferir, 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 está selecionado.

  4. Você também tem a opção de definir os valores de novas tentativas. Em caso de falha, eles especificam como tentar executar novamente o job do App Engine. Na maioria dos casos, os padrões são suficientes. Para mais informações, consulte a referência da linha de comando da gcloud

  5. Estão disponíveis outros parâmetros opcionais, como fuso horário, descrição etc. Veja a descrição de cada um deles na referência da linha de comando gcloud.

  6. Para criar um job de Destino HTTP que requer autenticação, consulte Usando autenticação com destinos HTTP

Exemplo de linha de comando:

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

Editar um job

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

Console

  1. No Console, 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 e a execução e as configurações opcionais ao criar um job.

gcloud

Ao editar um job com a CLI gcloud, você usa comandos diferentes para cada tipo de destino. Para comandos de amostra, clique em um destino:

Pausar um job

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

Console

  1. No Console, acesse o Cloud Scheduler.

    Acessar o Cloud Scheduler

  2. Selecione o job que será pausado.

  3. Clique em Pausar.

gcloud

  1. Abra uma janela do terminal no computador 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 está pausado, também é possível 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, acesse o Cloud Scheduler.

    Acessar o Cloud Scheduler

  2. Selecione o job que será retomado.

    O job já precisa estar pausado.

  3. Clique em Retomar.

gcloud

  1. Abra uma janela do terminal no computador 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, 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 no computador 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.