DataOps - Laboratório 1

Laboratório para ambientação no console AWS.

Armazenamento com S3 e notificação com SNS.

As instruções do laboratório estão em português. Para alterar o idioma, procure a opção na barra inferior.

Objetivos

  • Ambientação no ambiente e console AWS
  • Criar um bucket S3 para armazenar arquivos
  • Criar um Tópico SNS para enviar mensagens
  • Criar uma assinatura de e-mail para o tópico SNS
  • Configurar S3 para enviar uma mensagem para SNS quando incluir ou excluir arquivo

Arquitetura da solução

Bucket S3 e notificações SNS

  1. Inicie seu ambiente da AWS

  2. No console da AWS, procure pelo serviço S3 na barra pesquisa superior e clique para abrir o serviço

    a. O Amazon S3 (Amazon Simple Storage Service) é um serviço de armazenamento de objetos com escalabilidade, disponibilidade, segurança e desempenho. A quantidade de dados que pode ser armazenada é virtualmente ilimitada

  1. O primeiro passo é criar um bucket para armazenar objetos.

    a. Um bucket é um contêiner de objetos. Um objeto é qualquer arquivo ou documento colocado no bucket.

    b. Clique no botão para criar um novo bucket

  2. Na tela de criação e configuração do novo bucket, preencha os seguintes campos:

     a. "Nome do bucket": dataops-dados-nomesobrenome

         i. Troque nomesobrenome pelo seu nome e sobrenome. O nome do bucket deve ser único em toda a AWS, independente da conta e região

     b. "Região da AWS": Leste dos EUA (Norte da Virgínia) us-east-1

         i. Preste atenção na região. Sempre vamos utilizar essa mesma nos labs

     c. Clique em

  1. Você será redirecionado para a página inicial com a lista dos buckets, na qual verá o bucket criado

  1. O próximo passo é criar um tópico SNS

    a. O Amazon SNS (Amazon Simple Notification Service) é um serviço de mensagens totalmente gerenciado para comunicação entre aplicações e comunicação entre aplicações e pessoas

    b. As mensagens são enviadas e armazenadas em um tópico, num sistema de muitos para muitos. Ou seja, mensagens podem ser enviadas para diversos destinos

    c. Mensagem são enviadas por um sistema de push para destinos que fazem a assinatura de um tópico. Um tópico pode ter vários assinantes

    d. Um assinante pode ser um e-mail, SMS, endpoint HTTP/S, função lambda, fila SQS, entre outros.

  2. No console da AWS, procure pelo serviço SNS na barra pesquisa superior e clique para abrir o serviço

9.No menu lateral escolha a opção . Caso náo veja essa opção no menu lateral esquerdo, clique em para abrir o menu.

  1. Clique no botão

  2. Na tela de criar e configurar o tópico, configure os seguintes campos:

    a. "Tipo": Padrão

    b. "Nome": Topico-Evento-Dados-S3

    c. Abra a seção "Política de acesso"

         i. Uma política de acesso define quais as permissões do tópico criado. A permissão padrão define que apenas o proprietário do tópico (conta que criou) pode publicar mensagens. É preciso dar a permissão para o S3 também publicar uma mensagem

    d. Selecione a opção "Avançado"

    e. Adicione o seguinte "Statement" antes do fechamento do último colchete (]), separando por uma vírgula (,).

{
  "Sid": "Statement-id",
  "Effect": "Allow",
  "Principal": { "Service": "s3.amazonaws.com" },
  "Action": "sns:Publish",
  "Resource": "arn:aws:sns:us-east-1:id-conta:Topico-Evento-Dados-S3",
  "Condition": {
    "ArnLike": {
      "aws:SourceArn": "arn:aws:s3:::dataops-dados-nomesobrenome"
    }
  }
}

    Troque o nome do bucket (dataops-dados-nomesobrenome) pelo nome do bucket que criou nos passos anteriores e id-conta pelo id da sua conta (disponível na barra superior, ao clicar no nome do usuário – voclabs/user... e clicar no ícone de copiar)

    O documento completo da política deve ficar assim:

{
  "Version": "2008-10-17",
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Sid": "__default_statement_ID",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "SNS:Publish",
        "SNS:RemovePermission",
        "SNS:SetTopicAttributes",
        "SNS:DeleteTopic",
        "SNS:ListSubscriptionsByTopic",
        "SNS:GetTopicAttributes",
        "SNS:Receive",
        "SNS:AddPermission",
        "SNS:Subscribe"
      ],
      "Resource": "",
      "Condition": {
        "StringEquals": {
          "AWS:SourceOwner": " id-conta"
        }
      }
    },
    {
      "Sid": "Statement-id",
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": "sns:Publish",
      "Resource": "arn:aws:sns:us-east-1:id-conta:Topico-Evento-Dados-S3",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:s3:::dataops-dados-nomesobrenome"
        }
      }
    }
  ]
}

    f. Clique em

  1. Para que a mensagem seja enviada é preciso criar assinaturas (consumidor) e definir quem vai receber a mensagem enviada para o tópico (produtor)

  2. Na lista dos tópicos (se não estiver vendo, clique em no menu lateral), clique no nome do tópico criado anteriormente.

  3. Na seção "Assinaturas", clique em

  4. Na tela de configuração da nova assinatura preencha os seguintes campos:

    a. "Protocolo": E-mail

    b. "Endpoint": coloque o e-mail para receber a notificação

    c. Clique em

  5. A assinatura para um e-mail depende da autorização do dono do e-mail para completar a configuração.

    a. Acesse a caixa de e-mail que configurou na assinatura

    b. Procure pelo e-mail com o título "AWS Notification - Subscription Confirmation". Verifique também na caixa de spam.

    c. Clique no link "Confirm subscription"

    d. Você verá a tela de assinatura confirmada

    e. Volte ao console do SNS da AWS e clique novamente em

    f. Selecione o tópico criado anteriormente (Topico-Evento-Dados-S3)

    g. Na seção assinaturas, veja que o status da assinatura está confirmado

  6. Por fim, precisamos colocar um evento no S3 para enviar uma mensagem para o tópico SNS Topico-Evento-Dados-S3

  7. No console da AWS, procure pelo serviço S3 na barra pesquisa superior e clique para abrir o serviço

  1. Selecione o bucket criado anteriormente clicando no nome (dataops-dados-nomesobrenome)

  2. Clique na aba

  3. Procure a seção “Notificações de eventos” e clique em

  4. Na tela de criação e configuração do evento, preencha:

    a. "Nome do evento": Alteração de objeto

    b. "Tipos de evento": Selecione os checkbox de "Todos os eventos de criação de objeto" e “Todos os eventos de exclusão de objeto”

    c. "Destino": Tópico do SNS

    d. "Tópico do SNS": Selecione Topico-Evento-Dados-S3

    e. Clique em

    f. Se receber o alerta abaixo, verifique se a política de acesso do SNS. Lembre-se que você deve alterar o nome do bucket e o id da conta da política pelas configurações do seu ambiente.

  1. Faça um teste de incluir um arquivo no bucket

    a. No console do S3, selecione o bucket criado neste lab

    b. Clique em

    c. Clique em

    d. Procure um arquivo no seu computador

    e. Clique em

    f. Quando o carregamento finalizar, clique em

    g. Veja o objeto carregado no bucket

    h. Veja no seu e-mail a notificação

  2. Outra forma de carregar um arquivo para o bucket S3 é arrastar e soltar o arquivo para o bucket enquanto estiver na aba . Faça o teste seguindo os passos do console. Você também deve receber a notificação

  3. A remoção também gera uma notificação. Faça o teste:

    a. Na aba do seu bucket, selecione o arquivo carregado clicando no checkbox

    b. Clique em nas opções que estão na parte superior

    c. Digite "excluir permanentemente" no campo de texto em "Excluir objetos permanentemente?". Se estiver com o console em inglês, digite o que está sendo pedido.

    d. Clique em e espere a barra superior indicar que finalizou (cor verde)

    e. Quando o processo terminar, clique em

    f. Veja que o arquivo foi excluído

    g. Veja no seu e-mail a notificação

Consultar Dados utilizando S3 Select

S3 Select é uma funcionalidade do S3 que possibilita selecionar e retornar somente parte dos dados de um objeto em um bucket S3, utilizando SQL. Ele é utilizado para reduzir o volume de dados transferidos para a aplicação e deixar a consulta de objetos mais rápidas e mais baratas

  1. Acesse o bucket dataops-dados-nomesobrenome criado anteriormente

  2. Faça o upload do arquivo vacinas_ac_agosto.csv. Para baixar o arquivo basta procurar a opção "Salvar" ou "Salvar como" no seu navegador. Outra opção é comando "ctrl + s" do teclado.

  3. Quando o upload terminar, acesse novamente o bucket e selecione o objeto que acabou de carregar

  1. Com o objeto selecionado, clique em e depois em

  2. Na tela configure as opções de seleção:

    a. Configurações de entrada:

         i. Formato:

        ii. CSV delimitador:

        ii. CSV delimitador personalizado: ponto-e-vírgula

        iv. Marque

    b. Configurações de saída

         i. Formato:

    c. Consulta SQL

        i. Clique em para executar a consulta padrão e retornar os primeiros 4 registros do CSV

SELECT * FROM s3object s LIMIT 5

          ii. Veja o resultado em Resultados da consulta

          iii. Altere a consulta para retornar a quantidade de registros do CSV e execute novamente

SELECT count(1) FROM s3object s

     d. Você pode utilizar a maioria das expressões SQL para consultar os dados

© 2023 Fernando Sousa

Last update: 2023-08-05 18:04:24