AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
Come posso risolvere il problema delle notifiche degli eventi Amazon S3 che non invocano la mia funzione Lambda?
Ho configurato le notifiche degli eventi Amazon Simple Storage Service (Amazon S3) per invocare un funzione AWS Lambda. La funzione però non viene invocata quando si verifica l’evento Amazon S3.
Breve descrizione
Per risolvere i problemi, utilizza il runbook di automazione AWSSupport-TroubleshootLambdaS3Event per AWS Systems Manager. In alternativa, risolvi i problemi relativi alla funzione Lambda manualmente.
Risoluzione
Esegui il runbook di automazione di Systems Manager
Prerequisito: prima di avviare il runbook, assicurati che il tuo utente o ruolo AWS IAM (AWS Identity and Access Management) disponga delle autorizzazioni richieste. Per maggiori informazioni, consulta la sezione Autorizzazioni IAM richieste di AWSSupport-TroubleshootLambdaS3Event.
Completa i passaggi seguenti:
-
Apri la console di Systems Manager.
-
Nel pannello di navigazione, scegli Documenti.
-
Nella barra di ricerca, inserisci AWSSupport-TroubleshootLambdaS3Event.
-
Seleziona AWSSupport-TroubleshootLambdaS3Event.
-
Scegli Esegui automazione.
-
Scegli Esegui.
Nota: il completamento del test può richiedere fino a 15 minuti. Per un elenco dei passaggi eseguiti dal runbook, consulta la sezione Passaggi relativi al documento di AWSSupport-TroubleshootLambdaS3Event.
Risolvere i problemi relativi alla funzione Lambda manualmente
Nota: se ricevi errori quando esegui i comandi dell’Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Verifica che il tipo di evento Amazon S3 sia stato configurato correttamente.
Quando configuri le notifiche degli eventi S3, devi specificare ogni tipo di evento che causa l’invio della notifica da parte di Amazon S3. Se nel tuo bucket Amazon S3 si verifica un tipo di evento che non hai specificato, Amazon S3 non invia la notifica.
Ad esempio, configuri una notifica di evento per invocare Lambda con il tipo di evento s3:ObjectCreated:Put. Se carichi un file di grandi dimensioni, Amazon S3 utilizza automaticamente il processo di caricamento in più parti per caricare il file nel bucket. Per invocare la funzione Lambda per questo caricamento, devi configurare anche il tipo di evento s3:ObjectCreated:CompleteMultipartUpload. In alternativa, puoi usare il tipo di evento s3:ObjectCreated:* per richiedere notifiche per ogni API utilizzata da Amazon S3 per creare un oggetto.
Verifica che i filtri del nome della chiave dell’oggetto includano il nome del file caricato.
Se le notifiche degli eventi S3 utilizzano i filtri dei nomi delle chiavi degli oggetti, Amazon S3 pubblica notifiche solo per gli oggetti con prefissi o suffissi specifici. Assicurati che i filtri dei prefissi o suffissi specificati nella notifica dell’evento includano il nome della chiave dell’oggetto caricato. Assicurati anche che la funzione Lambda si trovi nella stessa Regione AWS del bucket S3.
Nota: non puoi utilizzare un carattere jolly (*) nei filtri come prefisso o suffisso per rappresentare un carattere.
Per filtrare i nomi delle chiavi degli oggetti, alcuni caratteri speciali nei prefissi o suffissi devono essere codificati in percentuale o URL. Ad esempio, per definire il valore di un prefisso come test=abc/, inserisci il valore test%3Dabc/ codificato in percentuale.
Per ulteriori informazioni sulla gestione di caratteri specifici nei nomi delle chiavi degli oggetti, consulta le ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines)Linee guida per la denominazione delle chiavi degli oggetti[.
Assicurati che la tua policy basata sulle risorse IAM della funzione Lambda disponga delle autorizzazioni necessarie per consentire ad Amazon S3 di invocare la funzione.
Controlla la tua policy basata sulle risorse IAM della funzione Lambda per confermare che consenta al tuo bucket di invocare la funzione. Se il bucket non può invocare la funzione, aggiungi la policy richiesta.
Policy di esempio:
{ "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" } } } ] }
per maggiori informazioni, consulta Gestione delle autorizzazioni in AWS Lambda.
Nota: quando usi la console Amazon S3 per aggiungere una nuova notifica di evento, Amazon S3 aggiunge automaticamente le autorizzazioni richieste alla policy basata sulle risorse della tua funzione. Se però usi il comando put-bucket-notification-configuration di AWS CLI per aggiungere una notifica di evento, la policy della funzione non viene aggiornata automaticamente.
Conferma che la tua funzione Lambda sia configurata per gestire le invocazioni simultanee dalle notifiche degli eventi S3
Devi configurare la funzione Lambda in modo che possa gestire le invocazioni simultanee dalle notifiche degli eventi S3. Lambda applica una limitazione alle richieste di invocazione se queste arrivano più velocemente di quante la funzione ne possa gestire oppure se la funzione ha raggiunto il proprio limite di simultaneità.
Per ulteriori informazioni, consulta Invocare una funzione Lambda in modo asincrono.
Informazioni correlate
Elaborare le notifiche degli eventi Amazon S3 con Lambda
Tutorial: utilizzare un trigger Amazon S3 per invocare una funzione Lambda
- Argomenti
- Compute
- Tag
- AWS Lambda
- Lingua
- Italiano
