Executar um job do Cloud Run que processa dados de eventos salvos no Cloud Storage


Use o Workflows para executar um job do Cloud Run como parte de um fluxo de trabalho que realiza processamento de dados mais complexo ou que orquestra um sistema de jobs atuais.

Neste tutorial, mostramos como usar o Workflows para executar um job do Cloud Run que processa dados de eventos armazenados em um bucket do Cloud Storage. Armazenar o payload do evento em um bucket do Cloud Storage permite criptografar os dados usando chaves de criptografia gerenciadas pelo cliente, o que não será possível se você estiver transmitindo os dados do evento como variáveis de ambiente para o job do Cloud Run.

Confira no diagrama a seguir uma visão geral:

O evento do Pub/Sub é roteado pelo gatilho do Eventarc para Workflows e salvo no bucket do
Cloud Storage. O job do Cloud Run processa dados de eventos armazenados no bucket.

Objetivos

Neste tutorial, você aprenderá a:

  1. Criar um job do Cloud Run que processe dados de eventos armazenados em um bucket do Cloud Storage.
  2. Implante um fluxo de trabalho que faça o seguinte:
    1. Recebe um evento como argumento.
    2. Grava os dados do payload do evento no bucket do Cloud Storage.
    3. Usa o conector da API Cloud Run Admin para executar o job do Cloud Run.
  3. Crie um tópico do Pub/Sub para publicar uma mensagem nele. Neste tutorial, usamos um evento do Pub/Sub como exemplo de como rotear eventos usando o Workflows, salvando o evento no Cloud Storage para que um job do Cloud Run possa processar os dados do evento.
  4. Criar um gatilho do Eventarc que executa o fluxo de trabalho quando uma mensagem é gravada no tópico do Pub/Sub.
  5. Acione o fluxo de trabalho escrevendo uma mensagem no tópico do Pub/Sub.

Custos

Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços. Novos usuários do Google Cloud podem estar qualificados para uma avaliação gratuita.

Antes de começar

As restrições de segurança definidas pela sua organização podem impedir que você conclua as etapas a seguir. Para informações sobre solução de problemas, consulte Desenvolver aplicativos em um ambiente restrito do Google Cloud.

Antes de começar este tutorial, você precisa ativar APIs específicas e criar uma conta serviço gerenciado pelo usuário. É preciso conceder à conta de serviço os papéis e as permissões necessários para rotear eventos usando um gatilho do Eventarc e executar um fluxo de trabalho.

Console

  1. Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de 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. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  4. Ative as APIs Cloud Build, Cloud Run, Cloud Storage, Eventarc, and Workflows.

    Ative as APIs

  5. Crie uma conta de serviço:

    1. No Console do Google Cloud, acesse a página Criar conta de serviço.

      Acesse "Criar conta de serviço"
    2. Selecione o projeto.
    3. No campo Nome da conta de serviço, insira um nome. O Console do Google Cloud preenche o campo ID da conta de serviço com base nesse nome.

      No campo Descrição da conta de serviço, insira uma descrição. Por exemplo, Service account for quickstart.

    4. Clique em Criar e continuar.
    5. Conceda os papéis a seguir à conta de serviço: Cloud Run Admin, Eventarc Event Receiver, Logs Writer, Storage Object Creator, Workflows Invoker

      Para conceder um papel, encontre a lista Selecionar um papel e escolha uma opção.

      Para conceder outros papéis, clique em Adicionar outro papel e adicione cada papel adicional.

    6. Clique em Continuar.
    7. Clique em Concluído para terminar a criação da conta de serviço.

  6. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  7. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  8. Ative as APIs Cloud Build, Cloud Run, Cloud Storage, Eventarc, and Workflows.

    Ative as APIs

  9. Crie uma conta de serviço:

    1. No Console do Google Cloud, acesse a página Criar conta de serviço.

      Acesse "Criar conta de serviço"
    2. Selecione o projeto.
    3. No campo Nome da conta de serviço, insira um nome. O Console do Google Cloud preenche o campo ID da conta de serviço com base nesse nome.

      No campo Descrição da conta de serviço, insira uma descrição. Por exemplo, Service account for quickstart.

    4. Clique em Criar e continuar.
    5. Conceda os papéis a seguir à conta de serviço: Cloud Run Admin, Eventarc Event Receiver, Logs Writer, Storage Object Creator, Workflows Invoker

      Para conceder um papel, encontre a lista Selecionar um papel e escolha uma opção.

      Para conceder outros papéis, clique em Adicionar outro papel e adicione cada papel adicional.

    6. Clique em Continuar.
    7. Clique em Concluído para terminar a criação da conta de serviço.

  10. Se você ativou o agente de serviço do Cloud Pub/Sub até 8 de abril de 2021 para dar suporte a solicitações de push autenticadas do Pub/Sub, conceda o papel Criador de token de conta de serviço (roles/iam.serviceAccountTokenCreator) à conta de serviço gerenciado pelo Google. Caso contrário, esse papel será concedido por padrão:
    1. No console do Google Cloud, acesse a página IAM.

      Acessar IAM

    2. Marque a caixa de seleção Incluir concessões de papel fornecidas pelo Google.
    3. Na coluna Nome, encontre a conta de serviço do Cloud Pub/Sub e clique em Editar principal na linha correspondente.
    4. Clique em Adicionar papel ou Adicionar outro papel.
    5. Na lista Selecionar papel, filtre por Criador de token de conta de serviço e selecione o papel.
    6. Clique em Salvar.
  11. No Console do Google Cloud, ative o Cloud Shell.

    Ativar o Cloud Shell

    Na parte inferior do Console do Google Cloud, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

  12. O Cloud Shell é compatível com as etapas de linha de comando deste tutorial.

