Come posso risolvere gli errori relativi ai trigger Lambda in Amazon Cognito?

4 minuti di lettura
0

Voglio risolvere gli errori che riscontro durante la configurazione delle funzioni AWS Lambda come trigger in Amazon Cognito.

Risoluzione

Di seguito sono riportati gli errori più comuni da risolvere quando si utilizzano i trigger Lambda in Amazon Cognito.

“La chiamata di PreSignUp non è riuscita a causa dell'errore AccessDeniedException.”

**Nota:**Il tipo di trigger è indicato nel messaggio di errore. Ad esempio, una funzione Lambda allegata come trigger PreSignUp al pool di utenti risponde con l'errore precedente.

Motivo dell'errore

Quando aggiungi una funzione Lambda come trigger al tuo pool di utenti dalla consolle Amazon Cognito, Amazon Cognito esegue le seguenti azioni:

  • Aggiunge l'autorizzazione richiesta alla policy delle risorse della funzione. Questa politica delle risorse consente ad Amazon Cognito di richiamare la funzione in caso di determinati tipi di trigger di eventi.
  • Visualizza il seguente messaggio: «Autorizzazione a richiamare la funzione Lambda: stai concedendo ad Amazon Cognito il permesso di richiamare questa funzione Lambda per tuo conto. Amazon Cognito aggiungerà una dichiarazione di policy basata sulle risorse alla funzione”.

Questo errore si verifica anche quando si elimina la funzione aggiunta come trigger. Se si elimina un trigger Lambda, è necessario aggiornare il trigger corrispondente nel pool di utenti. Ad esempio, quando si elimina il trigger di autenticazione dei post, è necessario impostare il trigger di autenticazione** Post** nel pool di utenti corrispondente su** Nessuno**.

Risoluzione dell'errore

Quando crei un trigger all'esterno della console Amazon Cognito, devi aggiungere esplicitamente le autorizzazioni quando assegni il trigger al pool di utenti. Per aggiungere autorizzazioni, usa un SDK AWS, un'interfaccia a riga di comando AWS (AWS CLI) o Amazon CloudFormation.

Quando aggiungi autorizzazioni, Amazon Cognito richiama la funzione solo per conto del pool di utenti e dell'account. Per aggiungere autorizzazioni dalla console Lambda, segui i passaggi in Utilizzo di policy basate sulle risorse per Lambda. È inoltre possibile utilizzare l'operazione AddPermission.

Di seguito è riportato un esempio di policy basata sulle risorse Lambda che consente ad Amazon Cognito di richiamare una funzione. Il pool di utenti è nella condizione aws:SourceArn e l'account è nella condizione aws:SourceAccount.

Nota:Sostituisci example\ _lambda\ _function\ _arn,** example\ _account** _number e** example\ _user\ _pool\ _arn** con i tuoi valori.

{
  "Version": "2012-10-17",
  "Id": "default",
  "Statement": [
    {
      "Sid": "lambda-allow-cognito",
      "Effect": "Allow",
      "Principal": {
        "Service": "cognito-idp.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "example_lambda_function_arn",
      "Condition": {
        "StringEquals": {
          "AWS:SourceAccount": "example_account_number"
        },
        "ArnLike": {
          "AWS:SourceArn": "example_user_pool_arn"
        }
      }
    }
  ]
}

“Errore di autenticazione, contatta il proprietario dell'app”.

Motivo dell'errore

Questo errore si verifica per due motivi:

  • Ad eccezione dei trigger Lambda del mittente personalizzati, Amazon Cognito richiama le funzioni Lambda in modo sincrono. La funzione deve rispondere entro 5 secondi. Se la funzione non risponde, Amazon Cognito riprova la chiamata. Dopo tre tentativi falliti, la funzione si esaurisce. Non è possibile modificare il valore di timeout di 5 secondi.
  • Se Amazon Cognito non riceve una risposta dal trigger entro 5 secondi, dopo tre tentativi non riusciti, Amazon Cognito restituisce l'errore.

Risoluzione dell'errore

Se la funzione scade, applica le migliori pratiche per lavorare con le funzioni Lambda per ottimizzarla. È possibile fare in modo che la funzione Lambda associata al pool di utenti chiami in modo asincrono una seconda funzione Lambda. Con questa configurazione, le funzioni possono eseguire tutte le azioni necessarie senza timeout.

“PreSignUp non è riuscito con errore: Errore di sintassi nel modulo lambda\ _function”.

Motivo dell'errore

Amazon Cognito restituisce questo errore in caso di errori di sintassi nella funzione Lambda.

Risoluzione dell'errore

Ricontrolla il codice della funzione e correggi eventuali errori di sintassi.

“PreSignUp non è riuscito con il gestore di errori 'lambda\ _handler'; mancante nel modulo; lambda\ _function”.

Motivo dell'errore

Le impostazioni di runtime della funzione includono un parametro del gestore. Se sono impostate informazioni o sintassi errate per HandlerInfo, la funzione non può essere eseguita e genera questo errore.

Risoluzione dell'errore

Configura il parametro handler nella configurazione della tua funzione per indicare al runtime Lambda quale metodo del gestore richiamare.

Quando si configura una funzione in Python, il valore di impostazione del gestore è il nome del file e il nome del modulo del gestore separati da un punto. Ad esempio, Main.handler chiama il metodo handler definito in main.py.

Per ulteriori informazioni sulla sintassi del gestore, vedere Modifica dell'ambiente di runtime.

Informazioni correlate

Considerazioni importanti

Runtime AWS Lambda personalizzati

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa