Perché il trigger del flusso di dati Kinesis non è in grado di richiamare la mia funzione Lambda?
Ho integrato AWS Lambda con il flusso di dati Amazon Kinesis come origine eventi per elaborare il mio flusso di dati Amazon Kinesis.
Breve descrizione
Le seguenti sono le cause più comuni degli errori delle funzioni Lambda:
- Autorizzazioni insufficienti nel ruolo di esecuzione della funzione Lambda
- Nessun dato in ingresso nel flusso di dati Kinesis
- Mappatura inattiva dell'origine degli eventi causata dalla ricreazione di un flusso di dati Kinesis, di una funzione Lambda o di un ruolo di esecuzione Lambda
- Una funzione Lambda che supera il tempo massimo di esecuzione, causando un errore di timeout nella funzione Lambda
- Lambda supera i suoi limiti di esecuzioni simultanee
Se c'è un errore nella funzione Lambda, la tua funzione non viene richiamata. La funzione inoltre non elabora i record del batch. Un errore può far sì che Lambda riprovi il batch di record fino al completamento dell'elaborazione o alla scadenza del batch. Per ulteriori informazioni sulla funzione Lambda e sugli errori Kinesis, consulta Utilizzo di AWS Lambda con Amazon Kinesis.
Risoluzione
Risoluzione dei problemi relativi alla funzione Lambda
Per identificare il motivo per cui la tua funzione Lambda non viene richiamata, procedi come segue:
-
Controlla la metrica Invocazioni in Amazon CloudWatch con le statistiche impostate come Somma per la funzione Lambda. La metrica Invocazioni può aiutarti a verificare se la funzione Lambda è richiamata.
-
Controlla la metrica IteratorAge per vedere quanti anni aveva l'ultimo record del batch o quando l'elaborazione è stata completata. Quando il tuo utente Lambda non è in grado di richiamare, l'età dell'iteratore del tuo stream aumenta.
-
Controlla i log di CloudWatch della funzione Lambda. I registri utilizzano Il formato .../aws/lambda/function\ _name per i loro nomi. Cerca le voci corrispondenti all'errore della funzione. Ad esempio, se l'errore si verifica a causa delle autorizzazioni del ruolo di esecuzione di Lambda, modifica la policy sui ruoli di AWS Identity and Access Management (IAM).
-
Verifica che il tuo ruolo di esecuzione IAM disponga delle autorizzazioni appropriate per accedere a CloudWatch:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ] }
-
(Facoltativo) Se riscontri un errore nelle autorizzazioni, aggiorna la policy delle funzioni Lambda, concedendole l'accesso al flusso dati Kinesis:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:DescribeStreamSummary", "kinesis:GetRecords", "kinesis:GetShardIterator", "kinesis:ListShards", "kinesis:ListStreams", "kinesis:SubscribeToShard", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ] }
**Nota:**La policy AWSLambdaKinesisExecutionRole include queste autorizzazioni.
Risoluzione di problemi aggiuntivi
Per eseguire ulteriori procedure di risoluzione dei problemi, completare le seguenti attività:
**Timeout della funzione di esecuzione Lambda **
Se l'errore è correlato al timeout di una funzione di esecuzione Lambda, aumenta il valore di timeout per consentire un'elaborazione più rapida.
**Flusso di dati crittografato AWS KMS **
Se il flusso di dati Kinesis è crittografato utilizzando il Servizio di gestione delle chiavi AWS (AWS KMS), il consumatore e il produttore devono disporre di un accesso adeguato. Il flusso di dati Kinesis deve essere in grado di accedere alle chiavi AWS KMS utilizzate per la crittografia e la decrittografia. Il ruolo di esecuzione della funzione Lambda deve inoltre disporre dell'accesso di lettura alla chiave KMS per leggere correttamente i dati dal flusso di dati Kinesis.
**Errore interno della funzione Lambda **
Se l'errore è causato da un errore interno della funzione Lambda, questo errore indica un problema con l'elaborazione del flusso. Per evitare la limitazione dell'API del piano di controllo, limita ogni flusso a 4-5 mappature delle origini di eventi. Queste restrizioni aiutano a evitare troppe mappature delle origini degli eventi con lo stesso flusso di dati. Più strumenti di mappatura dell'origine degli eventi con lo stesso flusso possono comportare una violazione dei limiti dei piani di controllo di Kinesis e Amazon DynamoDB.
Connection timeout error
Se ricevi un errore di timeout della connessione, aggiungi le istruzioni di registrazione prima e dopo le chiamate API effettuate nel codice. È quindi possibile identificare la riga di codice esatta in cui la funzione inizia a fallire.
Frammenti lenti o bloccati
Se riscontri una partizione lenta o bloccata, configura lo strumento di mappatura dell'origine degli eventi per riprovare con un batch di dimensioni inferiori. Puoi anche limitare il numero di tentativi o eliminare i record più vecchi.
"Memory used" error
Se visualizzi il messaggio di errore "memory used" nei log di CloudWatch, aumenta la memoria della funzione Lambda.
Maximum timeout exceeded
Se hai superato il timeout massimo per la tua funzione Lambda, modifica la libreria client e i timeout del client. Per modificare la sessione di timeout in base al tempo rimanente nel contenitore Lambda, utilizzate la funzione context.GetRemainingTimeInMillis. La funzione context.GetRemainingTimeInMillis restituisce la quantità di tempo rimasta nel container Lambda prima del timeout.
Lambda function code error
Se ricevi errori dal codice della funzione Lambda, la tua funzione Lambda potrebbe bloccarsi nel provare lo stesso record. Usa un blocco try-catch per catturare i dati non riusciti. Quindi, utilizza una coda Amazon Simple Queue Service (Amazon SQS) o un argomento Amazon Simple Notification Service (Amazon SNS) per registrarlo. Puoi anche aggiungere un trigger Lambda alla coda Amazon SQS con la logica di elaborazione per riprovare separatamente le richieste non riuscite.
SQS DLQ
Configura una Coda DLQ di Amazon SQS per richiamare manualmente la funzione Lambda. Configura la proprietà DeadLetterConfig quando crei o aggiorni la tua funzione Lambda. Puoi fornire una coda Amazon SQS o un argomento Amazon SNS come TargetArn per il tuo DLQ. Lambda scrive quindi l'oggetto evento, richiamando la funzione Lambda sull'endpoint specificato dopo l'esaurimento della policy di ripetizione standard dei tentativi.
Lambda con raggi X
Usa AWS Lambda con AWS X-Ray per rilevare, analizzare e ottimizzare i problemi di prestazioni con le applicazioni Lambda. AWS X-Ray raccoglie i metadati dal servizio Lambda e genera grafici che illustrano i problemi che influiscono sulle prestazioni dell'applicazione Lambda. Ad esempio, se l'esecuzione di una chiamata richiede molto tempo, puoi utilizzare AWS X-Ray per confermare il problema.
Contenuto pertinente
- AWS UFFICIALEAggiornata 7 mesi fa
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata 2 anni fa