Programar e executar um cron job usando a CLI gcloud

Este guia de início rápido mostra 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. Criar um tópico do Pub/Sub para configurar como destino do job do Cloud Scheduler.
  2. Criar um cron job usando o Cloud Scheduler e configurar uma programação recorrente para o job.
  3. Executar o job.
  4. Verificar se o job foi concluído com sucesso.

O Cloud Scheduler tem um nível sem custo financeiro. Não convém executar este guia de início rápido. resultar em custos. Para mais informações, consulte Preços.

Antes de começar

  1. Faça login na sua Google Cloud conta do. Se você começou a usar o Google Cloud, 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.
  2. Instale a Google Cloud CLI.

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

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

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

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

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

      gcloud projects create PROJECT_ID

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

    • Selecione o Google Cloud projeto do que você criou:

      gcloud config set project PROJECT_ID

      Substitua PROJECT_ID pelo nome do Google Cloud projeto do.

  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 Google Cloud projeto.

  8. Ative as APIs Cloud Scheduler e Pub/Sub:

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter o papel do IAM de administrador de Service Usage role (roles/serviceusage.serviceUsageAdmin), que contém a serviceusage.services.enable permissão. Saiba como conceder papéis.

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

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

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

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

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

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

      gcloud projects create PROJECT_ID

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

    • Selecione o Google Cloud projeto do que você criou:

      gcloud config set project PROJECT_ID

      Substitua PROJECT_ID pelo nome do Google Cloud projeto do.

  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 Google Cloud projeto.

  15. Ative as APIs Cloud Scheduler e Pub/Sub:

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter o papel do IAM de administrador de Service Usage role (roles/serviceusage.serviceUsageAdmin), que contém a serviceusage.services.enable permissão. 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 personalizados papéis ou outros predefinidos papéis.

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 conferir 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 the gcloud scheduler jobs create pubsub comando 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 o 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"

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

Em seguida, você pode verificar se o tópico do Pub/Sub recebeu a mensagem.

Verificar 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 Google Cloud projeto do e os recursos.

    Excluir um Google Cloud projeto do:

    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 aplicativo do App Engine do projeto atual, se houver um aplicativo 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