Destino Pub/Sub
Se você escolher o tipo de 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. Confira um exemplo no guia de início rápido.Adicione os atributos de mensagem necessários.
Defina qualquer outra configuração usando a seção
Configure optional settings
.
O Cloud Scheduler publicará mensagens no tópico como uma conta de serviço das APIs do Google.
Destino HTTP do App Engine
Se você escolher o tipo de destino HTTP do App Engine, use o aplicativo do App Engine e a região associados 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. 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:
Na lista Tipo de destino, selecione App Engine HTTP.
Especifique o nome do serviço do App Engine que está executando o processador do job do Cloud Scheduler. Se omitido, o serviço
default
será adotado. Se você quiser defini-lo, poderá encontrar os nomes dos serviços no Google Cloud console.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 console doGoogle Cloud .
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 console doGoogle Cloud .
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 quePROJECT-ID
é o ID do projeto atual.Defina o método HTTP que você quer usar ao executar o job. O padrão é
POST
.Adicione os cabeçalhos necessários à solicitação.
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
ouPUT
está selecionado.
Os endpoints do App Engine definidos como 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: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.Adicione os cabeçalhos necessários.
Para criar um job de destino HTTP que requer autenticação, consulte Usar autenticação com destinos HTTP.
Os pontos de extremidade HTTP de destino precisam estar publicamente acessíveis.
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.
Apenas uma única instância de um job deve ser executada por vez. 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 o Cloud Tasks, que pode agendar uma tarefa com até 30 dias de antecedência.
Antes de começar
Verifique se você configurou seu ambiente para o Cloud Scheduler.
Escolher um tipo de destino
O Cloud Scheduler pode invocar os seguintes tipos de destinos:
Endpoints HTTP
Tópicos do Pub/Sub
Serviços do App Engine
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
, não em domínios personalizados)
Para invocar esses destinos internamente, eles precisam estar no mesmo projetoGoogle Cloud ou perímetro do VPC Service Controls que seu job do Cloud Scheduler.
Para saber mais sobre como proteger destinos restringindo a entrada, consulte Como restringir a entrada (para o Cloud Run) e Como configurar as configurações de rede (para as funções do Cloud Run).
Criar um job
É possível criar um job usando o console Google Cloud ou a Google Cloud CLI.
Console
No console Google Cloud , acesse a página Cloud Scheduler.
Clique em Criar job.
No campo Nome, insira um nome exclusivo para o job no projeto.
Depois de excluir o job associado, você pode reutilizar o nome de um job em um projeto.
Na lista Região, selecione uma região.
Se você estiver usando um destino HTTP do App Engine, escolha a mesma região do seu app do App Engine. Para mais informações, consulte Regiões compatíveis por destino.
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.
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 às 01:00 todos os domingos de manhã. A cadeia que você fornece aqui pode ser qualquer cadeia compatível com o formato unix-cron. Para mais informações, consulte Configurar programações de cron job.Na lista Fuso horário, escolha o fuso horário a ser usado para a programação do job.
Clique em Continuar.
Especifique o Tipo de destino:
Pub/Sub: especifique o nome do tópico do Pub/Sub que você já configurou no projeto e em que o job será publicado.
App Engine HTTP: use o app do App Engine e a região associada ao projeto atual.
Clique em Continuar.
Se quiser, defina qualquer comportamento de repetição clicando em Configurar 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 valoresh
,m
es
. TantoMin backoff duration
quantoMax backoff duration
aceitam o conjunto completo.Se quiser, para destinos HTTP e HTTP do App Engine, configure um prazo para tentativas de 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 tenta executar o job novamente de acordo com a configuração de repetição.
Para criar e salvar o job, clique em Criar.
O job será executado com a frequência especificada.
gcloud
Ao criar um job usando a CLI gcloud, você usa comandos diferentes para cada tipo de 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.
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 depois de excluir o job com esse nome.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
. A string que você fornece aqui pode ser qualquer string compatível com o unix-cron. Embora não recomendemos mais o uso, a sintaxe cron legada do App Engine ainda é compatível com jobs atuais.Para mais informações, consulte Configurar programações de cron job.
URI
: o URI totalmente qualificado do endpoint com que o job vai entrar em contato.
Outros parâmetros são descritos na referência da linha de comando 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
ouPUT
é 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 criar um job de destino HTTP que requer autenticação, consulte Como 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
Você precisa usar um tópico do Pub/Sub já configurado no seu projeto. O Cloud Scheduler vai publicar mensagens nesse 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 depois de excluir o job com esse nome.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
. A string que você fornece aqui pode ser qualquer string compatível com o unix-cron. Embora não recomendemos mais o uso, a sintaxe cron legada do App Engine ainda é compatível com jobs atuais.Para mais informações, consulte Configurar programações de cron job.
TOPIC
: o nome do tópico em que o job vai publicar. Use a flag--message-body
ou--message-body-from-file
para especificar uma mensagem a ser enviada ao tópico. Ela será enviada como o parâmetrodata
na mensagem do Pub/Sub. Veja um exemplo no guia de início rápido.
Outros parâmetros são descritos na referência da linha de comando 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 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
. As regras de firewall de destino precisam permitir solicitações do intervalo de IP 0.1.0.2/32.
Os endpoints do App Engine podem ser protegidos 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 depois de excluir o job com esse nome.LOCATION
: o local em que o job será executado. Ele precisa ser igual ao local do seu app do App Engine.SCHEDULE
: a frequência ou o intervalo em que o job será executado, por exemplo,every 3 hours
. A string que você fornece aqui pode ser qualquer string compatível com unix-cron. Embora não recomendemos mais o uso, a sintaxe cron legada do App Engine ainda é compatível com 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 gcloud:
Especifique o URL relativo do endpoint do App Engine com que o job vai entrar em contato. Se você usar o valor padrão
/
, o job usaráPROJECT-ID.appspot.com
, em quePROJECT-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á adotado. Se você quiser defini-lo, poderá encontrar os nomes dos serviços no consoleGoogle 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 ela não for definida, será usada a versão disponibilizada no momento. Você pode encontrar versões disponíveis no console doGoogle Cloud .
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 console doGoogle 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
ouPUT
é 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.
Exemplo
gcloud scheduler jobs create app-engine my-appengine-job \ --schedule "0 1 * * 0" \ --relative-url "/cron-handler"
Editar um job
Você pode editar a configuração de um job.
Console
No console Google Cloud , acesse a página Cloud Scheduler.
Selecione o job que você quer editar.
Clique em Editar.
Siga as etapas para definir a programação, configurar a execução e configurar as opções ao criar um job.
gcloud
Ao editar um job usando a CLI gcloud, você usa comandos diferentes para cada tipo de 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.
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 depois de excluir o job com esse nome.LOCATION
: o local em que o job é executado. Se você não especificar o local, a CLI gcloud vai usar o local padrão. Se o job que você quer editar estiver em um local diferente, especifique o local além doNAME
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
. A string que você fornece aqui pode ser qualquer string compatível com o unix-cron. Embora não recomendemos mais o uso, a sintaxe cron legada do App Engine ainda é compatível com jobs atuais.Para mais informações, consulte Configurar programações de cron job.
URI
: o URI totalmente qualificado do endpoint com que o job vai entrar em contato.
Outros parâmetros são descritos na referência da linha de comando 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 já configurado no seu projeto. O Cloud Scheduler vai publicar mensagens nesse 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 depois de excluir o job com esse nome.LOCATION
: o local em que o job é executado. Se você não especificar o local, a CLI gcloud vai usar o local padrão. Se o job que você quer editar estiver em um local diferente, especifique o local além doNAME
para que o job seja identificado. Não é possível atualizar o local do job.SCHEDULE
: a frequência ou o intervalo em que o job será executado, por exemplo,every 3 hours
. A string que você fornece aqui pode ser qualquer string compatível com unix-cron. Embora não recomendemos mais o uso, a sintaxe cron legada do App Engine ainda é compatível com jobs atuais.Para mais informações, consulte Configurar programações de cron job.
TOPIC
: o nome do tópico em que o job vai publicar. Use a flag--message-body
ou--message-body-from-file
para especificar uma mensagem a ser enviada ao tópico. Ela será enviada como o parâmetrodata
na mensagem do Pub/Sub. Veja um exemplo no guia de início rápido.
Outros parâmetros são descritos na referência da linha de comando 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 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 endpoints do App Engine podem ser protegidos 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 depois de excluir o job com esse nome.LOCATION
: o local em que seu job é executado (o mesmo do app de destino do App Engine). Se você não especificar o local, a CLI gcloud vai usar o local padrão. Se o job que você quer editar estiver em um local diferente, especifique o local além doNAME
para que o job seja identificado. Não é possível atualizar o local do job.SCHEDULE
: a frequência ou o intervalo em que o job será executado, por exemplo,every 3 hours
. A string que você fornece aqui pode ser qualquer string compatível com unix-cron. Embora não recomendemos mais o uso, a sintaxe cron legada do App Engine ainda é compatível com 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 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
No console Google Cloud , acesse Cloud Scheduler.
Selecione o job que você quer pausar.
Clique em Pausar.
gcloud
Abra uma janela de terminal na máquina em que você instalou a CLI gcloud.
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
No console Google Cloud , acesse Cloud Scheduler.
Selecione o job que você quer retomar.
O job precisa estar pausado.
Clique em Retomar.
gcloud
Abra uma janela de terminal na máquina em que você instalou a CLI gcloud.
Execute o comando:
gcloud scheduler jobs resume MY_JOB
Substitua
MY_JOB
pelo nome do job a ser retomado.
Excluir um job
É possível excluir um job.
Console
No console Google Cloud , acesse Cloud Scheduler.
Selecione o job que você quer excluir.
Clique em Excluir.
gcloud
Abra uma janela de terminal na máquina em que você instalou a CLI gcloud.
Execute o comando:
gcloud scheduler jobs delete MY_JOB
Substitua
MY_JOB
pelo nome do job a ser excluído.