Transferências orientadas por eventos

Pode usar o Serviço de transferência de dados do BigQuery para criar transferências orientadas por eventos que carregam automaticamente dados com base em notificações de eventos. Recomendamos a utilização de transferências orientadas por eventos se precisar de carregamento de dados incremental que otimize a rentabilidade.

Quando configura transferências baseadas em eventos, pode haver um atraso de alguns minutos entre cada transferência de dados. Se precisar de disponibilidade imediata dos dados, recomendamos que use a API Storage Write, que faz stream de dados diretamente para o BigQuery com a latência mais baixa possível. A API Storage Write oferece atualizações em tempo real para os exemplos de utilização mais exigentes.

Ao escolher entre as duas opções, pondere se precisa de dar prioridade ao carregamento incremental de lotes rentável com transferências acionadas por eventos ou se prefere a flexibilidade da API Google Cloud Storage Write.

Origens de dados com suporte de transferências orientadas por eventos

O Serviço de transferência de dados do BigQuery pode usar transferências baseadas em eventos com as seguintes origens de dados:

Limitações

As transferências baseadas em eventos para o BigQuery estão sujeitas às seguintes limitações:

  • Depois de uma transferência baseada em eventos ser acionada, o Serviço de transferência de dados do BigQuery aguarda até 10 minutos antes de acionar a execução da transferência seguinte, independentemente de um evento chegar nesse período.
  • As transferências orientadas por eventos não suportam parâmetros de tempo de execução para o URI de origem ou o caminho de dados.
  • Não é possível reutilizar a mesma subscrição do Pub/Sub por várias configurações de transferência orientadas por eventos.

Configure uma transferência baseada em eventos do Cloud Storage

As transferências baseadas em eventos do Cloud Storage usam notificações do Pub/Sub para saber quando os objetos no contentor de origem foram modificados ou adicionados. Quando usa o modo de transferência incremental, a eliminação de um objeto no contentor de origem não elimina os dados associados na tabela do BigQuery de destino.

Antes de começar

Antes de configurar uma transferência baseada em eventos do Cloud Storage, tem de realizar os seguintes passos:

  1. Ative a API Pub/Sub para o projeto que recebe notificações.

    Ative a API

  2. Se for o administrador do Cloud Storage (roles/storage.admin) e o administrador do Pub/Sub (roles/pubsub.admin), pode avançar para criar uma configuração de transferência orientada por eventos.

  3. Se não for o administrador do Cloud Storage (roles/storage.admin) nem o administrador do Pub/Sub (roles/pubsub.admin), peça ao seu administrador para lhe conceder as funções roles/storage.admin e roles/pubsub.admin ou para concluir a configuração do Pub/Sub e configurar as autorizações do agente de serviço nas secções seguintes e usar a subscrição do Pub/Sub pré-configurada para criar uma configuração de transferência orientada por eventos.

  4. Autorizações detalhadas necessárias para configurar notificações de configuração de transferência baseadas em eventos:

Configure notificações do Pub/Sub no Cloud Storage

  1. Certifique-se de que cumpre os pré-requisitos para usar o Pub/Sub com o Cloud Storage.

  2. Aplique uma configuração de notificação ao seu contentor do Cloud Storage:

    gcloud storage buckets notifications create gs://BUCKET_NAME --topic=TOPIC_NAME --event-types=OBJECT_FINALIZE

    Substitua o seguinte:

    • BUCKET_NAME: o nome do contentor do Cloud Storage para o qual quer acionar eventos de notificação de ficheiros
    • TOPIC_NAME: o nome do tópico do Pub/Sub no qual quer receber os eventos de notificação de ficheiros

    Também pode adicionar uma configuração de notificação através de outros métodos além da CLI gcloud. Para mais informações, consulte o artigo Aplique uma configuração de notificação.

  3. Verifique se a notificação do Pub/Sub está configurada corretamente para o Cloud Storage. Use o comando gcloud storage buckets notifications list:

    gcloud storage buckets notifications list gs://BUCKET_NAME

    Se for bem-sucedido, a resposta é semelhante à seguinte:

    etag: '132'
    id: '132'
    kind: storage#notification
    payload_format: JSON_API_V1
    selfLink: https://www.googleapis.com/storage/v1/b/my-bucket/notificationConfigs/132
    topic: //pubsub.googleapis.com/projects/my-project/topics/my-bucket
  4. Crie uma subscrição de obtenção para o tópico:

    gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_NAME

    Substitua SUBSCRIPTION_ID pelo nome ou ID da sua nova subscrição de obtenção do Pub/Sub.

    Pode criar uma subscrição de obtenção através de outros métodos.

Configure as autorizações do agente de serviço

  1. Encontre o nome do agente do Serviço de transferência de dados do BigQuery para o seu projeto:

    1. Aceda à página IAM e administrador.

      Aceda a IAM e administração

    2. Selecione a caixa de verificação Incluir concessões de funções fornecidas pela Google.

    3. O agente do Serviço de transferência de dados do BigQuery é apresentado com o nome service-<project_number>@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com e tem a função de agente do Serviço de transferência de dados do BigQuery atribuída.

      Verifique se a conta de serviço tem a função de agente de serviço.

    Para mais informações sobre os agentes de serviços, consulte o artigo Agentes de serviços.

  2. Conceda a funçãopubsub.subscriber ao agente do Serviço de transferência de dados do BigQuery.

    Cloud Console

    Siga as instruções em Controlar o acesso através da Google Cloud consola para conceder a função Pub/Sub Subscriber ao agente do Serviço de transferência de dados do BigQuery. A função pode ser concedida ao nível do tópico, da subscrição ou do projeto.

    gcloud CLI

    Siga as instruções em Definir uma política para adicionar a seguinte associação:

    {
      "role": "roles/pubsub.subscriber",
      "members": [
        "serviceAccount:project-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com"
    }

    Substitua PROJECT_NUMBER pelo ID do projeto onde os recursos de transferência são criados e faturados.

    Atribuição da utilização de quotas: quando o agente do Serviço de transferência de dados do BigQuery acede à subscrição do Pub/Sub, a utilização de quotas é cobrada ao projeto do utilizador.

  3. Confirme que ao agente do Serviço de transferência de dados do BigQuery é concedida a função pubsub.subscriber:

    1. Na Google Cloud consola, aceda à página Pub/Sub.

      Aceda ao Pub/Sub

    2. Selecione a subscrição do Pub/Sub que usou na transferência orientada por eventos.

    3. Se o painel de informações estiver oculto, clique em Mostrar painel de informações no canto superior direito.

    4. No separador Autorizações, verifique se o agente de serviço do Serviço de transferência de dados do BigQuery tem a função pubsub.subscriber

    Verifique se o agente de serviço tem pubsub.subscriber na subscrição.

Comandos resumidos para configurar notificações e autorizações

Os seguintes comandos da Google Cloud CLI incluem todos os comandos necessários para configurar as notificações e as autorizações, conforme detalhado nas secções anteriores.

gcloud

PROJECT_ID=project_id
CONFIG_NAME=config_name
RESOURCE_NAME="bqdts-event-driven-${CONFIG_NAME}"
# Create a Pub/Sub topic.
gcloud pubsub topics create "${RESOURCE_NAME}" --project="${PROJECT_ID}"
# Create a Pub/Sub subscription.
gcloud pubsub subscriptions create "${RESOURCE_NAME}" --project="${PROJECT_ID}" --topic="projects/${PROJECT_ID}/topics/${RESOURCE_NAME}"
# Create a Pub/Sub notification.
gcloud storage buckets notifications create gs://"${RESOURCE_NAME}" --topic="projects/${PROJECT_ID}/topics/${RESOURCE_NAME}" --event-types=OBJECT_FINALIZE
# Grant roles/pubsub.subscriber permission to the DTS service agent.
PROJECT_NUMBER=$(gcloud projects describe "${PROJECT_ID}" --format='value(projectNumber)')
gcloud pubsub subscriptions add-iam-policy-binding "${RESOURCE_NAME}"  --project="${PROJECT_ID}"  --member=serviceAccount:service-"${PROJECT_NUMBER}"@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com  --role=roles/pubsub.subscriber

Substitua o seguinte:

  • PROJECT_ID: o ID do seu projeto.
  • CONFIG_NAME: um nome para identificar esta configuração de transferência.

Crie uma configuração de transferência

Pode criar uma transferência do Cloud Storage orientada por eventos criando uma transferência do Cloud Storage e selecionando Orientada por eventos como o Tipo de agendamento. Como administrador do Cloud Storage (roles/storage.admin) e administrador do Pub/Sub (roles/pubsub.admin), tem autorizações suficientes para que o Serviço de transferência de dados do BigQuery configure automaticamente o Cloud Storage para enviar notificações.

Se não for o administrador do Cloud Storage (roles/storage.admin) nem o administrador do Pub/Sub (roles/pubsub.admin), tem de pedir ao seu administrador que lhe conceda as funções ou que conclua as configurações de notificações do Pub/Sub nas configurações do Cloud Storage e as configurações de autorizações do agente de serviço necessárias antes de poder criar a transferência orientada por eventos.