Por que recebo o erro "Configuration is ambiguously defined" ao criar uma notificação de eventos do Amazon S3 para acionar minha função do Lambda?
Estou tentando 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" 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.
O erro pode ocorrer quando se faz um dos seguintes:
- Recriar uma notificação de eventos do S3 que foi excluída recentemente.
- Criar notificações de eventos do S3 para vários eventos sobrepostos usando prefixos ou sufixos sobrepostos.
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), certifique-se de estar usando a versão mais recente da AWS CLI.
Para analisar a configuração atual de notificações do bucket do S3, faça um do seguintes:
- Execute o comando get-bucket-notification-configuration da AWS CLI.
- Use o console do Amazon S3. Para obter mais informações e exemplos, consulte Habilitar e configurar notificações de eventos usando o console do Amazon S3.
Em seguida, faça um dos seguintes:
Remova um evento sobreposto
No console do Amazon S3, exclua uma notificação de evento existente que se sobreponha à nova que você está tentando criar.
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. É preciso também excluir a notificação no Amazon S3 antes de criar um novo acionador sem restrições de sufixo.
-ou-
Atualize o arquivo JSON de configuração de notificação em seu bucket do S3 usando a AWS CLI. 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, semelhante ao seguinte:
Observação: substitua bucket-name pelo nome do seu bucket.
aws s3api put-bucket-notification-configuration --bucket=<bucket-name> --notification-configuration="{}"
Depois de remover a notificação de eventos sobrepostos, você pode adicionar novas notificações usando o console do Amazon S3 ou o comando put-bucket-notification-configuration da AWS CLI.
Reconfigure a nova notificação
Altere a nomenclatura de chave do objeto do namespace do bucket do S3 para permitir vários eventos sobrepostos com prefixos não sobrepostos.
Por exemplo, você pode especificar que objetos de eventos sobrepostos, como imagens carregadas, usem diferentes pastas do bucket do S3 (prefixo), dependendo do tipo de arquivo de imagem (sufixo):
- S3://mybucket/uploadedJPEG
- S3://mybucket/uploadedGIF
Reformular para seu caso de uso
Se você não conseguir reconfigurar sua notificação de eventos do S3 para evitar a sobreposição, tente reformular sua arquitetura para contornar isso.
Por exemplo:
- Configure uma notificação de evento para acionar uma função do Lambda de roteamento que aciona outras funções do Lambda com base no evento do S3.
- 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 recebidos. Para obter mais informações, consulte Notificações de eventos de distribuição do S3 para vários endpoints. - Ative 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 CloudWatch Events 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 CloudWatch Events.
Dica: 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 Step Functions.
Informações relacionadas
Por que minha notificação de evento do Amazon S3 não invoca minha função do Lambda?
Usar o AWS Lambda com o Amazon S3
Tutorial: como usar um acionador do Amazon S3 para invocar uma função do Lambda
Vídeos relacionados
Conteúdo relevante
- AWS OFICIALAtualizada há um ano