Ir para o conteúdo

Por que recebo o erro “Configuration is ambiguously defined” quando tento criar uma notificação de eventos do Amazon S3 para acionar minha função do Lambda?

5 minuto de leitura
0

Tentei criar uma notificação de eventos de bucket do Amazon Simple Storage Service (Amazon S3) para acionar minha função do AWS Lambda e recebi um erro.

Breve descrição

O erro “Configuration is ambiguously defined error” ocorre quando as informações de eventos de uma notificação e seu prefixo ou sufixo se sobrepõem à configuração de notificação de um bucket do S3.

Para resolver esse erro, execute uma das ações a seguir:

  • Remova o evento sobreposto e crie um novo.
  • Crie uma notificação de evento do S3 para vários eventos sobrepostos com prefixos ou sufixos sobrepostos.
  • Redesenhe sua arquitetura.

Observação: as configurações de notificação de eventos do Amazon S3 permitem a sobreposição de eventos com prefixos ou sufixos não sobrepostos. As configurações também permitem eventos não sobrepostos com prefixos ou sufixos sobrepostos.

Para obter mais informações e exemplos, consulte Configurar notificações de eventos usando filtragem de nomes de chave de objeto.

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.

Remova o evento sobreposto e crie um novo

Para excluir notificações de eventos sobrepostos, use o console do Amazon S3 ou AWS CLI.

Observação: quando você exclui um acionador de uma função do Lambda, a notificação de evento do S3 associada não é excluída automaticamente. É necessário excluir a notificação no Amazon S3 antes de criar um novo acionador sem restrições de sufixo.

Console Amazon S3

Conclua as etapas a seguir:

  1. Abra o console do Amazon S3 e, em seguida, selecione seu bucket.
  2. Escolha a guia Propriedades.
  3. Em Notificações de eventos, escolha a notificação de evento que se sobrepõe à nova que você tentou criar.
  4. Escolha Excluir.
  5. Escolha Criar notificação de evento.
  6. Na lista suspensa Função do Lambda, selecione sua função e escolha Salvar alterações.

AWS CLI

Use a AWS CLI para atualizar o arquivo JSON de configuração de notificação em seu bucket do S3. Para obter uma lista de todas as notificações de eventos configuradas em seu bucket do S3, execute o comando get-bucket-notification-configuration da AWS CLI. Para remover todas as notificações de eventos do S3, execute o comando put-bucket-notification-configuration da AWS CLI:

aws s3api put-bucket-notification-configuration --bucket=your-bucket-name --notification-configuration="{}"

Observação: substitua your-bucket-name pelo nome do seu bucket.

Depois de remover a notificação de eventos sobrepostos, é possível executar o comando put-bucket-notification-configuration da AWS CLI para adicionar novas notificações.

Crie uma notificação de evento do S3 para vários eventos sobrepostos com prefixos ou sufixos sobrepostos

Conclua as etapas a seguir:

  1. Abra o console do Amazon S3 e, em seguida, selecione seu bucket.
  2. Escolha a guia Propriedades.
  3. Em Notificações de eventos, escolha Criar notificação de evento.
  4. Em Nome do evento, insira um nome para seu evento, por exemplo, your-event-name.
  5. Em Prefixo, insira um prefixo, por exemplo images/.
  6. Em Sufixo, insira um sufixo, por exemplo .jpg.
  7. Em Tipos de eventos, escolha Todos os objetos criam eventos.
  8. Na lista suspensa Função do Lambda, escolha sua função do Lambda.
  9. Escolha Salvar alterações.

Redesenhe sua arquitetura

Se não for possível reconfigurar sua notificação de eventos do S3 para evitar a sobreposição, reformule sua arquitetura para contornar isso.

Por exemplo, configure uma notificação de evento para acionar uma função do Lambda que aciona outras funções do Lambda com base no evento do S3. Ou configure uma notificação de evento para publicar eventos em um tópico do Amazon Simple Notification Service (Amazon SNS) ou na fila do Amazon Simple Queue Service (Amazon SQS).

Observação: certifique-se de que o tópico ou fila envie eventos para várias funções do Lambda inscritas. Crie as funções inscritas com lógica para decidir se devem processar os eventos que as funções recebem. Para obter mais informações, consulte Notificações de eventos de fanout do S3 para vários endpoints.

Também é possível ativar o registro em log em nível de objeto para as ações do Amazon S3 no AWS CloudTrail. Em seguida, use uma regra do Amazon EventBridge para acionar sua função do Lambda com base no padrão de eventos do Amazon S3. Para obter mais informações, consulte Tutorial: Registre em log as operações em nível de objeto do Amazon S3 usando o EventBridge.

Para arquiteturas e processos mais complexos, use uma máquina de estado do AWS Step Functions para projetar e gerenciar seu fluxo de trabalho. Para obter mais informações, consulte Casos de uso do AWS Step Functions e Tutoriais para aprender sobre Step Functions.

Informações relacionadas

Por que recebo o erro “Unable to validate the following destination configurations” quando uso as notificações de eventos do Amazon S3?

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

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

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

AWS OFICIALAtualizada há um ano