gcloud

  1. Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de 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 CLI do Google Cloud.
  3. Para inicializar a CLI gcloud, execute o seguinte comando:

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

    • 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 do Google Cloud que você criou:

      gcloud config set project PROJECT_ID

      Substitua PROJECT_ID pelo nome do projeto do Google Cloud.

  5. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  6. Ative as APIs Cloud Build, Cloud Run, Cloud Storage, Eventarc, and Workflows:

    gcloud services enable cloudbuild.googleapis.com run.googleapis.com storage.googleapis.com eventarc.googleapis.com workflows.googleapis.com
  7. Configure a autenticação:

    1. Crie a conta de serviço:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      Substitua SERVICE_ACCOUNT_NAME por um nome para a conta de serviço.

    2. Conceda papéis à conta de serviço. Execute uma vez o seguinte comando para cada um dos seguintes papéis do IAM: roles/eventarc.eventReceiver, roles/logging.logWriter, roles/run.admin, roles/storage.objectCreator, roles/workflows.invoker

      gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE

      Substitua:

      • SERVICE_ACCOUNT_NAME: o nome da conta de serviço.
      • PROJECT_ID: o ID do projeto em que você criou a conta de serviço
      • ROLE: o papel a ser concedido
  8. Instale a CLI do Google Cloud.
  9. Para inicializar a CLI gcloud, execute o seguinte comando:

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

    • 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 do Google Cloud que você criou:

      gcloud config set project PROJECT_ID

      Substitua PROJECT_ID pelo nome do projeto do Google Cloud.

  11. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  12. Ative as APIs Cloud Build, Cloud Run, Cloud Storage, Eventarc, and Workflows:

    gcloud services enable cloudbuild.googleapis.com run.googleapis.com storage.googleapis.com eventarc.googleapis.com workflows.googleapis.com
  13. Configure a autenticação:

    1. Crie a conta de serviço:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      Substitua SERVICE_ACCOUNT_NAME por um nome para a conta de serviço.

    2. Conceda papéis à conta de serviço. Execute uma vez o seguinte comando para cada um dos seguintes papéis do IAM: roles/eventarc.eventReceiver, roles/logging.logWriter, roles/run.admin, roles/storage.objectCreator, roles/workflows.invoker

      gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE

      Substitua:

      • SERVICE_ACCOUNT_NAME: o nome da conta de serviço.
      • PROJECT_ID: o ID do projeto em que você criou a conta de serviço
      • ROLE: o papel a ser concedido
  14. Se você ativou o agente de serviço do Cloud Pub/Sub até 8 de abril de 2021, para oferecer suporte a solicitações push autenticadas do Pub/Sub, conceda o papel Criador de token da conta de serviço. (roles/iam.serviceAccountTokenCreator) à conta de serviço gerenciada pelo Google. Caso contrário, esse papel é concedido por padrão:
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \
        --role=roles/iam.serviceAccountTokenCreator
  15. Substitua PROJECT_NUMBER pelo número do projeto do Google Cloud. Encontre o número do projeto na página Boas-vindas do console do Google Cloud ou executando o seguinte comando:

    gcloud projects describe PROJECT_ID --format='value(projectNumber)'

Criar um job do Cloud Run

