Por que as notificações de eventos do Amazon S3 não são entregues a uma fila do Amazon SQS que usa criptografia no lado do servidor?

6 minuto de leitura
0

As notificações de eventos do Amazon Simple Storage Service (Amazon S3) não são entregues na minha fila do Amazon Simple Queue Service (Amazon SQS) com criptografia no servidor.

Resolução

Conclua estas etapas para configurar e enviar notificações de eventos do S3 para uma fila do Amazon SQS que usa criptografia do lado do servidor (SSE).

Criar uma chave do AWS KMS gerenciada pelo cliente e configurar a política de chaves

Criptografe as filas do Amazon SQS com uma chave do AWS Key Management Service (AWS KMS) gerenciada pelo cliente. Em seguida, conceda ao serviço Amazon S3 permissões de entidade principal para trabalhar com filas criptografadas.

Observação: não é possível modificar a chave padrão do KMS gerenciada pela AWS. Em vez disso, use uma chave gerenciada pelo cliente nesse processo. Você também deve adicionar permissões à chave do AWS KMS para permitir o acesso a um serviço principal especificado.

Para conceder as permissões principais do serviço Amazon S3, adicione esta declaração à política de chaves gerenciadas pelo cliente:

{  "Version": "2012-10-17",
  "Id": "example-ID",
  "Statement": [
    {
      "Sid": "example-statement-ID",
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": "*"
    },
    {
      "Sid": "Enable IAM User Permissions",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::"111122223333":root"
      },
      "Action": "kms:*",
      "Resource": "*"
    }
  ]
}

Observação: substitua "arn:aws:iam::"111122223333":root" por seu ARN.

Criar uma fila do SQS e conceda permissões ao Amazon S3

  1. Crie uma fila do Amazon SQS configurada para usar o SSE. Para obter mais informações, consulte Configurar a criptografia no lado do servidor (SSE) para uma fila (console).
  2. Para permitir que o Amazon S3 envie mensagens para a fila, adicione esta declaração de permissões à fila do SQS:
{  "Version": "2012-10-17",
  "Id": "example-ID",
  "Statement": [
    {
      "Sid": "example-statement-ID",
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": "SQS:SendMessage",
      "Resource": "arn:aws:sqs:us-east-1:111122223333:sqs-s3-kms-same-account",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:s3:*:*:hellobucket"
        }
      }
    }
  ]
}

Observação: substitua o valor Resource pelo ARN da fila do SQS, o aws:SourceAccount pelo ID da conta de origem da AWS e o aws:SourceArn pelo ARN do bucket do Amazon S3.

No exemplo anterior, o bucket hellobucket do S3 da conta do cliente 123456789 pode enviar notificações de eventos ObjectCreated para a fila do SQS especificada. Para obter mais informações sobre as permissões necessárias para trabalhar com filas do SQS criptografadas, consulte Gerenciamento de chaves.

Criar um evento do S3

Para adicionar um evento do Amazon S3 ao seu bucket, conclua estas etapas:

  1. Abra o console do S3 e escolha o Nome com hiperlink para seu bucket do S3.
  2. Na guia Propriedades, escolha Criar notificação de evento.
  3. Na página Criar notificação de evento, insira estas informações:
    Em Nome do evento, insira um nome.
    Em Tipos de eventos, selecione os tipos de eventos para os quais você deseja receber notificações.
    Em Destino, escolha Fila do SQS.
    Em Fila do SQS, escolha sua fila.
  4. Escolha Salvar alterações.

Confirmar se o tipo de evento do Amazon S3 está configurado corretamente

Ao configurar uma notificação de evento do Amazon S3, você deve especificar os tipos de eventos com suporte que fazem com que o Amazon S3 envie a notificação. Se um tipo de evento que você não especificou ocorrer em seu bucket do Amazon S3, o Amazon S3 não enviará a notificação.

Confirmar se os filtros de nome de chave de objeto estão no formato codificado em URL

Quando suas notificações de eventos estiverem configuradas para usar a filtragem de nome de chave de objeto, as notificações serão publicadas somente para objetos com prefixos ou sufixos específicos.

Se você usar caracteres especiais em seus prefixos ou sufixos, deverá inseri-los no formato codificado em URL. Para obter mais informações, consulte Configurar notificações de eventos usando filtragem de nomes de chave de objeto.

Observação: não é possível usar um caractere curinga (“*”) como prefixo ou sufixo para representar qualquer caractere em filtros.

Verificar se todos os destinos de evento existem

O erro “Unable to validate the following destination configurations” ocorre quando um destino de bucket de notificação de eventos do Amazon S3 não existe.

Se você configurou uma notificação de evento para enviar eventos para um destino que não existe mais, você deve remover esses eventos. Certifique-se de remover os eventos antes de atualizar a configuração da notificação de eventos.

Observação: é prática recomendada usar a API PutBucketNotificationConfiguration para excluir todos os eventos com destinos não existentes.

Verificar as regiões do bucket do S3 e da fila do SQS

Não é possível enviar notificações de um bucket do S3 em uma região da AWS para uma fila do Amazon SQS em outra região. Em vez disso, defina um tópico do Amazon Simple Notification Service (Amazon SNS) como o destino do bucket do S3 com uma fila do Amazon SQS em outra região. O Amazon SNS aceita a entrega de notificações entre regiões para filas do Amazon SQS e funções do AWS Lambda.

Para obter mais informações, consulte Sending Amazon SNS messages to an Amazon SQS queue or Lambda function in a different Region.

Confirmar se as mensagens foram enviadas para a fila do Amazon SQS

Use a métrica NumberOfMessagesSent do Amazon CloudWatch para verificar se as mensagens foram enviadas para a fila do Amazon SQS.

Para obter mais informações, consulte Why is my Amazon SQS queue not receiving messages?

Solucionar problemas do AWS Support

Se as etapas de solução de problemas anteriores não resolverem seu problema, entre em contato com o AWS Support. Inclua o RequestID e o timestamp com o timezone das chamadas de API que falharam em sua correspondência.

Informações relacionadas

Como posso fazer com que minha assinatura do Amazon SQS receba com êxito uma notificação de um tópico do Amazon SNS?

Notificações de eventos do Amazon S3

Demonstração: configurar um bucket para notificações (tópico do SNS ou fila do SQS)

AWS OFICIAL
AWS OFICIALAtualizada há 7 meses