DEV Community

Cover image for Como publicar uma notificação de Evento para o SQS quando algo for publicado no S3: Um guia passo a passo
José Paulo Marinho
José Paulo Marinho

Posted on • Edited on

Como publicar uma notificação de Evento para o SQS quando algo for publicado no S3: Um guia passo a passo

Aqui estão os passos para criar uma política de acesso para uma fila do Amazon SQS usando a console da AWS, este tutorial parte do pressuposto que você já tem o recurso do SQS criado:

Passo 1: Crie uma política de acesso para a sua fila

1 - Acesse a console do Amazon SQS e selecione a fila que você criou.

2 - Clique na guia "Permissões" e em seguida, clique em "Adicionar política de fila".

3 - Na página "Adicionar política de fila", selecione o serviço ou usuário que você deseja conceder acesso à fila.

4 - Escolha as ações permitidas e especifique as condições, se necessário. Por exemplo, para permitir que o S3 envie mensagens para a fila, você precisará definir a condição ArnLike para corresponder ao ARN do bucket do S3 que enviará as mensagens.

5 - Cole a política de acesso diretamente na área de texto ou crie uma nova política usando o assistente. Aqui está um exemplo de política que permite que o S3 envie mensagens para a fila:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": "sqs:SendMessage",
      "Resource": "arn:aws:sqs:REGION:ACCOUNT-ID:QUEUE-NAME",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:s3:::BUCKET-NAME"
        }
      }
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

6 - Lembre-se de substituir 'REGION', 'ACCOUNT-ID', 'QUEUE-NAME' e 'BUCKET-NAME' pelos valores reais correspondentes às suas configurações.

6.1 - Para obter essas informações entre no console da aws (AWS CLI) e digite:

$ aws sts get-caller-identity
$ aws configure get region
$ aws s3 ls
$ aws sqs list-queues 
Enter fullscreen mode Exit fullscreen mode

7 - Quando terminar, clique em "Salvar alterações" para aplicar a política à fila do SQS.

Passo 2 - Obtenha as credenciais de acesso para a sua aplicação

1 - Acesse a console do IAM e crie um usuário para sua aplicação.

2 - Conceda as permissões necessárias para o usuário acessar a fila do SQS.

3 - Obtenha as credenciais de acesso para o usuário criado.

Passo 3: Use as credenciais para enviar mensagens para a fila do SQS

1 - Use as credenciais de acesso para autenticar sua aplicação e enviar mensagens para a fila do SQS.

Configurar Notificações de Eventos no S3 para enviar ao SQS

Esta parte do tutorial assume que você já tem seu recurso do S3 criado.

1 - Navegue até o S3, selecione seu bucket.

2 - Vá em propriedades e procure pelo tópico Notificações de eventos

3 - Clique em Criar Notificação de evento. Preencha algumas infomações como:

  • Nome do evento
  • Prefiro - Opcional (se não houver ele vai verificar todos os diretórios)
  • Sufixo - Opcional (se nçao houver ele vai verificar todos os tipos de arquivos)

4 - Tipos de Eventos - Aqui você coloca o que preferir

5 - Por fim, selecione o Destino, escolha 'Fila do SQS'

  • Escolher entre seus filas do SQS

E escolha sua fila. No final salve.

6 - Agora teste, assim que você inserir um arquivo deverá receber uma mensagem como essa no SQS:

{
  "Records": [
    {
      "eventVersion": "2.1",
      "eventSource": "aws:s3",
      "awsRegion": "us-east-1",
      "eventTime": "2023-05-04T02:27:25.626Z",
      "eventName": "ObjectCreated:Put",
      "userIdentity": {
        "principalId": "AWS:XXXXXXXXXXXXXXXXXXX:userXXXXXXXXXXXX"
      },
      "requestParameters": {
        "sourceIPAddress": "XXX.XXX.XXX.XXX"
      },
      "responseElements": {
        "x-amz-request-id": "XXXXXXXXXXXXXX",
        "x-amz-id-2": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
      },
      "s3": {
        "s3SchemaVersion": "1.0",
        "configurationId": "sqs-trigger",
        "bucket": {
          "name": "example-bucket",
          "ownerIdentity": {
            "principalId": "XXXXXXXXXXXX"
          },
          "arn": "arn:aws:s3:::example-bucket"
        },
        "object": {
          "key": "example/file.txt",
          "size": 1234,
          "eTag": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
          "sequencer": "XXXXXXXXXXXXXXXXXX"
        }
      }
    }
  ]
}

Enter fullscreen mode Exit fullscreen mode

Você pode ver melhor aqui: https://docs.aws.amazon.com/pt_br/AmazonS3/latest/userguide/ways-to-add-notification-config-to-bucket.html#S3NotificationHowToDestinationSQS

AWS GenAI LIVE image

How is generative AI increasing efficiency?

Join AWS GenAI LIVE! to find out how gen AI is reshaping productivity, streamlining processes, and driving innovation.

Learn more

Top comments (0)

AWS GenAI LIVE image

Real challenges. Real solutions. Real talk.

From technical discussions to philosophical debates, AWS and AWS Partners examine the impact and evolution of gen AI.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay