Fazer streaming do Pub/Sub para o BigQuery


Este tutorial usa o modelo de assinatura do Pub/Sub para BigQuery a fim de criar e executar um job de modelo do Dataflow usando o console do Google Cloud ou a CLI do Google Cloud. O tutorial mostra um exemplo de pipeline de streaming que lê mensagens JSON codificadas do Pub/Sub e usa uma função definida pelo usuário (UDF) para ampliar o modelo de streaming fornecido pelo Google, além de transformar dados de mensagens com o SDK do Apache Beam e gravar os resultados em uma tabela do BigQuery.

Os pipelines de análise de streaming e integração de dados usam o Pub/Sub para ingerir e distribuir dados. Com o Pub/Sub, é possível criar sistemas de produtores e consumidores de eventos, chamados de editores e assinantes. Os editores enviam eventos de forma assíncrona ao serviço Pub/Sub, que entrega os eventos a todos os serviços que precisam reagir a eles.

O Dataflow é um serviço totalmente gerenciado para transformar e enriquecer dados em modos de stream (em tempo real) e em lote. Ele fornece um ambiente de desenvolvimento de pipeline simplificado que usa o SDK do Apache Beam para transformar os dados recebidos e, em seguida, gerar os dados transformados.

A vantagem desse fluxo de trabalho é que é possível usar UDFs para transformar os dados da mensagem antes da gravação no BigQuery. Outra opção é usar uma assinatura do BigQuery, que grava mensagens do Pub/Sub diretamente no BigQuery, sem usar o Dataflow. Essa opção só dá suporte à entrega pelo menos uma vez, e não aceita o processamento único.

Objetivos

  • Crie um tópico do Pub/Sub.
  • Crie um conjunto de dados do BigQuery com uma tabela e um esquema.
  • Use um modelo de streaming fornecido pelo Google para transmitir dados da sua assinatura do Pub/Sub para o BigQuery usando o Dataflow.
  • Crie uma Função definida pelo usuário (UDF) para estender o modelo de streaming fornecido pelo Google.

Custos

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

  • Dataflow
  • Pub/Sub
  • Cloud Storage
  • Cloud Scheduler
  • BigQuery

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.

Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Saiba mais em Limpeza.

Antes de começar

Nesta seção, mostramos como selecionar um projeto, ativar APIs e conceder os papéis apropriados à sua conta de usuário e à conta de serviço do worker.

Console

  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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine, Dataflow, Cloud Logging, BigQuery, Pub/Sub, Cloud Storage, Resource Manager, and Cloud Scheduler APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Compute Engine, Dataflow, Cloud Logging, BigQuery, Pub/Sub, Cloud Storage, Resource Manager, and Cloud Scheduler APIs.

    Enable the APIs

  8. Para concluir as etapas deste tutorial, sua conta de usuário precisa ter o papel Usuário da conta de serviço. A conta de serviço padrão do Compute Engine precisa ter os seguintes papéis: Worker do Dataflow, Administrador do Dataflow, Editor do Pub/Sub, Administrador de objetos do Storage e Editor de dados do BigQuery. Para adicionar os papéis necessários no console do Google Cloud, siga estas etapas:

    1. No console do Google Cloud, abra a página IAM.

      Acessar o IAM
    2. Selecione o projeto.
    3. Na linha que contém a conta de usuário, clique em Editar principal e, em seguida, clique em Adicionar outro papel.
    4. Na lista suspensa, selecione o papel Usuário da conta de serviço.
    5. Na linha que contém a conta de serviço padrão do Compute Engine, clique em Editar principal e, em seguida, clique em Adicionar outro papel.
    6. Na lista suspensa, selecione o papel Worker do Dataflow.
    7. Repita para os papéis Administrador do Dataflow, Editor do Pub/Sub, Administrador de objetos do Storage e Editor de dados do BigQuery e clique em Salvar.

      Para mais informações sobre como conceder papéis, consulte Conceder um papel do IAM usando o console.

