Por que minha notificação de evento do Amazon S3 não invoca minha função do Lambda?

4 minuto de leitura
0

Eu configurei uma notificação de evento do Amazon Simple Storage Service (Amazon S3) para invocar minha função do AWS Lambda. No entanto, a função não invoca quando ocorre o evento do Amazon S3.

Resolução

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), verifique se está usando a versão mais recente da AWS CLI.

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 quais tipos de eventos com suporte do Amazon S3 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.

Por exemplo, uma notificação de evento do Amazon S3 está configurada para invocar o Lambda com o evento s3:ObjectCreated:Put. Se você fizer upload de um arquivo grande, o arquivo será carregado usando o upload de várias partes. O evento s3:ObjectCreated:CompleteMultipartUpload deve ser selecionado com o evento s3:ObjectCreated:Put. Você também pode usar o tipo de evento s3:ObjectCreated:* para solicitar notificações para qualquer API usada para criar um objeto.

Confirmar se seus filtros de nome de chave de objeto incluem o nome do arquivo carregado

Se 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. Um caractere curinga (“*”) não pode ser usado em filtros como prefixo ou sufixo para representar qualquer caractere. Certifique-se de que os filtros de prefixo ou sufixo especificados na notificação do evento incluam o nome da chave do objeto carregado.

Confirme se os filtros de nome de chave de objeto estão no formato codificado em URL (codificado por porcentagem)

Se 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 qualquer um dos seguintes caracteres especiais em seus prefixos ou sufixos, deverá inseri-los no formato codificado em URL (codificado por porcentagem):

  • Parêntese (“( )”)
  • Intervalos de caracteres ASCII de 00 a 1F hexadecimal (0 a 31 decimal) e 7F (127 decimais)
  • Dólar (“$”)
  • E comercial (“&”)
  • Sinal de adição (“+”)
  • Vírgula (“,”)
  • Dois pontos (“:”)
  • Ponto e vírgula (“;”)
  • Sinal de igual (“=”)
  • Ponto de interrogação (“? “)
  • Arroba (“@”)
  • Espaço (” “)

Por exemplo, para definir o valor de um prefixo como "test=abc/”, digite “test%3Dabc/” como seu valor.

Observação: Um caractere curinga (“*”) não pode ser usado em filtros como prefixo ou sufixo para representar qualquer caractere.

Para mais informações, consulte Object key naming guidelines (Diretrizes de nomenclatura de chave de objeto).

Confirmar se a política do AWS Identity and Access Management (IAM) da sua função do Lambda tem as permissões necessárias

Verifique a política baseada em recursos da sua função do Lambda para confirmar se ela permite que seu bucket do Amazon S3 invoque a função. Caso contrário, adicione as permissões necessárias seguindo as instruções em Granting function access to AWS services (Conceder acesso de função aos serviços da AWS).

Para mais informações, consulte AWS Lambda permissions (Permissões do AWS Lambda).

Observação: quando você adiciona uma nova notificação de evento usando o console do Amazon S3, as permissões necessárias são adicionadas automaticamente à política da sua função. Se você usar a ação put-bucket-notification-configuration na AWS CLI para adicionar uma notificação de evento, a política da sua função não será atualizada automaticamente.

Confirmar se sua função do Lambda está configurada para lidar com invocações simultâneas de notificações de eventos do Amazon S3

Sua função do Lambda deve ser configurada para lidar com invocações simultâneas de notificações de eventos do Amazon S3. Se as solicitações de invocação chegarem mais rápido do que sua função pode escalar, ou se sua função estiver na máxima simultaneidade, o Lambda limitará as solicitações.

Para mais informações, consulte Invocação assíncrona e Escalonamento de funções do Lambda.


Informações relacionadas

Como soluciono problemas ao invocar uma função do Lambda com uma notificação de evento do Amazon S3 usando o Systems Manager Automation?

Usar o AWS Lambda com eventos do Amazon S3

Passo a passo: configurar um bucket para notificações (tópico SNS ou fila SQS)

Tutorial: usar um gatilho do Amazon S3 para invocar uma função do Lambda

Por que recebo o erro “Não é possível validar as seguintes configurações de destino” ao criar uma notificação de evento do Amazon S3 para invocar minha função do Lambda?

AWS OFICIAL
AWS OFICIALAtualizada há um ano