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
Acesse a página do Console do Cloud Scheduler.
Clique em Criar job.
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.
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.
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.
Na lista suspensa, escolha o fuso horário a ser usado para a programação do trabalho.
Especifique o destino:
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,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.
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 destinoApp 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:
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 quePROJECT-ID
é o seu ID de 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
é assumido. Se você quiser defini-lo, poderá encontrar os nomes dos serviços no Google Cloud Console.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 ela não for definida, será usada a versão disponibilizada no momento. Você pode encontrar versões disponíveis no Google Cloud Console.
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.
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
ouPUT
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 destinoHTTP
,
especifique o URL completo do ponto de extremidade com que o job entrará em contato.
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
ouPUT
está selecionado.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:
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.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.
Especifique o nome do tópico em que o job será publicado.
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.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 destinoApp 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
:
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.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.
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 quePROJECT-ID
é o seu ID de 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
é assumido. Se você quiser defini-lo, poderá encontrar os nomes dos serviços no Google Cloud Console.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 ela não for definida, será usada a versão disponibilizada no momento. Você pode encontrar versões disponíveis no Google Cloud Console.
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.
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
ouPUT
está selecionado.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
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
:
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.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.
especifique o URL completo do ponto de extremidade com que o job entrará em contato.
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
ouPUT
está selecionado.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
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.
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
Acesse a página do Console do Cloud Scheduler.
Selecione o job a ser excluído.
Clique em EXCLUIR JOB.
Gcloud
Abra uma janela de terminal na máquina em que você instalou o SDK do Cloud.
Chame o comando
gcloud scheduler jobs delete [my-job]
substituindo
[my-job]
pelo nome do job a ser excluído.