Programar e executar um cron job usando a CLI gcloud

Neste guia de início rápido, mostramos como usar a CLI gcloud para realizar algumas operações básicas usando o Cloud Scheduler.

Neste guia de início rápido, você fará as seguintes tarefas:

  1. Crie um tópico do Pub/Sub para configurar como destino do job do Cloud Scheduler.
  2. Crie um cron job usando o Cloud Scheduler e configure uma programação recorrente para o job.
  3. Execute o job.
  4. Verificar se o job foi concluído com sucesso.

O Cloud Scheduler tem um nível sem custos financeiros, e a execução deste guia de início rápido não deve gerar custos. Para mais informações, consulte Preços.

Antes de começar

  1. Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloudagora, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho sem custos financeiros.
  2. Instale a CLI do Google Cloud.

  3. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

  4. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  5. Crie ou selecione um projeto do Google Cloud .

    Funções necessárias para selecionar ou criar um projeto

    • Selecionar um projeto: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
    • Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos (roles/resourcemanager.projectCreator), que contém a permissão resourcemanager.projects.create. Saiba como conceder papéis.
    • Crie um projeto do Google Cloud :

      gcloud projects create PROJECT_ID

      Substitua PROJECT_ID por um nome para o projeto do Google Cloud que você está criando.

    • Selecione o projeto Google Cloud que você criou:

      gcloud config set project PROJECT_ID

      Substitua PROJECT_ID pelo nome do projeto do Google Cloud .

  6. Se este guia estiver usando um projeto atual, verifique se você tem as permissões necessárias para concluir o guia. Se você criou um projeto, já tem as permissões necessárias.

  7. Verifique se o faturamento está ativado para o projeto do Google Cloud .

  8. Ative as APIs Cloud Scheduler e Pub/Sub, se ainda não estiverem ativadas:

    Funções necessárias para ativar APIs

    Para ativar APIs, você precisa da permissão serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão pelo papel de Proprietário (roles/owner). Caso contrário, é possível receber essa permissão pelo papel de Administrador do Service Usage (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.

    gcloud services enable cloudscheduler.googleapis.com pubsub.googleapis.com
  9. Instale a CLI do Google Cloud.

  10. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

  11. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  12. Crie ou selecione um projeto do Google Cloud .

    Funções necessárias para selecionar ou criar um projeto

    • Selecionar um projeto: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
    • Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos (roles/resourcemanager.projectCreator), que contém a permissão resourcemanager.projects.create. Saiba como conceder papéis.
    • Crie um projeto do Google Cloud :

      gcloud projects create PROJECT_ID

      Substitua PROJECT_ID por um nome para o projeto do Google Cloud que você está criando.

    • Selecione o projeto Google Cloud que você criou:

      gcloud config set project PROJECT_ID

      Substitua PROJECT_ID pelo nome do projeto do Google Cloud .

  13. Se este guia estiver usando um projeto atual, verifique se você tem as permissões necessárias para concluir o guia. Se você criou um projeto, já tem as permissões necessárias.

  14. Verifique se o faturamento está ativado para o projeto do Google Cloud .

  15. Ative as APIs Cloud Scheduler e Pub/Sub, se ainda não estiverem ativadas:

    Funções necessárias para ativar APIs

    Para ativar APIs, você precisa da permissão serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão pelo papel de Proprietário (roles/owner). Caso contrário, é possível receber essa permissão pelo papel de Administrador do Service Usage (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.

    gcloud services enable cloudscheduler.googleapis.com pubsub.googleapis.com

Funções exigidas

Para conseguir as permissões necessárias a fim de concluir o guia de início rápido, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.

Criar um tópico e uma assinatura do Pub/Sub

Um tópico do Pub/Sub é um recurso para o qual os editores podem enviar mensagens. Para receber as mensagens publicadas em um tópico, você precisa criar uma inscrição nele.

  1. Configure um tópico do Pub/Sub para usar como destino do cron job:

    gcloud pubsub topics create cron-topic
    

    Isso criará um tópico chamado cron-topic.

  2. Para receber mensagens e ver os resultados do job, crie uma assinatura do Pub/Sub:

    gcloud pubsub subscriptions create cron-sub --topic cron-topic
    

Criar um cron job usando o Cloud Scheduler

Use o comando gcloud scheduler jobs create pubsub para configurar uma unidade de trabalho conhecida como cron job, que é enviada a um destino do Pub/Sub em uma programação recorrente. A programação é especificada usando um formato baseado em unix-cron. Para mais informações, consulte Formato e fuso horário do cron job.

gcloud scheduler jobs create pubsub my-cron-job \
    --schedule="30 16 * * 7" \
    --topic=cron-topic \
    --location="us-east1" \
    --message-body="Hello world"

Você criou um job que envia uma mensagem "Hello world" para seu tópico do Pub/Sub às 16h30 aos domingos.

Agora você pode executar o job.

Executar o job

Além de executar de acordo com a programação especificada, você pode forçar a execução imediata do job:

gcloud scheduler jobs run my-cron-job --location="us-east1"

Devido a algumas configurações iniciais, a execução do primeiro job criado em um projeto pode levar alguns minutos.

Em seguida, verifique se o tópico do Pub/Sub recebeu a mensagem.

Verifique os resultados no Pub/Sub

Verifique se o tópico do Pub/Sub está recebendo mensagens do job.

  1. Receber mensagens de Pub/Sub de uma assinatura:

    gcloud pubsub subscriptions pull cron-sub --limit 5
    

    Se nenhuma mensagem for extraída inicialmente, execute o comando novamente.

  2. Veja os resultados da execução do job. A saída será semelhante a:

    DATA: Hello world!
    MESSAGE_ID: 5028933846601543
    ORDERING_KEY:
    ATTRIBUTES:
    DELIVERY_ATTEMPT:
    ACK_ID: RFAGFixdRkhRNxkIaFEOT14jPzUgKEUQAgVPAihdeTFXLkFacGhRDRlyfWB9[...]
    

Limpar

Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, exclua o projeto do Google Cloud e os recursos.

    Excluir um projeto do Google Cloud :

    gcloud projects delete PROJECT_ID

Como alternativa, exclua os recursos criados para este guia de início rápido:

  1. Exclua o cron job. No Cloud Shell ou na máquina em que você instalou a CLI gcloud, execute o comando:

    gcloud scheduler jobs delete MY_JOB \
        --location="LOCATION"
    

    Substitua:

    • MY_JOB: o nome do job a ser excluído.
    • LOCATION: o local do job. Por padrão, usa o local do app do App Engine do projeto atual, se houver um app associado.
  2. Exclua o tópico do Pub/Sub. No Cloud Shell ou na máquina em que você instalou a CLI gcloud, execute o comando:

    gcloud pubsub topics delete TOPIC_ID
    

    Substitua TOPIC_ID pelo ID do tópico do Pub/Sub a ser excluído.

  3. Exclua a assinatura do Pub/Sub. No Cloud Shell ou na máquina em que você instalou a CLI gcloud, execute o comando:

    gcloud pubsub subscriptions delete SUBSCRIPTION_ID
    

    Substitua SUBSCRIPTION_ID pelo ID da assinatura do Pub/Sub a ser excluída.

A seguir