Agende e execute uma tarefa cron com a CLI gcloud

Este início rápido mostra como usar a CLI gcloud para realizar algumas operações básicas com o Cloud Scheduler.

Neste início rápido:

  1. Crie um tópico do Pub/Sub para configurar como destino da tarefa do Cloud Scheduler.
  2. Crie uma tarefa cron com o Cloud Scheduler e configure uma programação recorrente para a tarefa.
  3. Execute a tarefa.
  4. Verifique se a tarefa foi executada com êxito.

O Cloud Scheduler tem um nível gratuito e a execução deste início rápido não deve incorrer em custos. Para mais informações, consulte a secção Preços.

Antes de começar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.

  3. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

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

    gcloud init
  5. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. Se estiver a usar um projeto existente para este guia, verifique se tem as autorizações necessárias para concluir este guia. Se criou um novo projeto, já tem as autorizações necessárias.

  7. Verify that billing is enabled for your Google Cloud project.

  8. Enable the Cloud Scheduler and Pub/Sub APIs:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable cloudscheduler.googleapis.com pubsub.googleapis.com
  9. Install the Google Cloud CLI.

  10. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

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

    gcloud init
  12. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  13. Se estiver a usar um projeto existente para este guia, verifique se tem as autorizações necessárias para concluir este guia. Se criou um novo projeto, já tem as autorizações necessárias.

  14. Verify that billing is enabled for your Google Cloud project.

  15. Enable the Cloud Scheduler and Pub/Sub APIs:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable cloudscheduler.googleapis.com pubsub.googleapis.com
  16. Funções necessárias

    Para receber as autorizações de que precisa para concluir este início rápido, peça ao seu administrador que lhe conceda as seguintes funções da IAM no seu projeto:

    Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

    Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

    Crie um tópico e uma subscrição do Pub/Sub

    Um tópico Pub/Sub é um recurso para o qual os publicadores podem enviar mensagens. Para receber mensagens publicadas num tópico, tem de criar uma subscrição desse tópico.

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

      gcloud pubsub topics create cron-topic
      

      Esta ação cria um tópico denominado cron-topic.

    2. Para receber mensagens e ver os resultados da sua tarefa, crie uma subscrição do Pub/Sub:

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

    Crie uma tarefa cron com o Cloud Scheduler

    Use o comando gcloud scheduler jobs create pubsub para configurar uma unidade de trabalho conhecida como tarefa cron que é enviada para um destino do Pub/Sub numa programação recorrente. O horário é especificado através de um formato baseado no unix-cron. Para mais informações, consulte o artigo Formato de tarefa cron e fuso horário.

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

    Criou uma tarefa que envia uma mensagem "Olá, mundo" para o seu tópico do Pub/Sub às 16:30 aos domingos.

    Agora, pode executar a tarefa.

    Execute a tarefa

    Além de ser executado de acordo com a programação especificada, pode forçar a execução imediata da tarefa:

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

    Tenha em atenção que, devido a alguma configuração inicial, a primeira tarefa criada num projeto pode demorar alguns minutos a ser executada.

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

    Valide os resultados no Pub/Sub

    Verifique se o tópico do Pub/Sub está a receber mensagens da tarefa.

    1. Extraia mensagens Pub/Sub de uma subscrição:

      gcloud pubsub subscriptions pull cron-sub --limit 5
      

      Se não forem extraídas mensagens inicialmente, execute o comando novamente.

    2. Veja os resultados da execução da tarefa. O resultado deve ser semelhante ao seguinte:

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

    Limpar

    Para evitar incorrer em custos na sua Google Cloud conta pelos recursos usados nesta página, elimine o Google Cloud projeto com os recursos.

      Delete a Google Cloud project:

      gcloud projects delete PROJECT_ID

    Em alternativa, elimine os recursos que criou para este início rápido:

    1. Elimine a tarefa cron. No Cloud Shell ou na máquina onde instalou a CLI gcloud, execute o comando:

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

      Substitua o seguinte:

      • MY_JOB: o nome da tarefa a eliminar.
      • LOCATION: a localização do trabalho. Por predefinição, usa a localização da app do App Engine do projeto atual se existir uma app associada.
    2. Elimine o tópico Pub/Sub. No Cloud Shell ou na máquina onde 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 eliminar.

    3. Elimine a subscrição do Pub/Sub. No Cloud Shell ou na máquina onde instalou a CLI gcloud, execute o comando:

      gcloud pubsub subscriptions delete SUBSCRIPTION_ID
      

      Substitua SUBSCRIPTION_ID pelo ID da subscrição do Pub/Sub a eliminar.

    O que se segue?