gcloud

  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. To initialize the gcloud CLI, run the following command:

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

    • 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.

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Compute Engine, Dataflow, Cloud Logging, BigQuery, Pub/Sub, Cloud Storage, Resource Manager, and Cloud Scheduler APIs:

    gcloud services enable compute.googleapis.com dataflow.googleapis.com logging.googleapis.com bigquery.googleapis.com pubsub.googleapis.com storage.googleapis.com cloudresourcemanager.googleapis.com cloudscheduler.googleapis.com
  7. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

  8. Grant roles to your user account. Run the following command once for each of the following IAM roles: roles/iam.serviceAccountUser

    gcloud projects add-iam-policy-binding PROJECT_ID --member="USER_IDENTIFIER" --role=ROLE
    • Replace PROJECT_ID with your project ID.
    • Replace USER_IDENTIFIER with the identifier for your user account. For example, user:myemail@example.com.

    • Replace ROLE with each individual role.
  9. Install the Google Cloud CLI.
  10. To initialize the gcloud CLI, run the following command:

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

    • 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.

  12. Make sure that billing is enabled for your Google Cloud project.

  13. Enable the Compute Engine, Dataflow, Cloud Logging, BigQuery, Pub/Sub, Cloud Storage, Resource Manager, and Cloud Scheduler APIs:

    gcloud services enable compute.googleapis.com dataflow.googleapis.com logging.googleapis.com bigquery.googleapis.com pubsub.googleapis.com storage.googleapis.com cloudresourcemanager.googleapis.com cloudscheduler.googleapis.com
  14. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

  15. Grant roles to your user account. Run the following command once for each of the following IAM roles: roles/iam.serviceAccountUser

    gcloud projects add-iam-policy-binding PROJECT_ID --member="USER_IDENTIFIER" --role=ROLE
    • Replace PROJECT_ID with your project ID.
    • Replace USER_IDENTIFIER with the identifier for your user account. For example, user:myemail@example.com.

    • Replace ROLE with each individual role.
  16. Conceda papéis à conta de serviço padrão do Compute Engine. Execute uma vez o comando a seguir para cada um dos seguintes papéis do IAM:

    • roles/dataflow.admin
    • roles/dataflow.worker
    • roles/storage.admin
    • roles/pubsub.editor
    • roles/bigquery.dataEditor
    gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" --role=SERVICE_ACCOUNT_ROLE

    Substitua:

    • PROJECT_ID: o ID do projeto.
    • PROJECT_NUMBER: o número do projeto. Para encontrar o número do projeto, use o comando gcloud projects describe.
    • SERVICE_ACCOUNT_ROLE: cada papel individual.

Criar a origem e o coletor de exemplo

Esta seção explica como criar o seguinte:

  • Uma fonte de streaming de dados usando o Pub/Sub.
  • Um conjunto de dados para carregar os dados no BigQuery.

Criar um bucket do Cloud Storage

Comece criando um bucket do Cloud Storage com o Console do Google Cloud ou a Google Cloud CLI. O pipeline do Dataflow usa esse bucket como um local de armazenamento temporário.

Console

  1. No console do Google Cloud, acesse a página Buckets do Cloud Storage.

    Acessar buckets

  2. Clique em Criar bucket.

  3. Na página Criar um bucket, emNomeie o bucket, insira um nome que atenda aos requisitos de nomenclatura de bucket. Os nomes do bucket do Cloud Storage precisam ser globalmente exclusivos. Não selecione as outras opções.

  4. Clique em Criar.

gcloud

Use o comando gcloud storage buckets create (em inglês).

gcloud storage buckets create gs://BUCKET_NAME

Substitua BUCKET_NAME por um nome para o bucket do Cloud Storage que atenda aos requisitos de nomenclatura de bucket. Os nomes do bucket do Cloud Storage precisam ser globalmente exclusivos.

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

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

Console

Para criar um tópico, complete as seguintes etapas.

  1. No Console do Google Cloud, acesse a página Tópicos do Pub/Sub.

    Acesse Tópicos

  2. Selecione Criar tópico.

  3. No campo ID do tópico, insira um ID para o tópico. Para informações sobre como nomear um tópico, consulte Diretrizes para nomear um tópico ou uma assinatura.

  4. Mantenha a opção Adicionar uma assinatura padrão. Não selecione as outras opções.

  5. Selecione Criar tópico.

gcloud

Para criar um tópico, execute o comando gcloud pubsub topics create. Para ver informações sobre como nomear uma assinatura, consulte Diretrizes para nomear um tópico ou uma assinatura.

gcloud pubsub topics create TOPIC_ID

Substitua TOPIC_ID por um nome para seu tópico do Pub/Sub.

Para criar uma assinatura no seu tópico, execute o comando gcloud pubsub subscriptions create:

gcloud pubsub subscriptions create --topic TOPIC_ID SUBSCRIPTION_ID

Substitua SUBSCRIPTION_ID por um nome para sua assinatura do Pub/Sub.

Criar e executar jobs do Cloud Scheduler

Crie e execute dois jobs do Cloud Scheduler: um que publique classificações positivas e outro que publique classificações negativas no seu tópico do Pub/Sub.

Console

Criar um job do Cloud Scheduler para classificações positivas.

  1. Acesse a página Cloud Scheduler no Console.

    Acessar o Cloud Scheduler

  2. Clique no botão Criar um job.

  3. Insira o nome positive-ratings-publisher.

  4. Selecione uma região do Dataflow perto de onde você executa os comandos neste tutorial. O valor da variável REGION precisa ser um nome de região válido. Para mais informações sobre regiões e locais, consulte Locais do Dataflow.

  5. Especifique a frequência do job usando o formato unix-cron: * * * * *

    Consulte mais informações em Como configurar programações de cron job.

  6. Selecionar fuso horário.

  7. Clique em Continuar.

  8. Na lista Destino, selecione Pub/Sub.

  9. Selecione o nome do seu Tópico na lista.

  10. Adicione a string Mensagem a ser enviada ao destino: {"url": "https://beam.apache.org/", "review": "positive"}

  11. Clique em Criar.

Agora você tem um cron job que envia uma mensagem com uma avaliação positiva para seu tópico do Pub/Sub a cada minuto. Sua função do Cloud é inscrita nesse tópico.

Criar um job do Cloud Scheduler para avaliações negativas.

  1. Na página Cloud Scheduler no console, clique no botão Criar um job.

  2. Insira o nome negative-ratings-publisher.

  3. Selecione uma região para executar o job.

  4. Especifique a frequência do job usando o formato unix-cron: */2 * * * *

    Consulte mais informações em Como configurar programações de cron job.

  5. Selecionar fuso horário.

  6. Clique em Continuar.

  7. Na lista Destino, selecione Pub/Sub.

  8. Selecione o nome do seu Tópico na lista.

  9. Adicione a string Mensagem a ser enviada ao destino: {"url": "https://beam.apache.org/", "review": "negative"}

  10. Clique em Criar.

Agora você tem um cron job que envia uma mensagem com uma classificação negativa para o tópico do Pub/Sub a cada dois minutos. Sua função do Cloud é inscrita nesse tópico.

gcloud

  1. Para criar um job do Cloud Scheduler para este tutorial, use o comando gcloud scheduler jobs create. Esta etapa cria um editor para "classificações positivas" que publica uma mensagem por minuto.

    gcloud scheduler jobs create pubsub positive-ratings-publisher \
      --schedule="* * * * *" \
      --location=DATAFLOW_REGION \
      --topic="TOPIC_ID" \
      --message-body='{"url": "https://beam.apache.org/", "review": "positive"}'
    

    Substitua DATAFLOW_REGION pela região onde o job do Dataflow será implantado. Selecione uma região do Dataflow perto de onde você executa os comandos deste tutorial. O valor da variável REGION precisa ser um nome de região válido.

  2. Para iniciar o job do Cloud Scheduler, use o comando gcloud scheduler jobs run.

    gcloud scheduler jobs run --location=DATAFLOW_REGION positive-ratings-publisher
    
  3. Criar e executar outro editor semelhante para "classificações negativas" que publica uma mensagem a cada dois minutos. Esta etapa cria um editor para "classificações negativas" que publica uma mensagem a cada dois minutos.

    gcloud scheduler jobs create pubsub negative-ratings-publisher \
      --schedule="*/2 * * * *" \
      --location=DATAFLOW_REGION  \
      --topic="TOPIC_ID" \
      --message-body='{"url": "https://beam.apache.org/", "review": "negative"}'
    
  4. Inicie o segundo job do Cloud Scheduler.

    gcloud scheduler jobs run --location=DATAFLOW_REGION negative-ratings-publisher
    

Criar um conjunto de dados do BigQuery

Crie um conjunto de dados e uma tabela do BigQuery com o esquema apropriado para seu tópico do Pub/Sub.

Console

Criar um conjunto de dados do BigQuery

  1. Abra a página do BigQuery no Console do Google Cloud.

    Acesse a página do BigQuery

  2. No painel Explorador, selecione o projeto em que você quer criar o conjunto de dados.

  3. Expanda a opção Ações e clique em Criar conjunto de dados.

  4. Na página Criar conjunto de dados, faça o seguinte:

    • Para o código do conjunto de dados, insira tutorial_dataset.
    • Em Local dos dados, escolha uma localização geográfica para o conjunto de dados. Após a criação de um conjunto de dados, o local não pode ser alterado.

      .

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

    • Clique em Criar conjunto de dados.

Crie uma tabela do BigQuery com um esquema.

  1. No painel Explorer, expanda o projeto e selecione um conjunto de dados tutorial_dataset.

  2. Expanda a opção Ações e clique em Abrir.

  3. No painel de detalhes, clique em Criar tabela .

  4. Na página Criar tabela, na seção Origem, selecione Tabela vazia.

  5. Na página Criar tabela, na seção Destino:

    • Verifique se o Nome do conjunto de dados está definido como tutorial_dataset.
    • No campo Nome da tabela, insira tutorial.
    • Verifique se Table type está definido como Native table.
  6. Na seção Esquema, insira a definição do esquema. Ative Editar como texto e insira o esquema da tabela a seguir como uma matriz JSON.

    [
      {
        "mode": "NULLABLE",
        "name": "url",
        "type": "STRING"
      },
      {
        "mode": "NULLABLE",
        "name": "review",
        "type": "STRING"
      }
    ]
    
  7. Em Configurações de particionamento e cluster, use o valor padrão No partitioning.

  8. Na seção Opções avançadas, para Criptografia, use o valor padrão Google-managed key. Por padrão, o Dataflow criptografa o conteúdo do cliente armazenado em repouso.

  9. Selecione Criar tabela.

gcloud

Use o comando bq mk para criar o banco de dados.

bq --location=DATAFLOW_REGION mk \
PROJECT_ID:tutorial_dataset

Substitua PROJECT_ID pelo ID do projeto de destino.

Use o comando bq mk com a sinalização --table ou -t para criar uma tabela no conjunto de dados.

bq mk \
    --table \
    PROJECT_ID:tutorial_dataset.tutorial \
    url:STRING,review:STRING

Criar uma Função definida pelo usuário (UDF)

Como opção, crie uma UDF em JavaScript para estender a assinatura do Pub/Sub fornecida pelo Google para o modelo do BigQuery. Com as UDFs, é possível definir transformações de dados que não estão no modelo e injetá-las no modelo.

A UDF a seguir valida os URLs das classificações recebidas. Classificações sem URLs ou com URLs incorretos são encaminhadas para uma tabela de saída diferente com sufixo _error_records, também conhecida como tabela de mensagens inativas, no mesmo projeto e conjunto de dados.

JavaScript

/**
 * User-defined function (UDF) to transform events
 * as part of a Dataflow template job.
 *
 * @param {string} inJson input Pub/Sub JSON message (stringified)
 */
 function process(inJson) {
    const obj = JSON.parse(inJson);
    const includePubsubMessage = obj.data && obj.attributes;
    const data = includePubsubMessage ? obj.data : obj;

    if (!data.hasOwnProperty('url')) {
      throw new Error("No url found");
    } else if (data.url !== "https://beam.apache.org/") {
      throw new Error("Unrecognized url");
    }

    return JSON.stringify(obj);
  }

Salve este snippet de JavaScript no bucket do Cloud Storage criado anteriormente.

Execute o pipeline

Execute um pipeline de streaming usando a assinatura do Pub/Sub fornecida pelo Google para o modelo do BigQuery. O pipeline recebe dados de entrada do tópico do Pub/Sub e os envia para o conjunto de dados do BigQuery.

Console

  1. No console do Google Cloud, acesse a página Jobs do Dataflow.

    Acessar "Jobs"

  2. Clique em Criar job usando um modelo.

  3. Digite um Nome do job para o job do Dataflow.

  4. Em Endpoint regional, selecione uma região para o job do Dataflow.

  5. Em Modelo do Dataflow, selecione o modelo Assinatura do Pub/Sub para o BigQuery.

  6. Em Tabela de saída do BigQuery, digite o seguinte:

    PROJECT_ID:tutorial_dataset.tutorial
    
  7. Em Assinatura de entrada do Pub/Sub, digite o seguinte:

    projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID
    

    Substitua PROJECT_ID pelo ID do projeto em que você criou o conjunto de dados do BigQuery e SUBSCRIPTION_ID pelo nome da assinatura do Pub/Sub.

  8. Em Local temporário, digite o seguinte:

    gs://BUCKET_NAME/temp/
    

    Substitua BUCKET_NAME pelo nome do bucket do Cloud Storage. A pasta temp armazena arquivos temporários, como o job do pipeline preparado.

  9. Opcional: para incluir uma UDF para o job, expanda os Parâmetros opcionais.

    1. Em Caminho da UDF em JavaScript no Cloud Storage, insira o seguinte:

      gs://BUCKET_NAME/dataflow_udf_transform.js
      
    2. Em Nome da UDF em JavaScript, digite o seguinte:

      process
      
  10. Cliquem em Executar job.

Para verificar se o modelo pode encaminhar mensagens para uma tabela de mensagens inativas, publique algumas classificações sem URLs ou com URLs errados.

  1. Acessar a página de Tópicos do Pub/Sub.

  2. Clique no seu TOPIC_ID.

  3. Acesse a seção Mensagens.

  4. Clique em Publicar mensagem.

  5. Insira algumas classificações sem URLs ou com URLs errados no Corpo da mensagem. Exemplo:

    {"url": "https://beam.apache.org/documentation/sdks/java/", "review": "positive"}
    
  6. Clique em Publicar.

gcloud

Para executar o modelo no shell ou terminal, use o comando gcloud dataflow jobs run.

gcloud dataflow jobs run JOB_NAME \
    --gcs-location gs://dataflow-templates-DATAFLOW_REGION/latest/PubSub_Subscription_to_BigQuery \
    --region DATAFLOW_REGION \
    --staging-location gs://BUCKET_NAME/temp \
    --parameters \
inputSubscription=projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID,\
outputTableSpec=PROJECT_ID:tutorial_dataset.tutorial

Substitua JOB_NAME por um nome exclusivo de sua escolha.

Para executar o modelo com a UDF, use o seguinte comando:

gcloud dataflow jobs run JOB_NAME \
    --gcs-location gs://dataflow-templates-DATAFLOW_REGION/latest/PubSub_Subscription_to_BigQuery \
    --region DATAFLOW_REGION \
    --staging-location gs://BUCKET_NAME/temp \
    --parameters \
inputSubscription=projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID,\
outputTableSpec=PROJECT_ID:tutorial_dataset.tutorial,\
javascriptTextTransformGcsPath=gs://BUCKET_NAME/dataflow_udf_transform.js,\
javascriptTextTransformFunctionName=process

Para verificar se o modelo pode encaminhar mensagens para uma tabela de mensagens inativas, publique algumas classificações sem URLs ou com URLs errados.

gcloud pubsub topics publish TOPIC_ID \
  --message='{"url": "https://beam.apache.org/documentation/sdks/java/", "review": "positive"}'

Ver os resultados

Veja os dados gravados nas tabelas do BigQuery.

Console

  1. No Console do Google Cloud, acesse a página BigQuery.
    Acessar a página do BigQuery

  2. No Editor de consultas, execute esta consulta:

    SELECT * FROM `PROJECT_ID.tutorial_dataset.tutorial`
    LIMIT 1000
    

    Pode levar até um minuto para que os dados comecem a aparecer na tabela.

    A consulta retorna linhas que foram adicionadas à sua tabela nas últimas 24 horas. Também é possível executar consultas usando o SQL padrão.

    Se você espera que alguns registros de erro sejam gravados na tabela de mensagens inativas, na consulta, use o nome da tabela tutorial_error_records. Por exemplo:

    SELECT * FROM `PROJECT_ID.tutorial_dataset.tutorial_error_records`
    LIMIT 1000
    

gcloud

Verifique os resultados no BigQuery executando a seguinte consulta:

bq query --use_legacy_sql=false 'SELECT * FROM `'"PROJECT_ID.tutorial_dataset.tutorial"'`'

Enquanto este pipeline estiver em execução, será possível ver novas linhas anexadas à tabela do BigQuery a cada minuto.

Se você espera que alguns registros de erro sejam gravados na tabela de mensagens inativas, na consulta, use o nome da tabela tutorial_error_records. Por exemplo:

SELECT * FROM `PROJECT_ID.tutorial_dataset.tutorial_error_records`
LIMIT 1000

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.

Excluir o projeto

A maneira mais fácil de eliminar o faturamento é excluir o projeto do Google Cloud que você criou para o tutorial.

Console

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

gcloud

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

Excluir recursos individuais

Se você quiser reutilizar o projeto mais tarde, poderá mantê-lo, mas excluir os recursos criados durante o tutorial.

Pare o pipeline do Dataflow

Console

  1. No console do Google Cloud, acesse a página Jobs do Dataflow.

    Acessar "Jobs"

  2. Clique no job que você quer interromper.

    Para interromper um job, o status dele precisa serem execução.

  3. Na página de detalhes do job, clique em Parar.

  4. Clique em Cancelar.

  5. Confirme sua escolha clicando em Interromper job.

gcloud

Para cancelar o job do Dataflow, use o comando gcloud dataflow jobs.

gcloud dataflow jobs list \
  --filter 'NAME=JOB_NAME AND STATE=Running' \
  --format 'value(JOB_ID)' \
  --region "DATAFLOW_REGION" \
  | xargs gcloud dataflow jobs cancel --region "DATAFLOW_REGION"

Limpar recursos do projeto do Google Cloud

Console

  1. Exclua os jobs do Cloud Scheduler.

    1. Vá para a página Cloud Scheduler no Console do Google Cloud.

      Acessar o Cloud Scheduler

    2. Selecione os jobs.

    3. Clique no botão Excluir na parte superior da página e confirme.

  2. Exclua o tópico do Pub/Sub e a assinatura.

    1. Acesse a página Tópicos do Pub/Sub no console do Google Cloud.

      Acesse Tópicos

    2. Selecione o tópico que você criou.

    3. Clique em Excluir para excluir permanentemente o tópico.

    4. Acesse a página Assinaturas do Pub/Sub no console do Google Cloud.

      Acessar "Assinaturas"

    5. Selecione a assinatura criada com seu tópico.

    6. Clique em Excluir para excluir permanentemente a assinatura.

  3. Exclua a tabela e o conjunto de dados do BigQuery.

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

      Acessar o BigQuery

    2. No painel Explorador, expanda o projeto.

    3. Ao lado do conjunto de dados que você quer excluir, clique em Ver ações e, depois, em excluir.

  4. Exclua o bucket do Cloud Storage.

    1. No console do Google Cloud, acesse a página Buckets do Cloud Storage.

      Acessar buckets

    2. Selecione o bucket que você quer excluir, clique em Excluir e siga as instruções.

gcloud

  1. Para excluir os jobs do Cloud Scheduler, use o comando gcloud scheduler jobs delete.

    gcloud scheduler jobs delete negative-ratings-publisher --location=DATAFLOW_REGION
    
    gcloud scheduler jobs delete positive-ratings-publisher --location=DATAFLOW_REGION
    
  2. Para excluir a assinatura e o tópico do Pub/Sub, use os comandos gcloud pubsub subscriptions delete e gcloud pubsub topics delete.

    gcloud pubsub subscriptions delete SUBSCRIPTION_ID
    gcloud pubsub topics delete TOPIC_ID
    
  3. Para excluir a tabela do BigQuery, use o comando bq rm.

    bq rm -f -t PROJECT_ID:tutorial_dataset.tutorial
    
  4. Exclua o conjunto de dados do BigQuery. O conjunto de dados em si não gera cobranças.

    bq rm -r -f -d PROJECT_ID:tutorial_dataset
    
  5. Para excluir o bucket do Cloud Storage, use o comando gcloud storage rm. O bucket sozinho não gera cobranças.

    gcloud storage rm gs://BUCKET_NAME --recursive
    

Revogar credenciais

Console

Se você mantiver o projeto, revogue os papéis concedidos à conta de serviço padrão do Compute Engine.

  1. No console do Google Cloud, abra a página IAM.

Acessar IAM

  1. Selecione um projeto, pasta ou organização.

  2. Encontre a linha que contém o principal cujo acesso você quer revogar. Nessa linha, clique em Editar principal.

  3. Clique no botão Excluir de cada papel a ser revogado e, em seguida, clique em Salvar.

gcloud

  • Se você mantiver o projeto, revogue os papéis concedidos à conta de serviço padrão do Compute Engine. Execute o comando a seguir uma vez para cada um dos seguintes papéis do IAM:
    • roles/dataflow.admin
    • roles/dataflow.worker
    • roles/storage.admin
    • roles/pubsub.editor
    • roles/bigquery.dataEditor
      gcloud projects remove-iam-policy-binding <var>PROJECT_ID</var> \
      --member=serviceAccount:<var>PROJECT_NUMBER</var>-compute@developer.gserviceaccount.com \
      --role=<var>ROLE</var>
    

  • Optional: Revoke the authentication credentials that you created, and delete the local credential file.

    gcloud auth application-default revoke
  • Optional: Revoke credentials from the gcloud CLI.

    gcloud auth revoke

A seguir