Ir para o conteúdo

Como soluciono problemas de notificações de eventos do Amazon S3 que não invocaram minha função do Lambda?

3 minuto de leitura
0

Quero solucionar problemas com notificações de eventos do Amazon Simple Storage Service (Amazon S3) que não invocaram minha função do AWS Lambda.

Resolução

Para solucionar problemas de notificações de eventos do Amazon S3 para funções do Lambda, conclua as seguintes etapas para verificar suas permissões e configurações:

  1. Abra o console do Amazon S3 e, em seguida, navegue até seu bucket.
  2. Escolha a guia Propriedades.
  3. Em Notificações de eventos, selecione sua notificação de evento e escolha Editar.
  4. Em Configuração geral, revise as configurações de Prefixo e Sufixo.
  5. (Opcional) Se você usar um prefixo ou sufixo, confirme o seguinte:
    A chave do objeto no bucket corresponde às diretrizes de nomenclatura de chave do objeto.
    Todos os caracteres especiais estão no formato codificado em URL (codificado em porcentagem).
  6. Em Destino, confirme se o ARN da função do Lambda corresponde a uma função válida.
  7. Escolha Salvar alterações.
  8. Abra o Console do Lambda e escolha Funções.
  9. Em Nome da função, escolha sua função do Lambda.
  10. Selecione a guia Configuração e, em seguida, escolha Permissões.
  11. Em Declarações de política com base em recursos, escolha sua política e, em seguida, Exibir política.
  12. Certifique-se de que a política baseada em recursos permita que o Amazon S3 invoque a função do Lambda:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:FUNCTION_NAME",
      "Condition": {
        "StringEquals": {
          "AWS:SourceAccount": "ACCOUNT_ID"
        },
        "ArnLike": {
          "AWS:SourceArn": "arn:aws:s3:::BUCKET_NAME"
        }
      }
    }
  ]
}

Observação: substitua REGION, ACCOUNT_ID, FUNCTION_NAME e BUCKET_NAME pela região da AWS, conta da AWS, nome da função e nome do bucket. A AWS:SourceAccount é a conta proprietária do bucket e ArnLike é o ARN do bucket.

Na política anterior baseada em recursos, o s3.amazonaws.com da entidade principal tem permissão para realizar a ação da API lambda:InvokeFunction no ARN do Recurso.

Importante: o Amazon S3 geralmente envia notificações de eventos em segundos, mas às vezes pode levar 1 minuto ou mais. Para mais informações, consulte Notificações de eventos do Amazon S3.

Informações relacionadas

Como faço para permitir que minha função do Lambda acesse meu bucket do Amazon S3?

Por que recebo erros de Acesso Negado quando uso uma função do Lambda para fazer upload de arquivos para um bucket do Amazon S3 em uma outra conta da AWS?

AWS OFICIALAtualizada há 8 meses