Usando AWS re:Post, accetti AWS re:Post Termini di utilizzo

Come posso risolvere il problema delle notifiche degli eventi Amazon S3 che non invocano una funzione Lambda?

4 minuti di lettura
0

Ho configurato le notifiche degli eventi Amazon Simple Storage Service (Amazon S3) per invocare un funzione AWS Lambda. Tuttavia, la funzione non viene invocata quando si verifica l'evento Amazon S3.

Risoluzione

Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), consulta Troubleshooting errors for the AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Verifica che il tipo di evento Amazon S3 sia 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 dei nomi delle chiavi degli oggetti includano il nome del file caricato

Se hai configurato le notifiche degli eventi S3 utilizzando 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 degli eventi includano il nome della chiave dell'oggetto caricato.

Nota: non puoi usare un carattere jolly (*) nei filtri come prefisso o suffisso per rappresentare caratteri qualsiasi.

Per i filtri dei nomi delle chiavi degli oggetti, alcuni caratteri speciali nei prefissi o suffissi devono essere codificati in percentuale (codifica degli 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 ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines)Object key naming guidelines[.

Verifica che la policy IAM basata sulle risorse della funzione Lambda disponga delle autorizzazioni necessarie per consentire ad Amazon S3 di invocare la funzione

Controlla la policy basata sulle risorse di AWS Identity and Access Management (IAM) della tua funzione Lambda per verificare che consenta al 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 ulteriori informazioni, consulta Managing permissions 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. Tuttavia, se usi il comando put-bucket-notification-configuration di AWS CLI per aggiungere una notifica di evento, la policy della funzione non viene aggiornata automaticamente.

Verifica che la tua funzione Lambda sia configurata per gestire le invocazioni simultanee dalle notifiche degli eventi S3

Devi configurare la funzione Lambda per gestire le invocazioni simultanee dalle notifiche degli eventi S3. Se le richieste di invocazione arrivano più velocemente di quanto la funzione sia in grado di gestire o se la funzione ha raggiunto il livello massimo di simultaneità, Lambda limita le richieste.

Per ulteriori informazioni, consulta Invoking a Lambda function asynchronously.

Informazioni correlate

Come posso utilizzare Automazione AWS Systems Manager per risolvere i problemi quando la mia notifica di eventi Amazon S3 non invoca una funzione Lambda?

Process Amazon S3 event notifications with Lambda

Tutorial: Using an Amazon S3 trigger to invoke a Lambda function

Why do I get the error "Unable to validate the following destination configurations" when I create an Amazon S3 Event Notification?

How do I set up an Amazon S3 Event Notification to invoke a Lambda function that's in another AWS account?

AWS UFFICIALE
AWS UFFICIALEAggiornata un mese fa