Perché ricevo l'errore "Configuration is ambiguously defined" quando creo una notifica di evento Amazon S3 per attivare la mia funzione Lambda?
Sto cercando di creare una notifica di evento bucket Amazon Simple Storage Service (Amazon S3) per attivare la mia funzione AWS Lambda e ho ricevuto un errore.
Breve descrizione
L'errore "Configuration is ambiguously defined error" si verifica quando le informazioni sull'evento di una notifica e il relativo prefisso o suffisso si sovrappongono alla configurazione di notifica di un bucket S3.
L'errore può verificarsi quando si esegue una delle seguenti operazioni:
- Ricreazione di una notifica di evento S3 che hai eliminato di recente.
- Creazione di notifiche di eventi S3 per più eventi sovrapposti utilizzando prefissi o suffissi sovrapposti.
Nota: le configurazioni di notifica degli eventi di Amazon S3 consentono eventi sovrapposti con prefissi o suffissi non sovrapposti. Le configurazioni consentono anche eventi non sovrapposti con prefissi o suffissi sovrapposti.
Per ulteriori informazioni ed esempi, consulta Configuring event notifications using object key name filtering.
Risoluzione
Nota: se ricevi errori durante l'esecuzione dei comandi dell’Interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente di AWS CLI.
Per rivedere la configurazione delle notifiche del bucket S3 corrente, esegui una delle seguenti operazioni:
- Esegui il comando AWS CLI get-bucket-notification-configuration.
- Apri la console Amazon S3. Per ulteriori informazioni ed esempi, consulta Turning on and configuring event notifications using the Amazon S3 console.
Quindi, esegui una delle seguenti operazioni:
Rimuovere un evento sovrapposto
Nella console Amazon S3, elimina una notifica di evento esistente che si sovrappone a quella nuova che stai cercando di creare.
Nota: quando si elimina un trigger di funzione Lambda, la notifica dell'evento S3 associata non viene eliminata automaticamente. È inoltre necessario eliminare la notifica in Amazon S3 prima di creare un nuovo trigger senza vincoli di suffisso.
-or-
Aggiorna il file JSON di configurazione delle notifiche sul tuo bucket S3 utilizzando l'interfaccia della linea di comando di AWS. Per ottenere un elenco di tutte le notifiche di eventi configurate nel bucket S3, esegui il comando AWS CLI get-bucket-notification-configuration. Per rimuovere tutte le notifiche di eventi S3, esegui il comando AWS CLI put-bucket-notification-configuration simile al seguente:
Nota: sostituisci bucket-name con il nome del tuo bucket.
aws s3api put-bucket-notification-configuration --bucket=<bucket-name> --notification-configuration="{}"
Dopo aver rimosso la notifica degli eventi sovrapposti, puoi aggiungere nuove notifiche utilizzando la console Amazon S3 o il comando AWS CLI put-bucket-notification-configuration.
Riconfigurare la nuova notifica
Modifica la denominazione della chiave per lo spazio del nome del bucket S3 per consentire più eventi sovrapposti con prefissi non sovrapposti.
Ad esempio, per specificare che oggetti evento sovrapposti, come le immagini caricate, utilizzano una cartella bucket S3 diversa (prefisso) a seconda del tipo di file di immagine (suffisso):
- S3://mybucket/uploadedJPEG
- S3://mybucket/uploadedGIF
Riprogettazione per il tuo caso d'uso
Se non riesci a riconfigurare la notifica degli eventi S3 per evitare la sovrapposizione, prova a riprogettare la tua architettura per aggirare il problema.
Ad esempio:
- configura una notifica di evento per attivare una funzione Lambda di routing che attiva altre funzioni Lambda in base all'evento S3.
- Configura una notifica di eventi per pubblicare eventi su un argomento Amazon Simple Notification Service (Amazon SNS) o su una coda Amazon Simple Queue Service (Amazon SQS).
Nota: assicurati che l'argomento o la coda inviino gli eventi a più funzioni Lambda sottoscritte. Progetta le funzioni sottoscritte con logica per decidere se elaborare gli eventi che ricevono. Per ulteriori informazioni, consulta Fanout S3 event notifications to multiple endpoints. - Attiva la registrazione a livello di oggetto di Amazon S3 su AWS CloudTrail. Quindi, utilizza una regola Amazon CloudWatch Events per attivare la funzione Lambda in base al modello di eventi Amazon S3. Per ulteriori informazioni, consulta Tutorial: Log Amazon S3 object-level operations using CloudWatch Events.
Suggerimento: per architetture e processi più complessi, utilizza una macchina a stati di AWS Step Functions per progettare e gestire il flusso di lavoro. Per ulteriori informazioni, consulta i Casi d'uso di AWS Step Functions e i Tutorials su Step Functions.
Informazioni correlate
Perché la notifica degli eventi di Amazon S3 non richiama la mia funzione Lambda?
Using AWS Lambda with Amazon S3
Tutorial: Using an Amazon S3 trigger to invoke a Lambda function
Video correlati
Contenuto pertinente
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata un anno fa