Como criar e configurar cron jobs

Com o Cloud Scheduler, você define a execução de unidades de trabalho programadas, conhecidas como cron jobs. Elas são enviadas aos destinos de acordo com uma programação recorrente, também conhecida como intervalo ou frequência do job. Você pode criar esses trabalhos usando o Cloud Console ou a ferramenta de linha de comando gcloud.

Apenas uma única instância de um job deve ser executada por vez. Além disso, o Cloud Scheduler foi projetado para o modelo de entrega "pelo menos uma vez", ou seja, o Cloud Scheduler envia pelo menos uma vez a solicitação de jobs programados. Em raras circunstâncias, é possível que sejam solicitadas diversas instâncias do mesmo job. Sendo assim, seu gerenciador de solicitações deve ser idempotente, e o código deve garantir que não haja efeitos colaterais prejudiciais se isso ocorrer.

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

Como criar jobs

Para criar um job, você pode usar o console ou a linha de comando gcloud. Clique na guia adequada:

Console

  1. Acesse a página do Console do Cloud Scheduler.

    Cloud Scheduler

  2. Clique em Criar job.

    captura de tela

  3. Dê um nome ao job. Ele precisa ser exclusivo no projeto. Você pode reutilizar o nome de um job em um projeto depois de excluir o job com esse nome.

  4. Se quiser, você também pode inserir uma breve descrição do job, como um lembrete da função dele. Essa descrição é exibida no console, ao lado do nome do job.

  5. Descreva a programação na qual o job será executado, usando uma cadeia de configuração. Por exemplo, a sequência 0 1 * * 0 executa o trabalho uma vez por semana às 01:00 todos os domingos de manhã. A cadeia que você fornece aqui pode ser qualquer cadeia compatível com o unix-cron.

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

  6. Na lista suspensa, escolha o fuso horário a ser usado para a programação do trabalho.

  7. Especifique o destino:

  8. Clique em Criar para criar e salvar o job. O job será executado com a frequência especificada.

Gcloud

Ao criar um job pela linha de comando gcloud, você deve usar comandos diferentes para cada tipo de destino. Clique nos destinos abaixo para ver exemplos da linha de comando:

Destino Pub/Sub

Se você escolher o 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. Ela será enviada como o parâmetro data na mensagem do Pub/Sub. Veja um exemplo no guia de início rápido.

O Cloud Scheduler publicará mensagens no tópico como uma conta de serviço das APIs do Google. A configuração de destino Pub/Sub não inclui opções para a definição de novas tentativas porque o Pub/Sub tem seu próprio mecanismo e a própria política de repetição.

Destino do App Engine

Se você escolher o destino App Engine HTTP, deverá usar 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.

Defina o formulário da seguinte maneira:

  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 você quiser defini-lo, poderá encontrar os nomes dos serviços no Google Cloud Console.

  3. 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. Você pode encontrar versões disponíveis no Google Cloud Console.

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

  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.

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

Destino HTTP

Se você escolher o 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 está selecionado.

  4. Para criar um trabalho de destino HTTP que requer autenticação, consulte Usando 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 --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 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 herdada 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 etc. Veja a descrição de cada um deles na referência da linha de comando gcloud.

A configuração de destino Pub/Sub não inclui opções para a definição de novas tentativas porque o Pub/Sub tem seu próprio mecanismo e a própria política de repetição.

Exemplo de linha de comando:

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

Destino 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 --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 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 herdada 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 você quiser defini-lo, poderá encontrar os nomes dos serviços no Google Cloud Console.

  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. Você pode encontrar versões disponíveis no Google Cloud Console.

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

  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 --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 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 herdada do Google App Engine para descrever a programação.

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

  1. especifique o URL completo do ponto de extremidade 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

Como excluir um job

Para excluir um job, siga estas etapas:

Console

  1. Acesse a página do Console do Cloud Scheduler.

    Cloud Scheduler

  2. Selecione o job a ser excluído.

  3. Clique em EXCLUIR JOB.

Gcloud

  1. Abra uma janela de terminal na máquina em que você instalou o SDK do Cloud.

  2. Chame o comando

    gcloud scheduler jobs delete [my-job]
    

    substituindo [my-job] pelo nome do job a ser excluído.