Ao usar o AWS re:Post, você concorda com os AWS re:Post Termos de uso

Como soluciono problemas quando minhas notificações de eventos do Amazon S3 não invocam minha função do Lambda?

4 minuto de leitura
0

Eu configurei notificações de eventos 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), consulte Solução de erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

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

Ao configurar as notificações de eventos do S3, você deve especificar cada tipo de evento que faz 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, você configura uma notificação de evento para invocar o Lambda com o tipo de evento s3:ObjectCreated:Put. Se você fizer upload de um arquivo grande, o Amazon S3 usará automaticamente o processo de upload multiparte para carregar o arquivo no bucket. Para invocar a função do Lambda para esse upload, você também deve configurar o tipo de evento s3:ObjectCreated:CompleteMultipartUpload. Ou use o tipo de evento s3:ObjectCreated:* para solicitar notificações para cada API que o Amazon S3 usa para criar um objeto.

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

Se suas notificações de eventos do S3 usarem filtragem de nomes de chaves de objetos, o Amazon S3 publicará notificações somente para objetos com prefixos ou sufixos específicos. Certifique-se de que os filtros de prefixo ou sufixo especificados na notificação do evento incluam o nome da chave do objeto carregado.

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

Para filtrar nomes de chaves de objetos, determinados caracteres especiais em seus prefixos ou sufixos devem ser codificados em URL (codificados em porcentagem). Por exemplo, para definir o valor de um prefixo como test=abc/, digite o valor codificado por URL test%3Dabc/.

Para obter mais informações sobre o tratamento específico de caracteres em nomes de chaves de objetos, consulte Diretrizes de nomenclatura de chaves de objetos.

Verifique se a política baseada em recursos do IAM da sua função do Lambda tem as permissões necessárias para que o Amazon S3 invoque a função

Verifique a política baseada em recursos do AWS Identity and Access Management (AWS IAM) da sua função do Lambda para verificar se a política permite que seu bucket invoque a função. Se o bucket não conseguir invocar a função, adicione a política necessária.

Exemplo de política:

{
  "Version": "2012-10-17",
  "Id": "default",
  "Statement": [
    {
      "Sid": "lambda-allow-s3-my-function",
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function",
      "Condition": {
        "StringEquals": {
          "AWS:SourceAccount": "123456789012"
        },
        "ArnLike": {
          "AWS:SourceArn": "arn:aws:s3:::amzn-s3-demo-bucket"
        }
      }
    }
  ]
}

Para obter mais informações, consulte Gerenciamento de permissões no AWS Lambda.

Observação: Quando você usa o console do Amazon S3 para adicionar uma nova notificação de evento, o Amazon S3 adiciona automaticamente as permissões necessárias à política baseada em recursos da sua função. No entanto, se você usar o comando put-bucket-notification-configuration da AWS CLI para adicionar uma notificação de evento, então a política da sua função não será atualizada automaticamente.

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

Você deve configurar sua função do Lambda para lidar com invocações simultâneas das notificações de eventos do 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 obter mais informações, consulte Invocar uma função do Lambda de forma assíncrona.

Informações relacionadas

Como posso usar a AWS Systems Manager Automation para solucionar problemas quando minha notificação de evento do Amazon S3 não invoca uma função do Lambda?

Processe notificações de eventos do Amazon S3 com o Lambda

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” quando crio uma notificação de eventos do Amazon S3?

Como configuro uma notificação de eventos do Amazon S3 para invocar uma função do Lambda que está em outra conta da AWS?

AWS OFICIAL
AWS OFICIALAtualizada há um mês