Come posso risolvere i problemi di integrazione di Lambda Kinesis Firehose?

6 minuti di lettura
0

Ho integrato AWS Lambda con Amazon Kinesis Data Firehose per trasformare i dati di origine in entrata e consegnarli alle destinazioni. Tuttavia, la funzione Lambda non è stata richiamata o ha avuto esito negativo.

Breve descrizione

Le funzioni Lambda configurate con Amazon Kinesis Data Firehose potrebbero non funzionare a causa di:

  • Autorizzazioni AWS Identity and Access Management (IAM) insufficienti
  • Durata lambda superiore al timeout massimo consentito
  • Limitazione di Lambda
  • Errori di trasformazione dei dati
  • Errori della funzione Lambda

**Nota:**Se la chiamata della funzione Lambda ha un timeout di rete o non riesce perché è stato raggiunto il limite di chiamate, Kinesis Data Firehose prova a ripetere la chiamata tre volte. Per ulteriori informazioni, vedere Gestione degli errori di trasformazione dei dati.

Risoluzione

Se non l'hai già fatto, attiva la registrazione di Amazon CloudWatch per Kinesis Data Firehose. È possibile visualizzare i log degli errori specifici quando la chiamata Lambda per la trasformazione o la consegna dei dati non riesce. Puoi attivare la registrazione degli errori di Kinesis Data Firehose quando crei il flusso di consegna. Il formato del nome del gruppo di log è** /aws/kinesisfirehose/delivery-stream-name**. Il delivery-stream-name è il nome del flusso di consegna.

Per identificare il motivo per cui la funzione Lambda non è riuscita, controlla nel gruppo Amazon CloudWatch Logs** /aws/lambda/lambda-function-name**. I record di trasformazione dei dati non riusciti vengono inviati al bucket Amazon Simple Storage Service (Amazon S3) come backup nella cartella di elaborazione non riuscita. I record nel bucket S3 contengono anche il messaggio di errore per la chiamata non riuscita. Per ulteriori informazioni sulla risoluzione degli errori di chiamata Lambda, vedere Gestione degli errori di trasformazione dei dati.

Autorizzazioni IAM insufficienti

“AssumeRoleAccessDenied - L'accesso è stato negato. Assicurati che la politica di fiducia per il ruolo IAM fornito consenta a Kinesis Data Firehose di considerare il ruolo”.

Questo errore si verifica quando il ruolo IAM di Amazon Kinesis Data Firehose non può considerare “firehose.amazonaws.com”. Assicurati che la politica di fiducia di IAM disponga delle autorizzazioni per considerare “firehose.amazonaws.com” come segue:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "firehose.amazonaws.com"
      },
     "Action": "sts:AssumeRole"
    }
  ]
}

“InvokeAccessDenied - Accesso negato. Assicurati che la policy di accesso consenta l'accesso alla funzione Lambda”.

Questo errore si verifica quando al ruolo IAM di Amazon Kinesis Data Firehose non è consentito invocare la funzione Lambda utilizzata per la trasformazione dei dati. Assicurati che la policy IAM consenta ad Amazon Kinesis Data Firehose di richiamare la funzione Lambda simile alla seguente:

**Nota:**Sostituisci la risorsa ARN in questo esempio con le tue variabili.

{
  "Effect": "Allow",
  "Action": [
    "lambda:InvokeFunction",
    "lambda:GetFunctionConfiguration"
  ],
  "Resource": [
    "arn:aws:lambda:region:account-id:function:function-name:function-version"
  ]
}

Durata lambda superiore al timeout massimo consentito

“Firehose ha riscontrato errori di timeout durante la chiamata con AWS Lambda. Il timeout massimo della funzione supportata è di 5 minuti”.

Questo errore si verifica quando il completamento della funzione Lambda impiega più di 5 minuti. Per risolvere gli errori di timeout delle funzioni Lambda con Kinesis Data Firehose, vedere Gestione degli errori di trasformazione dei dati.

Limitazione di Lambda

“InvokeLimitExceeded - Il limite di esecuzione simultanea di Lambda è stato superato. Aumenta il limite di esecuzione simultanea”.

Questo errore si verifica quando viene superato il limite di esecuzione simultanea di Lambda. Esamina le metriche di concomitanza Lambda nei log CloudWatch per determinare il tuo utilizzo. Per richiedere un aumento delle esecuzioni simultanee, vedere Richiesta di aumento della quota.

Per ulteriori informazioni, consulta Dimensionamento delle funzioni Lambda e Come posso risolvere i problemi di limitazione delle funzioni Lambda con gli errori “Rate superata” e 429 ”TooManyRequestsException”?

Errori di trasformazione dei dati

“JsonProcessingException - Si è verificato un errore durante l'analisi dei record restituiti dalla funzione Lambda. Assicurati che i record restituiti seguano il modello di stato richiesto da Kinesis Data Firehose”.

Questo errore si verifica quando i record trasformati restituiti da Lambda non sono nel formato richiesto. Tutti i record trasformati restituiti da Lambda devono contenere i parametriID record, risultato e** dati**. Controlla il codice della funzione Lambda e i log CloudWatch per verificare che questi record contengano questi parametri.

Nota:Per eliminare intenzionalmente un record, imposta il valore su Dropped.

Per ulteriori informazioni, consulta Trasformazione dei dati e modello di stato.

**“DuplicatedRecordID: sono stati restituiti più record con lo stesso ID record. Verificare che la funzione Lambda restituisca ID di record univoci per ogni record”. **

Questo errore si verifica se più record trasformati restituiti dalla funzione Lambda a Kinesis Firehose hanno lo stesso ID di record. L'ID record viene passato da Kinesis Data Firehose a Lambda durante la chiamata della funzione. Controlla il codice della funzione Lambda e i log CloudWatch per verificare che ogni ID record sia univoco.

Errori della funzione Lambda

“La funzione Lambda è stata richiamata correttamente, ma ha restituito un risultato di errore”.

Questo errore si verifica quando Amazon Kinesis Data Firehose è riuscito a richiamare correttamente la funzione Lambda, ma l'esecuzione della funzione Lambda non è riuscita a causa di un errore. Controlla le metriche CloudWatch sulla trasformazione dei dati per confermare che Kinesis Data Firehose ha richiamato la tua funzione.

Se Kinesis Data Firehose non ha richiamato la funzione Lambda, controlla l'ora di chiamata per vedere se è oltre il parametro di timeout. La funzione Lambda potrebbe richiedere un valore di timeout maggiore o richiedere più memoria per il suo completamento. Per ulteriori informazioni sulle metriche di chiamata, consulta Metriche di chiamata.

**“Dimensione massima consentita per il payload superata” o “LAMBDA\ _RUNTIME Impossibile pubblicare la risposta positiva del gestore. Codice di risposta Http: 413”. **

Amazon Kinesis Data Firehose richiama una funzione Lambda in modo sincrono e il limite di payload delle chiamate è di 6 MB per ogni richiesta e risposta. Il limite di carico utile Lambda è un limite fisso e non può essere aumentato. Assicurati che la dimensione del buffer non superi i 6 MB per ogni richiesta e risposta.

Per ulteriori informazioni, consulta Quote Lambda.

Informazioni correlate

Perché sto riscontrando un errore di consegna dei dati con Kinesis Data Firehose?

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa