Integração do Pub/Sub com Cloud Storage usando o Dataflow do GCP

 Nesta postagem, falaremos como realizar a integração de um tópico do Pub/Sub com o Cloud Storage utilizando o Dataflow do Google Cloud.

O que é Dataflow?

É um serviço totalmente gerenciado que permite processamento em lote(batch) ou streaming. Minimiza a latência, o tempo e o custo de processamento por meio de escalonamento automático e gerenciamento de recursos.

O que é Pub/Sub?

O Pub/Sub (Publish/Subscribe) é um serviço de mensagens assíncronas do GCP.

Permite armazenamento e entrega de mensagens em formato de tópicos e assinaturas.

O que é Cloud Storage?

Fornece, a nível mundial, um armazenamento de objetos altamente durável que escalona para exabytes de dados. É possível acessar dados instantaneamente de qualquer classe de armazenamento, integrar o armazenamento aos seus aplicativos com uma API exclusiva unificada e otimizar o preço e desempenho de forma fácil.

Passo a Passo

1. O primeiro passo a fazer é o login em sua conta do GCP, para este tutorial você vai precisar de uma conta que possua um projeto.

2. Vá até a barra superior e clique no ícone do Cloud Shell, igual a imagem abaixo.

3. Criaremos o bucket do Cloud Storage em que iremos exportar nossa tabela:

gsutil mb -l southamerica-east1 gs://[id-meu-projeto]-arquivos

4. Vá até o menu, selecione Pub/Sub > Tópicos:

5. Selecione Criar Tópico:

6. Dê um nome/id para seu tópico, ele precisa ter de 3 a 255 caracteres, começar com uma letra e conter apenas estes tipos de caracteres: letras, números, traços (-), pontos (.), sublinhados (_), indicadores diacríticos (~), símbolos de porcentagem (%) ou indicadores de adição (+). Não é possível iniciar com "goog". Neste exemplo usaremos o nome "eventos":

7. Verifique o tópico criado:

8. Selecione Exportar para o Text.

9. Insira um nome e uma região para o Job, perceba que o Dataflow selecionou automaticamente um Modelo para processar a integração do Pub/Sub para o Storage:

10. Preencha as informações necessarias conforme abaixo:Local temporário

Observações:

  • A propriedade "Input Pub/Sub topic" se refere ao tópico do Pub/Sub que iremos ler no jog do Dataflow, a nossa origem/Input.
  • A propriedade "Output file directory in Cloud Storage" se refere ao diretório do Cloud Storage que iremos colocar o arquivo gerado, deverá ser colocado no formato: gs://<bucket>/<diretório>.
  • A propriedade "Output filename prefix" se refere ao prefixo que nosso arquivo vai ter. Exemplo: mensagens_.
  • A propriedade "Local temporário" se refere ao caminho no storage que irá ser gravado arquivos temporários do processamento.

11. Clique em Executar Job.

Observação: Ao clicar em Linha de comando irá aparecer o comando de criação que pode ser executado no Cloud Shell:

gcloud dataflow jobs run ps-to-text-eventos \
--gcs-location gs://dataflow-templates-us-central1/latest/Cloud_PubSub_to_GCS_Text \
--region southamerica-east1 \
--staging-location gs://id-do-meu-projeto-arquivos/temp \
--parameters inputTopic=projects/id-do-meu-projeto/topics/eventos,outputDirectory=gs://id-do-meu-projeto-arquivos,outputFilenamePrefix=mensagem_

12.Verifique a execução do Job:

13. Volte ao pub/sub e clique em publicar mensagem:

14. Digite sua mensagem e clique em Publicar:

15. Vá até o seu diretório do Storage e veifique o arquivo criado:

Referências

  • Por que usar Pub/Sub?

https://inside.contabilizei.com.br/por-que-usar-pub-sub-378f0e212e67

  • Pub/Sub

https://cloud.google.com/pubsub?hl=pt-br

  • O que é o Pub/Sub?

https://cloud.google.com/pubsub/docs/overview