Neste tutorial, usamos um exemplo de código que pode ser encontrado no GitHub. O script de implantação cria uma imagem de contêiner para gerar um job do Cloud Run. O script também cria um bucket do Cloud Storage. O job do Cloud Run lê todos os dados de evento armazenados no bucket do Cloud Storage e os imprime.

  1. Clone o repositório do app de amostra na máquina local para ver o código de amostra:

    git clone https://github.com/GoogleCloudPlatform/workflows-demos.git
    

    Se preferir, faça o download do exemplo como um arquivo ZIP

  2. Acesse o diretório que contém o exemplo de código:

    cd workflows-demos/cloud-run-jobs-payload-gcs/message-payload-job
    
  3. Crie o job do Cloud Run executando o script de implantação:

    ./deploy-job.sh
    

O script cria um bucket do Cloud Storage com o nome message-payload-PROJECT_ID, em que PROJECT_ID é o ID do projeto do Google Cloud. Um job do Cloud Run chamado message-payload-job também é criado.

Implantar um fluxo de trabalho que execute o job do Cloud Run

Defina e implante um fluxo de trabalho que execute o job do Cloud Run que você acabou de criar. Uma definição de fluxo de trabalho é composta por uma série de etapas descritas usando a sintaxe de fluxos de trabalho.

O fluxo de trabalho recebe um evento, salva os dados dele em um bucket do Cloud Storage e executa um job do Cloud Run para processar os dados do evento.

Console

  1. No console do Google Cloud, acesse a página Fluxos de trabalho:

    Acessar fluxos de trabalho

  2. Clique em Criar.

  3. Insira um nome para o novo fluxo de trabalho, como message-payload-workflow.

  4. Escolha uma região apropriada, por exemplo, us-central1.

  5. No campo Conta de serviço, selecione a conta de serviço criada anteriormente.

    A conta de serviço serve como a identidade do fluxo de trabalho. Você já deve ter concedido os seguintes papéis à conta de serviço:

    • Administrador do Cloud Run: para executar jobs do Cloud Run
    • Gravador de registros: para gravar entradas de registro
    • Criador de objetos do Storage: cria objetos no Cloud Storage.
  6. Clique em Próxima.

  7. No editor de fluxo de trabalho, insira a seguinte definição para seu fluxo de trabalho:

    main:
        params: [event]
        steps:
            - init:
                assign:
                    - project_id: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
                    - event_bucket: ${"message-payload-" + project_id}
                    - event_file: ${event.id + ".data.json"}
                    - job_name: message-payload-job
                    - job_location: us-central1
            - log_event:
                call: sys.log
                args:
                    data: ${event}
            - write_payload_to_gcs:
                call: http.post
                args:
                    url: ${"https://storage.googleapis.com/upload/storage/v1/b/" + event_bucket + "/o"}
                    auth:
                        type: OAuth2
                    query:
                        name: ${event_file}
                    body:
                        ${event.data}
            - run_job_to_process_payload:
                call: googleapis.run.v1.namespaces.jobs.run
                args:
                    name: ${"namespaces/" + project_id + "/jobs/" + job_name}
                    location: ${job_location}
                    body:
                        overrides:
                            containerOverrides:
                                env:
                                    - name: INPUT_BUCKET
                                      value: ${event_bucket}
                                    - name: INPUT_FILE
                                      value: ${event_file}
                result: job_execution
            - finish:
                return: ${job_execution}
  8. Selecione Implantar.

gcloud

  1. Crie um arquivo de código-fonte para seu fluxo de trabalho:

    touch message-payload-workflow.yaml
    
  2. Copie a seguinte definição de fluxo de trabalho para message-payload-workflow.yaml:

    main:
        params: [event]
        steps:
            - init:
                assign:
                    - project_id: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
                    - event_bucket: ${"message-payload-" + project_id}
                    - event_file: ${event.id + ".data.json"}
                    - job_name: message-payload-job
                    - job_location: us-central1
            - log_event:
                call: sys.log
                args:
                    data: ${event}
            - write_payload_to_gcs:
                call: http.post
                args:
                    url: ${"https://storage.googleapis.com/upload/storage/v1/b/" + event_bucket + "/o"}
                    auth:
                        type: OAuth2
                    query:
                        name: ${event_file}
                    body:
                        ${event.data}
            - run_job_to_process_payload:
                call: googleapis.run.v1.namespaces.jobs.run
                args:
                    name: ${"namespaces/" + project_id + "/jobs/" + job_name}
                    location: ${job_location}
                    body:
                        overrides:
                            containerOverrides:
                                env:
                                    - name: INPUT_BUCKET
                                      value: ${event_bucket}
                                    - name: INPUT_FILE
                                      value: ${event_file}
                result: job_execution
            - finish:
                return: ${job_execution}
  3. Implante o fluxo de trabalho digitando o seguinte comando:

    gcloud workflows deploy message-payload-workflow \
        --location=us-central1 \
        --source=message-payload-workflow.yaml \
        --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
    

    Substitua:

    • SERVICE_ACCOUNT_NAME: o nome da conta de serviço que você criou anteriormente
    • PROJECT_ID: o ID do projeto do Google Cloud.

    A conta de serviço serve como a identidade do fluxo de trabalho. Você já deve ter concedido os seguintes papéis à conta de serviço:

    • roles/logging.logWriter: para gravar entradas de registro.
    • roles/run.admin: para executar jobs do Cloud Run.
    • roles/storage.objectCreator: para criar objetos no Cloud Storage.

O fluxo de trabalho faz o seguinte:

  1. Etapa init: aceita um evento como argumento e define as variáveis necessárias.

  2. Etapa log_event: cria uma entrada de registro no Cloud Logging usando a função sys.log.

  3. Etapa write_payload_to_gcs: faz uma solicitação HTTP POST e grava os dados de payload do evento em um arquivo de bucket do Cloud Storage.

  4. Etapa run_job_to_process_payload: usa o método do conector da API Cloud Run Admin, googleapis.run.v1.namespaces.jobs.run, para executar o job. O bucket do Cloud Storage e o nome de arquivo de dados são transmitidos como variáveis de substituição do fluxo de trabalho para o job.

  5. Etapa finish: retorna informações sobre a execução do job como resultado do fluxo de trabalho.

Criar um tópico do Pub/Sub.

Crie um tópico do Pub/Sub para publicar uma mensagem nele. Um evento do Pub/Sub é usado para demonstrar como rotear um evento usando o Workflows e salvá-lo no Cloud Storage para que um job do Cloud Run possa processar os dados do evento.

Console

  1. No console do Google Cloud, acesse a página Tópicos.

    Acesse Tópicos

  2. Clique em Criar tópico.

  3. No campo ID do tópico, insira um ID para o tópico, como message-payload-topic.

  4. Mantenha a opção Adicionar uma assinatura padrão.

  5. Não selecione as outras opções.

  6. Clique em Criar.

gcloud

Para criar um tópico com o ID message-payload-topic, execute o comando gcloud pubsub topics create:

gcloud pubsub topics create message-payload-topic

Criar um gatilho do Eventarc para rotear eventos para o fluxo de trabalho

Para executar automaticamente o fluxo de trabalho e, por sua vez, o job do Cloud Run, crie um gatilho do Eventarc que responda a eventos do Pub/Sub e encaminhe os eventos para o fluxo de trabalho. Sempre que uma mensagem é gravada no tópico do Pub/Sub, o evento aciona uma execução do fluxo de trabalho.

Console

  1. No console do Google Cloud, acesse a página Fluxos de trabalho:

    Acessar fluxos de trabalho

  2. Clique no nome do seu fluxo de trabalho, como message-payload-workflow.

  3. Na página Detalhes do fluxo de trabalho, clique em Editar.

  4. Na página Editar fluxo de trabalho, na seção Gatilhos, clique em Adicionar novo gatilho > Eventarc.

    O painel Gatilho do Eventarc é aberto.

  5. No campo Nome do gatilho, insira um nome, como message-payload-trigger.

  6. Na lista Provedor de eventos, selecione Cloud Pub/Sub.

  7. Na lista Evento, selecione google.cloud.pubsub.topic.v1.messagePublished.

  8. Na lista Selecionar um tópico do Cloud Pub/Sub, escolha o tópico do Pub/Sub criado anteriormente.

  9. No campo Conta de serviço, selecione a conta de serviço criada anteriormente.

    A conta de serviço serve como a identidade do gatilho. Você já deve ter concedido os seguintes papéis à conta de serviço:

    • Receptor de eventos do Eventarc: para receber eventos
    • Invocador de fluxos de trabalho: para executar fluxos de trabalho
  10. Clique em Salvar acionador.

    O gatilho do Eventarc agora aparece na seção Gatilhos na página Editar fluxo de trabalho.

  11. Clique em Próxima.

  12. Clique em Implantar.

gcloud

Crie um gatilho do Eventarc executando o seguinte comando:

gcloud eventarc triggers create message-payload-trigger \
    --location=us-central1 \
    --destination-workflow=message-payload-workflow \
    --destination-workflow-location=us-central1 \
    --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
    --transport-topic=projects/PROJECT_ID/topics/message-payload-topic \
    --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Substitua:

  • PROJECT_ID: o ID do seu projeto do Google Cloud;
  • SERVICE_ACCOUNT_NAME: o nome da conta de serviço que você criou anteriormente.

A conta de serviço serve como a identidade do gatilho. Você já deve ter concedido os seguintes papéis à conta de serviço:

  • roles/eventarc.eventReceiver: para receber eventos
  • roles/workflows.invoker: para executar fluxos de trabalho.

Acione o fluxo de trabalho

Teste o sistema completo publicando uma mensagem no tópico do Pub/Sub e gerando um evento. Para mais informações, consulte Como acionar um fluxo de trabalho com eventos ou mensagens do Pub/Sub.

  1. Publique uma mensagem para o tópico do Pub/Sub a fim de gerar um evento:

    gcloud pubsub topics publish message-payload-topic --message="Hello World"
    

    O evento é roteado para o fluxo de trabalho que registra a mensagem do evento, salva os dados do evento no bucket do Cloud Storage e executa o job do Cloud Run para processar os dados salvos no Cloud Storage. Isso pode levar um minuto.

  2. Visualize as execuções do job para confirmar se ele foi executado conforme o esperado:

    gcloud run jobs executions list --job=message-payload-job
    

    Uma nova execução de job vai aparecer na saída.

  3. Para visualizar as entradas de registro relacionadas a eventos criadas pelo acionamento do fluxo de trabalho, execute o seguinte comando:

    gcloud logging read "resource.type=cloud_run_job AND textPayload:Payload"
    
  4. Procure uma entrada de registro semelhante a esta:

    textPayload: "Payload: {'message': {'data': 'SGVsbG8gV29ybGQ=', 'messageId': '8834108235224238',\
    \ 'publishTime': '2023-09-20T17:07:52.921Z'}, 'subscription': 'projects/MY_PROJECT/subscriptions/eventarc-us-central1-message-payload-trigger-sub-741'}"
    ...
    resource:
    labels:
      job_name: message-payload-job
      location: us-central1
      project_id: MY_PROJECT
    type: cloud_run_job
    textPayload: Processing message payload gs://message-payload-MY_PROJECT/8254002311197919.data.json
    
  5. É possível confirmar se os resultados estão conforme o esperado visualizando os dados do evento no objeto do bucket do Cloud Storage.

    1. Recupere o nome do bucket:

      gsutil ls

      O resultado será assim:

      gs://message-payload-PROJECT_ID/

    2. Liste os objetos no bucket:

      gsutil ls -r gs://message-payload-PROJECT_ID/**

      A saída será semelhante a esta:

      gs://message-payload-PROJECT_ID/OBJECT_ID.data.json

      Observe o OBJECT_ID a ser usado na próxima etapa.

    3. Faça o download do objeto no bucket como um arquivo:

      gcloud storage cp gs://message-payload-PROJECT_ID/OBJECT_ID.data.json message-event.txt

      Substitua OBJECT_ID pelo ID retornado na etapa anterior.

    4. Em um editor de texto, abra o arquivo message-event.txt. O corpo do evento gravado no arquivo será semelhante ao seguinte:

      {
        "message": {
          "data": "SGVsbG8gV29ybGQ=",
          "messageId": "8254002311197919",
          "publishTime": "2023-09-20T16:54:29.312Z"
        },
        "subscription": "projects/MY_PROJECT/subscriptions/eventarc-us-central1-message-payload-trigger-sub-741"
      }
      

      Se você decodificar o valor de dados de SGVsbG8gV29ybGQ= do formato Base64, "Hello World" será retornado.

Limpar

Se você criou um novo projeto para este tutorial, exclua o projeto. Se você usou um projeto atual e quer mantê-lo sem as alterações incluídas neste tutorial, exclua os recursos criados para o tutorial.

Exclua o projeto

O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para o tutorial.

Para excluir o projeto:

  1. No Console do Google Cloud, acesse a página Gerenciar recursos.

    Acessar "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

Excluir recursos do tutorial

Exclua os recursos criados neste tutorial:

  1. Exclua o tópico do Pub/Sub.

  2. Excluir o gatilho do Eventarc.

  3. Excluir o fluxo de trabalho do Workflows.

  4. Exclua o job do Cloud Run.

  5. Exclua o bucket do Cloud Storage.

A seguir