

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Personalizzazione di flussi di lavoro di bacini d'utenza con trigger Lambda
<a name="cognito-user-pools-working-with-lambda-triggers"></a>

Amazon Cognito utilizza AWS Lambda funzioni per modificare il comportamento di autenticazione del tuo pool di utenti. Puoi configurare il tuo pool di utenti per richiamare automaticamente le funzioni Lambda prima della prima registrazione, dopo aver completato l'autenticazione e in diverse fasi intermedie. Le tue funzioni possono modificare il comportamento predefinito del flusso di autenticazione, effettuare richieste API per modificare il pool di utenti o altre AWS risorse e comunicare con sistemi esterni. Il codice delle funzioni Lambda è personale. Amazon Cognito invia i dati degli eventi alla tua funzione, attende che la funzione elabori i dati e nella maggior parte dei casi anticipa un evento di risposta che riflette le modifiche che desideri apportare alla sessione.

All'interno del sistema di eventi di richiesta e risposta, puoi introdurre i tuoi problemi di autenticazione, migrare gli utenti tra il tuo pool di utenti e un altro archivio di identità, personalizzare i messaggi e modificare i token web JSON (). JWTs

I trigger Lambda possono personalizzare la risposta che Amazon Cognito restituisce all'utente dopo aver avviato un'operazione nel pool di utenti. Ad esempio, puoi impedire l'accesso da parte di un utente che altrimenti verrebbe consentito. Possono inoltre eseguire operazioni di runtime AWS sull'ambiente, sull'esterno APIs, sui database o sugli archivi di identità. Il trigger di migrazione utente, ad esempio, può combinare un'operazione esterna con una modifica in Amazon Cognito, cercando le informazioni sull'utente in una directory esterna e quindi impostando gli attributi del nuovo utente in base alle informazioni esterne.

Quando un trigger Lambda è assegnato al pool di utenti, Amazon Cognito interrompe il flusso predefinito per richiedere informazioni alla funzione. Amazon Cognito genera pertanto un *evento* JSON e lo passa alla funzione. L'evento contiene informazioni sulla richiesta dell'utente di creare un account utente, eseguire l'accesso, reimpostare una password o aggiornare un attributo. La funzione ha quindi l'opportunità di eseguire l'operazione o di restituire l'evento senza modifiche. Un evento restituito non modificato notifica al pool di utenti di procedere con l'azione predefinita per l'evento. Ad esempio, il trigger di pre-registrazione può confermare automaticamente gli utenti per la fonte del `PreSignUp_SignUp` trigger, ma restituire l'evento invariato per gli utenti esterni e creati dall'amministratore.

La tabella riportata di seguito riepiloga alcuni dei modi in cui è possibile utilizzare i trigger Lambda per personalizzare le operazioni del bacino d'utenza:


****  


- ** **Flusso di autenticazione personalizzato** **
  - **Operation:** Definizione di una richiesta di autenticazione / **Description:** Determina la prossima richiesta in un flusso di autorizzazione personalizzato
  - **Operation:** Creazione di una richiesta di autenticazione / **Description:** Crea una richiesta in un flusso di autorizzazione personalizzato
  - **Operation:** Verifica della risposta a una richiesta di autenticazione / **Description:** Determina se una risposta è corretta in un flusso di autorizzazione personalizzato

- ****Eventi di autenticazione****
  - **Operation:** [Trigger Lambda di pre-autenticazione](user-pool-lambda-pre-authentication.md) / **Description:** Convalida personalizzata per accettare o rifiutare la richiesta di accesso
  - **Operation:** [Trigger Lambda di post-autenticazione](user-pool-lambda-post-authentication.md) / **Description:** Esegue il log di eventi per analisi personalizzate
  - **Operation:** [Trigger Lambda di pre-generazione del token](user-pool-lambda-pre-token-generation.md) / **Description:** Aumenta o sopprime le richieste di token

- ****Federazione****
  - **Operation:** [Trigger Lambda di federazione in entrata](user-pool-lambda-inbound-federation.md)
  - **Description:** Trasforma gli attributi utente federati prima della creazione o dell'aggiornamento degli utenti nei pool di utenti di Amazon Cognito

- ****Registrazione****
  - **Operation:** [Trigger Lambda di pre-registrazione](user-pool-lambda-pre-sign-up.md) / **Description:** Esegue la convalida personalizzata accettando o negando la richiesta di registrazione
  - **Operation:** [Trigger Lambda di post-conferma](user-pool-lambda-post-confirmation.md) / **Description:** Aggiunge messaggi di benvenuto personalizzati o il log di eventi per analisi personalizzate
  - **Operation:** [Trigger Lambda di migrazione utenti](user-pool-lambda-migrate-user.md) / **Description:** Migra un utente da una directory di utenti esistente ai bacini d'utenza

- ****Messaggi****
  - **Operation:** [Trigger Lambda di messaggi personalizzati](user-pool-lambda-custom-message.md)
  - **Description:** Esegue la personalizzazione avanzata e localizzazione di messaggi

- ****Creazione di token****
  - **Operation:** [Trigger Lambda di pre-generazione del token](user-pool-lambda-pre-token-generation.md)
  - **Description:** Aggiunge o rimuove attributi negli ID e nei token di accesso

- ****Provider di terze parti di messaggi e-mail ed SMS****
  - **Operation:** [Trigger Lambda del mittente personalizzato](user-pool-lambda-custom-sender-triggers.md)
  - **Description:** Utilizza un provider di terze parti per inviare SMS e messaggi e-mail



**Topics**
+ [Cose da sapere sui trigger Lambda](#important-lambda-considerations)
+ [Aggiungere un trigger Lambda per un pool di utenti](#triggers-working-with-lambda)
+ [Evento trigger Lambda per il bacino d'utenza](#cognito-user-pools-lambda-trigger-event-parameter-shared)
+ [Parametri comuni del trigger Lambda del bacino d'utenza](#cognito-user-pools-lambda-trigger-syntax-shared)
+ [Metadati del client](#working-with-lambda-trigger-client-metadata)
+ [Connessione delle operazioni API ai trigger Lambda](#lambda-triggers-by-event)
+ [Connessione dei trigger Lambda alle operazioni funzionali del pool di utenti](#working-with-lambda-trigger-sources)
+ [Trigger Lambda di pre-registrazione](user-pool-lambda-pre-sign-up.md)
+ [Trigger Lambda di post-conferma](user-pool-lambda-post-confirmation.md)
+ [Trigger Lambda di pre-autenticazione](user-pool-lambda-pre-authentication.md)
+ [Trigger Lambda di post-autenticazione](user-pool-lambda-post-authentication.md)
+ [Trigger Lambda di federazione in entrata](user-pool-lambda-inbound-federation.md)
+ [Trigger Lambda di richieste di autenticazione personalizzate](user-pool-lambda-challenge.md)
+ [Trigger Lambda di pre-generazione del token](user-pool-lambda-pre-token-generation.md)
+ [Trigger Lambda di migrazione utenti](user-pool-lambda-migrate-user.md)
+ [Trigger Lambda di messaggi personalizzati](user-pool-lambda-custom-message.md)
+ [Trigger Lambda del mittente personalizzato](user-pool-lambda-custom-sender-triggers.md)

## Cose da sapere sui trigger Lambda
<a name="important-lambda-considerations"></a>

Quando prepari i tuoi pool di utenti per le funzioni Lambda, considera quanto segue:
+ Gli eventi inviati da Amazon Cognito ai trigger Lambda potrebbero cambiare con nuove funzionalità. Le posizioni degli elementi di risposta e richiesta nella gerarchia JSON potrebbero cambiare o potrebbero essere aggiunti nomi di elementi. Nella funzione Lambda, puoi ricevere le coppie chiave-valore dell'elemento di input descritte in questa guida, ma una convalida dell'input più rigorosa può causare il mancato completamento delle funzioni.
+ Puoi scegliere una di più versioni degli eventi inviati da Amazon Cognito ad alcuni trigger. Alcune versioni potrebbero richiedere di accettare una modifica ai prezzi di Amazon Cognito. Per ulteriori informazioni sui prezzi, consulta [Prezzi di Amazon Cognito](https://aws.amazon.com/cognito/pricing/). Per personalizzare i token di accesso in a[Trigger Lambda di pre-generazione del token](user-pool-lambda-pre-token-generation.md), devi configurare il tuo pool di utenti con un piano di funzionalità diverso da *Lite* e aggiornare la configurazione del trigger Lambda per utilizzare la versione 2 dell'evento.
+ Ad eccezione di [Trigger Lambda del mittente personalizzato](user-pool-lambda-custom-sender-triggers.md), Amazon Cognito richiama le funzioni Lambda in modo sincrono. Quando Amazon Cognito chiama la tua funzione Lambda, questa deve rispondere entro 5 secondi. In caso contrario e se la chiamata può essere ritentata, Amazon Cognito può riprovare la chiamata. Se tutti i tentativi falliscono, la funzione scade. Non puoi modificare questo valore di timeout di cinque secondi. Per ulteriori informazioni, consulta il [modello di programmazione Lambda](https://docs.aws.amazon.com/lambda/latest/dg/foundation-progmodel.html) nella AWS Lambda Developer Guide.

  Amazon Cognito non riprova le chiamate di funzione che restituiscono un [errore Invoke](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html#API_Invoke_Errors) con un codice di stato HTTP 500-599. Questi codici indicano un problema di configurazione che impedisce a Lambda di avviare la funzione. Per ulteriori informazioni, consulta [Gestione degli errori e tentativi automatici](https://docs.aws.amazon.com/lambda/latest/dg/invocation-retries.html) in. AWS Lambda
+ Non puoi dichiarare una versione della funzione nella configurazione del trigger Lambda. I pool di utenti di Amazon Cognito richiamano la versione più recente della tua funzione per impostazione predefinita. Tuttavia, puoi associare una versione della funzione a un alias e impostare il trigger `LambdaArn` sull'alias ARN in una [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)richiesta o API. [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html) Questa opzione non è disponibile in Console di gestione AWS. Per ulteriori informazioni sugli alias, consulta [Alias delle funzioni Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) nella *Guida per gli sviluppatori di AWS Lambda *.
+ Se si elimina un trigger , è necessario aggiornare il corrispondente trigger nel bacino d'utenza. Ad esempio, se si elimina il trigger di post autenticazione, è necessario impostare il trigger **Post authentication (Post autenticazione)** nel bacino d'utenza corrispondente su **none (nessuno)**. 
+ Se la funzione Lambda non restituisce i parametri di richiesta e risposta ad Amazon Cognito o restituisce un errore, l'evento di autenticazione non va a buon fine. Puoi restituire un errore nella funzione per impedire a un utente di eseguire la registrazione, l'autenticazione, la generazione di token o qualsiasi altra fase del flusso di autenticazione di un utente che richiami il trigger Lambda.

  L'accesso gestito restituisce gli errori generati dai trigger Lambda come testo di errore sopra la richiesta di accesso. L'API dei pool di utenti di Amazon Cognito restituisce errori dei trigger nel formato `{{[trigger]}} failed with error {{[error text from response]}}`. Come best practice, genera nelle funzioni Lambda solo gli errori che desideri mostrare agli utenti. Utilizza metodi di output come `print()` registrare qualsiasi informazione sensibile o di debug in Logs. CloudWatch Per vedere un esempio, consulta [Esempio di pre-registrazione: registrazione rifiutata se il nome utente ha meno di cinque caratteri](user-pool-lambda-pre-sign-up.md#aws-lambda-triggers-pre-registration-example-3).
+ Puoi aggiungere una funzione Lambda in un'altra Account AWS come trigger per il tuo pool di utenti. È necessario aggiungere trigger tra account con le operazioni [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)e [UpdateUserPool](https://docs.aws.amazon.com/)API o i relativi equivalenti in e. CloudFormation AWS CLI Non puoi aggiungere funzioni tra account in. Console di gestione AWS
+ Quando aggiungi un trigger Lambda nella console di Amazon Cognito, Amazon Cognito aggiunge alla funzione una policy basata sulle risorse che consente al pool di utenti di invocare la funzione. Quando crei un trigger Lambda al di fuori della console di Amazon Cognito, inclusa una funzione tra account, devi aggiungere le autorizzazioni alla policy basata sulle risorse della funzione Lambda. Le autorizzazioni aggiunte devono consentire ad Amazon Cognito di invocare la funzione per conto del pool di utenti. Puoi [aggiungere autorizzazioni dalla console Lambda o utilizzare l'](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html)operazione API Lambda [AddPermission](https://docs.aws.amazon.com/lambda/latest/dg/API_AddPermission.html).

**Esempio di policy basate su risorse Lambda**  
La seguente policy basata su risorse Lambda garantisce ad Amazon Cognito la capacità limitata di richiamare una funzione Lambda. Amazon Cognito può richiamare questa funzione solo quando lo fa per conto sia del bacino d'utenza nella condizione `aws:SourceArn` sia dell'account nella condizione `aws:SourceAccount`.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Id": "default",
      "Statement": [
          {
              "Sid": "LambdaCognitoIdpTrust",
              "Effect": "Allow",
              "Principal": {
                  "Service": "cognito-idp.amazonaws.com"
              },
              "Action": "lambda:InvokeFunction",
              "Resource": "arn:{{aws}}:lambda:{{us-east-1}}:{{111122223333}}:function:{{MyFunction}}",
              "Condition": {
                  "StringEquals": {
                      "AWS:SourceAccount": "{{111122223333}}"
                  },
                  "ArnLike": {
                      "AWS:SourceArn": "arn:{{aws}}:cognito-idp:{{us-east-1}}:{{111122223333}}:userpool/{{us-east-1_EXAMPLE}}"
                  }
              }
          }
      ]
  }
  ```

------

## Aggiungere un trigger Lambda per un pool di utenti
<a name="triggers-working-with-lambda"></a>

**Come aggiungere un trigger Lambda al bacino d'utenza con la console**

1. Usa la [console Lambda](https://console.aws.amazon.com/lambda/home) per creare una funzione Lambda. Per ulteriori informazioni sulle funzioni Lambda, consulta la [Guida per gli sviluppatori di AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/).

1. Passa alla [console Amazon Cognito](https://console.aws.amazon.com/cognito/home) e scegli **User Pools** (Bacini d'utenza).

1. Scegli un bacino d'utenza esistente dall'elenco o [creane uno nuovo](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. Scegli il menu **Estensioni** e individua i trigger **Lambda**.

1. Scegli **Add a Lambda trigger (Aggiungi un trigger Lambda)**.

1. Seleziona una **categoria** di trigger Lambda in base alla fase di autenticazione che desideri personalizzare.

1. Seleziona **Assegna funzione Lambda** e seleziona una funzione nello Regione AWS stesso pool di utenti.
**Nota**  
Se le tue credenziali AWS Identity and Access Management (IAM) sono autorizzate ad aggiornare la funzione Lambda, Amazon Cognito aggiunge una policy Lambda basata sulle risorse. Con questa policy, Amazon Cognito può richiamare la funzione selezionata. Se le credenziali di accesso non dispongono di autorizzazioni IAM sufficienti, è necessario aggiornare separatamente la policy basata sulle risorse. Per ulteriori informazioni, consulta [Cose da sapere sui trigger Lambda](#important-lambda-considerations).

1. Scegli **Salva modifiche**.

1. Puoi usarla CloudWatch nella console Lambda per registrare la tua funzione Lambda. Per ulteriori informazioni, consulta [Accesso ai CloudWatch registri per Lambda](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions-logs.html).

## Evento trigger Lambda per il bacino d'utenza
<a name="cognito-user-pools-lambda-trigger-event-parameter-shared"></a>

Amazon Cognito trasferisce informazioni sugli eventi alla funzione Lambda. La funzione Lambda restituisce ad Amazon Cognito lo stesso oggetto evento con eventuali modifiche nella risposta. Se la funzione restituisce l'evento di input senza modifiche, Amazon Cognito procede con il comportamento predefinito. Di seguito vengono mostrati i parametri comuni a tutti gli eventi di input del trigger Lambda. Per la sintassi degli eventi specifici del trigger, consulta lo schema degli eventi nella sezione di questa guida per ogni trigger.

------
#### [ JSON ]

```
{
    "version": "{{string}}",
    "triggerSource": "{{string}}",
    "region": {{AWSRegion}},
    "userPoolId": "{{string}}",
    "userName": "{{string}}",
    "callerContext": 
        {
            "awsSdkVersion": "{{string}}",
            "clientId": "{{string}}"
        },
    "request":
        {
            "userAttributes": {
                "{{string}}": "{{string}}",
                ....
            }
        },
    "response": {}
}
```

------

## Parametri comuni del trigger Lambda del bacino d'utenza
<a name="cognito-user-pools-lambda-trigger-syntax-shared"></a>

**version**  
Il numero di versione della tua funzione Lambda.

**triggerSource**  
Il nome dell'evento che ha attivato la funzione Lambda. Per una descrizione di ogni triggerSource, consulta [Connessione dei trigger Lambda alle operazioni funzionali del pool di utenti](#working-with-lambda-trigger-sources).

**region**  
Il Regione AWS come esempio. `AWSRegion`

**userPoolId**  
L'ID del pool di utenti.

**userName**  
Il nome dell'utente corrente.

**callerContext**  
I metadati sulla richiesta e sull'ambiente del codice. Contiene i campi **awsSdkVersion**e **ClientID**.    
**awsSdkVersion**  
La versione dell' AWS SDK che ha generato la richiesta.  
****clientId****  
L'ID del client dell'app del pool di utenti.

**richiesta**  
I dettagli della richiesta API dell'utente. Include i seguenti campi e i parametri di richiesta specifici del trigger, Ad esempio, un evento che Amazon Cognito invia a un trigger di pre-autenticazione contiene anche il parametro `userNotFound`. Puoi elaborare il valore di questo parametro per eseguire un'operazione personalizzata quando l'utente tenta di accedere con un nome utente non registrato.    
**userAttributes**  
Una o più coppie chiave-valore di nomi e valori di attributi dell'utente, ad esempio `"email": "john@example.com"`.

**risposta**  
Questo parametro non contiene alcuna informazione nella richiesta originale. La funzione Lambda deve restituire l'intero evento ad Amazon Cognito e aggiungere eventuali parametri di riposta a `response`. Per visualizzare quali parametri di riposta può includere la funzione, fai riferimento alla documentazione relativa al trigger che vuoi usare.

## Metadati del client
<a name="working-with-lambda-trigger-client-metadata"></a>

Puoi inviare parametri personalizzati alle funzioni di attivazione Lambda nelle operazioni e [Endpoint Token](token-endpoint.md) nelle richieste API. Con i metadati del client, l'applicazione può raccogliere informazioni aggiuntive sull'ambiente in cui hanno origine le richieste. Quando passi i metadati del client alle tue funzioni Lambda, queste possono elaborare i dati aggiuntivi e utilizzarli per la registrazione o la personalizzazione dei flussi di autenticazione. I metadati del client sono coppie di stringhe di tua scelta e progettate in un formato chiave-valore JSON.

**Esempi di utilizzo dei metadati dei client**
+ Passa i dati di geolocalizzazione al momento dell'iscrizione al [trigger di pre-registrazione e impedisci l'accesso](user-pool-lambda-pre-sign-up.md) da posizioni indesiderate.
+ Trasmetti i dati identificativi degli inquilini ai [trigger di sfida personalizzati](user-pool-lambda-challenge.md) e invia sfide diverse ai clienti di diverse unità aziendali.
+ Passa il token di un utente al [trigger precedente alla generazione del token](user-pool-lambda-pre-token-generation.md) e genera un registro del principale per cui è stata effettuata una richiesta M2M. Per una richiesta di esempio, consulta [Credenziali del client con autorizzazione di baseCredenziali del cliente con autorizzazione dell'ente POST](token-endpoint.md#exchanging-client-credentials-for-an-access-token-in-request-body).

Ecco un esempio di trasferimento dei metadati del client al trigger di pre-registrazione.

------
#### [ SignUp request ]

Di seguito è riportato un esempio di [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html#CognitoUserPools-SignUp-request-ValidationData)richiesta con metadati del cliente che Amazon Cognito passa a un trigger di pre-registrazione.

```
POST HTTP/1.1
Host: cognito-idp.us-east-1.amazonaws.com
X-Amz-Date: 20230613T200059Z
Accept-Encoding: gzip, deflate, br
X-Amz-Target: AWSCognitoIdentityProviderService.SignUp
User-Agent: <UserAgentString>
Authorization: AWS4-HMAC-SHA256 Credential=<Credential>, SignedHeaders=<Headers>, Signature=<Signature>
Content-Length: <PayloadSizeBytes>

{
    "ClientId": "1example23456789",
    "Username": "mary_major",
    "Password": "<Password>",
    "SecretHash": "<Secret hash>",
    "ClientMetadata": { 
        "IpAddress" : "192.0.2.252",
        "GeoLocation" : "Netherlands (Kingdom of the) [NL]"
    }
    "UserAttributes": [
        {
            "Name": "name",
            "Value": "Mary"
        },
        {
            "Name": "email",
            "Value": "mary_major@example.com"
        },
        {
            "Name": "phone_number",
            "Value": "+12065551212"
        }
    ],
}
```

------
#### [ Lambda trigger input event ]

La richiesta genera il seguente corpo di richiesta alla funzione di pre-registrazione.

```
{
    "callerContext": {
        "awsSdkVersion": "aws-sdk-unknown-unknown",
        "clientId": "1example23456789"
    },
    "region": "us-west-2",
    "request": {
        "clientMetadata": {
            "GeoLocation": "Netherlands (Kingdom of the) [NL]",
            "IpAddress": "192.0.2.252"
        },
        "userAttributes": {
            "email": "mary_major@example.com",
            "name": "Mary",
            "phone_number": "+12065551212"
        },
        "validationData": null
    },
    "response": {
        "autoConfirmUser": false,
        "autoVerifyEmail": false,
        "autoVerifyPhone": false
    },
    "triggerSource": "PreSignUp_SignUp",
    "userName": "mary_major2",
    "userPoolId": "us-west-2_EXAMPLE",
    "version": "1"
}
```

------

**Metadati del client per le credenziali del client machine-to-machine (M2M)**  
È possibile passare i [metadati dei client](#working-with-lambda-trigger-client-metadata) nelle richieste M2M. I metadati del client sono informazioni aggiuntive provenienti da un ambiente utente o applicativo che possono contribuire ai risultati di un. [Trigger Lambda di pre-generazione del token](user-pool-lambda-pre-token-generation.md) Nelle operazioni di autenticazione con un user principal, è possibile passare i metadati del client al trigger precedente alla generazione del token nel corpo delle richieste API [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html). [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html) Poiché le applicazioni gestiscono il flusso per la generazione di token di accesso per M2M con richieste dirette a[Endpoint Token](token-endpoint.md), hanno un modello diverso. Nel corpo POST delle richieste di token per le credenziali del client, passate un `aws_client_metadata` parametro con l'oggetto di metadati del client con codifica URL () a string. `x-www-form-urlencoded` Per una richiesta di esempio, consulta [Credenziali del client con autorizzazione di baseCredenziali del cliente con autorizzazione dell'ente POST](token-endpoint.md#exchanging-client-credentials-for-an-access-token-in-request-body). Di seguito è riportato un parametro di esempio che passa le coppie chiave-valore. `{"environment": "dev", "language": "en-US"}`

```
aws_client_metadata=%7B%22environment%22%3A%20%22dev%22,%20%22language%22%3A%20%22en-US%22%7D
```

**Attributi utente temporanei: `validationData`**  
Alcune operazioni di autenticazione hanno anche un `validationData` parametro. Come i metadati dei client, questa è un'opportunità per passare informazioni esterne che Amazon Cognito non raccoglie automaticamente ai trigger Lambda. Il campo dei dati di convalida ha lo scopo di fornire alla funzione Lambda un contesto utente aggiuntivo nelle operazioni di registrazione e accesso. [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html#CognitoUserPools-SignUp-request-ValidationData)[e [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html#CognitoUserPools-AdminCreateUser-request-ValidationData)passa al trigger di `validationData` pre-registrazione.](user-pool-lambda-pre-sign-up.md) [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-ClientMetadata)e [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-ClientMetadata)passa `ClientMetadata` il corpo della richiesta API come `validationData` nell'evento di input ai trigger di [pre-autenticazione](user-pool-lambda-pre-authentication.md) e [migrazione dell'utente](user-pool-lambda-migrate-user.md).

Per mappare le operazioni API alle funzioni a cui possono trasmettere i metadati del client, consulta le sezioni sull'origine dei trigger che seguono.

## Connessione delle operazioni API ai trigger Lambda
<a name="lambda-triggers-by-event"></a>

Le sezioni seguenti descrivono i trigger Lambda che Amazon Cognito richiama dall'attività nel pool di utenti.

Quando la tua app accede agli utenti tramite l'API dei pool di utenti di Amazon Cognito, l'accesso gestito o gli endpoint del pool di utenti, Amazon Cognito richiama le tue funzioni Lambda in base al contesto della sessione. Per ulteriori informazioni sull'API dei pool di utenti di Amazon Cognito e gli endpoint del pool di utenti, consultare [Comprendere l'API, l'OIDC e l'autenticazione delle pagine di accesso gestite](authentication-flows-public-server-side.md#user-pools-API-operations). Le tabelle nelle seguenti sezioni descrivono gli eventi che inducono Amazon Cognito a richiamare una funzione e la stringa `triggerSource` che Amazon Cognito include nella richiesta.

**Topics**
+ [Trigger Lambda nell'API Amazon Cognito](#lambda-triggers-native-users-native-api)
+ [Trigger Lambda per gli utenti locali di Amazon Cognito nell'accesso gestito](#lambda-triggers-native-users-hosted-UI)
+ [Trigger Lambda per utenti federati](#lambda-triggers-for-federated-users)

### Trigger Lambda nell'API Amazon Cognito
<a name="lambda-triggers-native-users-native-api"></a>

La tabella seguente descrive le stringhe di origine per i trigger Lambda che possono essere richiamati da Amazon Cognito quando l'app crea, aggiorna o fornisce l'accesso a un utente locale.


**Origini dei trigger di utenti locali nell'API Amazon Cognito**  


- ** [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html) **
  - **Trigger Lambda:** Pre-iscrizione / **Origine del trigger:** `PreSignUp_AdminCreateUser`
  - **Trigger Lambda:** Prima della generazione di token / **Origine del trigger:** `TokenGeneration_NewPasswordChallenge`
  - **Trigger Lambda:** Messaggio personalizzato / **Origine del trigger:** `CustomMessage_AdminCreateUser`
  - **Trigger Lambda:** Mittente di messaggio e-mail personalizzato / **Origine del trigger:** `CustomEmailSender_AdminCreateUser`
  - **Trigger Lambda:** Mittente di SMS personalizzato / **Origine del trigger:** `CustomSMSSender_AdminCreateUser`

- ** [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html) **
  - **Trigger Lambda:** Pre-iscrizione / **Origine del trigger:** `PreSignUp_SignUp`
  - **Trigger Lambda:** Messaggio personalizzato / **Origine del trigger:** `CustomMessage_SignUp`
  - **Trigger Lambda:** Mittente di messaggio e-mail personalizzato / **Origine del trigger:** `CustomEmailSender_SignUp`
  - **Trigger Lambda:** Mittente di SMS personalizzato / **Origine del trigger:** `CustomSMSSender_SignUp`

- ** [ConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html) [AdminConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminConfirmSignUp.html) **
  - **Trigger Lambda:** Conferma postale
  - **Origine del trigger:** `PostConfirmation_ConfirmSignUp`

- ** [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) **
  - **Trigger Lambda:** Autenticazione preliminare / **Origine del trigger:** `PreAuthentication_Authentication`
  - **Trigger Lambda:** Autenticazione successiva / **Origine del trigger:** `PostAuthentication_Authentication`
  - **Trigger Lambda:** Definisci la sfida di autenticazione / **Origine del trigger:** `DefineAuthChallenge_Authentication`
  - **Trigger Lambda:** Crea una sfida di autenticazione / **Origine del trigger:** `CreateAuthChallenge_Authentication`
  - **Trigger Lambda:** Verifica della richiesta di autenticazione / **Origine del trigger:** `VerifyAuthChallenge_Authentication`
  - **Trigger Lambda:** Prima della generazione di token / **Origine del trigger:** `TokenGeneration_Authentication`<br />`TokenGeneration_AuthenticateDevice`<br />`TokenGeneration_RefreshTokens`
  - **Trigger Lambda:** Migrazione utente / **Origine del trigger:** `UserMigration_Authentication`
  - **Trigger Lambda:** Messaggio personalizzato / **Origine del trigger:** `CustomMessage_Authentication`
  - **Trigger Lambda:** Mittente di messaggio e-mail personalizzato / **Origine del trigger:** `CustomEmailSender_AccountTakeOverNotification`<br />`CustomEmailSender_Authentication`
  - **Trigger Lambda:** Mittente di SMS personalizzato / **Origine del trigger:** `CustomSMSSender_Authentication`

- ** [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html) [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html) **
  - **Trigger Lambda:** Autenticazione post / **Origine del trigger:** `PostAuthentication_Authentication`
  - **Trigger Lambda:** Definisci la sfida di autenticazione / **Origine del trigger:** `DefineAuthChallenge_Authentication`
  - **Trigger Lambda:** Crea una sfida di autenticazione / **Origine del trigger:** `CreateAuthChallenge_Authentication`
  - **Trigger Lambda:** Verifica della richiesta di autenticazione / **Origine del trigger:** `VerifyAuthChallenge_Authentication`
  - **Trigger Lambda:** Prima della generazione di token / **Origine del trigger:** `TokenGeneration_Authentication`<br />`TokenGeneration_AuthenticateDevice`<br />`TokenGeneration_RefreshTokens`
  - **Trigger Lambda:** Messaggio personalizzato / **Origine del trigger:** `CustomMessage_Authentication`
  - **Trigger Lambda:** Mittente di messaggio e-mail personalizzato / **Origine del trigger:** `CustomEmailSender_AccountTakeOverNotification`<br />`CustomEmailSender_Authentication`
  - **Trigger Lambda:** Mittente di SMS personalizzato / **Origine del trigger:** `CustomSMSSender_Authentication`

- ** [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html) **
  - **Trigger Lambda:** Esegui la migrazione dell'utente / **Origine del trigger:** `UserMigration_ForgotPassword`
  - **Trigger Lambda:** Messaggio personalizzato / **Origine del trigger:** `CustomMessage_ForgotPassword`
  - **Trigger Lambda:** Mittente di messaggio e-mail personalizzato / **Origine del trigger:** `CustomEmailSender_ForgotPassword`
  - **Trigger Lambda:** Mittente di SMS personalizzato / **Origine del trigger:** `CustomSMSSender_ForgotPassword`

- ** [ConfirmForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html) **
  - **Trigger Lambda:** Conferma postale
  - **Origine del trigger:** `PostConfirmation_ConfirmForgotPassword`

- ** [UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html) [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html) **
  - **Trigger Lambda:** Messaggio personalizzato / **Origine del trigger:** `CustomMessage_UpdateUserAttribute`
  - **Trigger Lambda:** Mittente di messaggio e-mail personalizzato / **Origine del trigger:** `CustomEmailSender_UpdateUserAttribute`
  - **Trigger Lambda:** Mittente di SMS personalizzato / **Origine del trigger:** `CustomSMSSender_UpdateUserAttribute`

- ** [VerifyUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttributes.html) **
  - **Trigger Lambda:** Messaggio personalizzato / **Origine del trigger:** `CustomMessage_VerifyUserAttribute`
  - **Trigger Lambda:** Mittente di messaggio e-mail personalizzato / **Origine del trigger:** `CustomEmailSender_VerifyUserAttribute`
  - **Trigger Lambda:** Mittente di SMS personalizzato / **Origine del trigger:** `CustomSMSSender_VerifyUserAttribute`

- ** [GetTokensFromRefreshToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetTokensFromRefreshToken.html) **
  - **Trigger Lambda:** Prima della generazione di token
  - **Origine del trigger:** `TokenGeneration_Authentication`



### Trigger Lambda per gli utenti locali di Amazon Cognito nell'accesso gestito
<a name="lambda-triggers-native-users-hosted-UI"></a>

La tabella seguente descrive le stringhe di origine per i trigger Lambda che Amazon Cognito può richiamare quando un utente locale accede al tuo pool di utenti con accesso gestito.


**Fonti di attivazione utente locali nell'accesso gestito**  


- **`/signup`**
  - **Trigger Lambda:** Pre-iscrizione / **Origine del trigger:** `PreSignUp_SignUp`
  - **Trigger Lambda:** Messaggio personalizzato / **Origine del trigger:** `CustomMessage_SignUp`
  - **Trigger Lambda:** Mittente di messaggio e-mail personalizzato / **Origine del trigger:** `CustomEmailSender_SignUp`
  - **Trigger Lambda:** Mittente di SMS personalizzato / **Origine del trigger:** `CustomSMSSender_SignUp`

- **`/confirmuser`**
  - **Trigger Lambda:** Conferma postale
  - **Origine del trigger:** `PostConfirmation_ConfirmSignUp`

- **`/login`**
  - **Trigger Lambda:** Autenticazione preliminare / **Origine del trigger:** `PreAuthentication_Authentication`
  - **Trigger Lambda:** Prima della generazione di token / **Origine del trigger:** `TokenGeneration_Authentication`<br />`TokenGeneration_AuthenticateDevice`<br />`TokenGeneration_RefreshTokens`
  - **Trigger Lambda:** Migrazione utente / **Origine del trigger:** `UserMigration_Authentication`
  - **Trigger Lambda:** Messaggio personalizzato / **Origine del trigger:** `CustomMessage_Authentication`
  - **Trigger Lambda:** Mittente di messaggio e-mail personalizzato / **Origine del trigger:** `CustomEmailSender_AccountTakeOverNotification`<br />`CustomEmailSender_Authentication`
  - **Trigger Lambda:** Mittente di SMS personalizzato / **Origine del trigger:** `CustomSMSSender_Authentication`

- **`/forgotpassword`**
  - **Trigger Lambda:** Esegui la migrazione dell'utente / **Origine del trigger:** `UserMigration_ForgotPassword`
  - **Trigger Lambda:** Messaggio personalizzato / **Origine del trigger:** `CustomMessage_ForgotPassword`
  - **Trigger Lambda:** Mittente di messaggio e-mail personalizzato / **Origine del trigger:** `CustomEmailSender_ForgotPassword`
  - **Trigger Lambda:** Mittente di SMS personalizzato / **Origine del trigger:** `CustomSMSSender_ForgotPassword`

- **`/confirmforgotpassword`**
  - **Trigger Lambda:** Conferma postale
  - **Origine del trigger:** `PostConfirmation_ConfirmForgotPassword`



### Trigger Lambda per utenti federati
<a name="lambda-triggers-for-federated-users"></a>

È possibile utilizzare i seguenti trigger Lambda per personalizzare i flussi di lavoro del bacino d'utenza per gli utenti che accedono con un provider federato. 

**Nota**  
Gli utenti federati possono utilizzare l'accesso gestito per accedere oppure puoi generare una richiesta a loro [Endpoint Authorize](authorization-endpoint.md) che li reindirizza silenziosamente alla pagina di accesso del loro provider di identità. Non è possibile fornire l'accesso agli utenti federati con l'API del pool di utenti Amazon Cognito.


**Origini dei trigger utente federati**  


- **Primo accesso**
  - **Trigger Lambda:** Pre-iscrizione / **Origine del trigger:** `PreSignUp_ExternalProvider`
  - **Trigger Lambda:** Dopo la conferma / **Origine del trigger:** `PostConfirmation_ConfirmSignUp`
  - **Trigger Lambda:** Prima della generazione di token / **Origine del trigger:** `TokenGeneration_HostedAuth`

- **Accessi successivi**
  - **Trigger Lambda:** Autenticazione preliminare / **Origine del trigger:** `PreAuthentication_Authentication`
  - **Trigger Lambda:** Autenticazione successiva / **Origine del trigger:** `PostAuthentication_Authentication`
  - **Trigger Lambda:** Prima della generazione di token / **Origine del trigger:** `TokenGeneration_HostedAuth`



L'accesso federato non richiama [Trigger Lambda di richieste di autenticazione personalizzate](user-pool-lambda-challenge.md), [Trigger Lambda di migrazione utenti](user-pool-lambda-migrate-user.md), [Trigger Lambda di messaggi personalizzati](user-pool-lambda-custom-message.md) o [Trigger Lambda del mittente personalizzato](user-pool-lambda-custom-sender-triggers.md) nel bacino d'utenza.

## Connessione dei trigger Lambda alle operazioni funzionali del pool di utenti
<a name="working-with-lambda-trigger-sources"></a>

Ogni trigger Lambda svolge un ruolo funzionale nel pool di utenti, ad esempio un trigger può modificare il flusso di registrazione o aggiungere una richiesta di autenticazione personalizzata. L'evento inviato da Amazon Cognito a una funzione Lambda può riflettere una delle tante operazioni che costituiscono il ruolo funzionale, ad esempio Amazon Cognito richiama un trigger di pre-registrazione quando un utente si registra e quando viene creato. Ognuno di questi casi diversi per lo stesso ruolo funzionale ha un proprio valore `triggerSource`. La funzione Lambda può elaborare gli eventi in entrata in modo diverso in base all'operazione che l'ha richiamata.

Amazon Cognito richiama tutte le funzioni assegnate anche quando un evento corrisponde a un'origine del trigger, ad esempio quando un utente accede a un pool di utenti a cui hai assegnato i trigger di migrazione utenti e di pre-autenticazione, vengono attivati entrambi i trigger.


**Trigger di registrazione, conferma e accesso (autenticazione)**  

| Trigger | Valore triggerSource | Event | 
| --- | --- | --- | 
| Pre-iscrizione | PreSignUp\_SignUp | Pre registrazione. | 
| Pre-iscrizione | PreSignUp\_AdminCreateUser | Pre registrazione quando un amministratore crea un nuovo utente. | 
| Pre-iscrizione | PreSignUp\_ExternalProvider | Pre-registrazione per provider di identità esterni. | 
| Dopo la conferma | PostConfirmation\_ConfirmSignUp | Conferma post registrazione. | 
| Conferma successiva | PostConfirmation\_ConfirmForgotPassword | Conferma successiva alla password dimenticata. | 
| Autenticazione preliminare | PreAuthentication\_Authentication | Preautenticazione. | 
| Autenticazione successiva | PostAuthentication\_Authentication | Post autenticazione. | 


**Trigger di richieste di autenticazione personalizzate**  

| Trigger | Valore triggerSource | Event | 
| --- | --- | --- | 
| Definisci la sfida di autenticazione | DefineAuthChallenge\_Authentication | Definizione di una richiesta di autenticazione. | 
| Crea una sfida di autenticazione | CreateAuthChallenge\_Authentication | Creazione di una richiesta di autenticazione. | 
| Verifica della richiesta di autenticazione | VerifyAuthChallengeResponse\_Authentication | Verifica di risposta di una richiesta di autenticazione. | 


**Trigger della federazione**  

| Trigger | Valore triggerSource | Event | 
| --- | --- | --- | 
| Federazione in entrata | InboundFederation\_ExternalProvider | Federazione in entrata. | 


**Trigger della pre-generazione di token**  

| Trigger | Valore triggerSource | Event | 
| --- | --- | --- | 
| Generazione precedente al token | TokenGeneration\_HostedAuth |  Amazon Cognito autentica l'utente dalla tua pagina di accesso gestita. | 
| Prima della generazione di token | TokenGeneration\_Authentication | Autenticazione utente o aggiornamento del token completati. | 
| Generazione precedente al token | TokenGeneration\_NewPasswordChallenge | L'amministratore crea l'utente. Amazon Cognito richiama questa operazione quando l'utente deve modificare una password temporanea. | 
| Prima della generazione di token | TokenGeneration\_AuthenticateDevice | Passaggio finale dell'autenticazione di un dispositivo dell'utente. | 
| Prima della generazione di token | TokenGeneration\_RefreshTokens | L'utente cerca di aggiornare l'identità e i token di accesso. | 


**Trigger di migrazione utenti**  

| Trigger | Valore triggerSource | Event | 
| --- | --- | --- | 
| Migrazione degli utenti | UserMigration\_Authentication | Migrazione degli utenti al momento dell'accesso. | 
| Migrazione degli utenti | UserMigration\_ForgotPassword | Migrazione degli utenti durante il flusso di password dimenticata. | 


**Trigger di messaggi personalizzati**  

| Trigger | Valore triggerSource | Event | 
| --- | --- | --- | 
| Messaggio personalizzato | CustomMessage\_SignUp | Messaggio personalizzato quando un utente effettua la registrazione nel bacino d'utenza. | 
| Messaggio personalizzato | CustomMessage\_AdminCreateUser | Messaggio personalizzato quando crei un utente come amministratore e Amazon Cognito gli invia una password temporanea. | 
| Messaggio personalizzato | CustomMessage\_ResendCode | Messaggio personalizzato quando un utente esistente richiede un nuovo codice di conferma. | 
| Messaggio personalizzato | CustomMessage\_ForgotPassword | Messaggio personalizzato quando l'utente richiede la reimpostazione della password. | 
| Messaggio personalizzato | CustomMessage\_UpdateUserAttribute | Messaggio personalizzato quando un utente modifica il proprio indirizzo e-mail o numero di telefono e Amazon Cognito gli invia un codice di verifica. | 
| Messaggio personalizzato | CustomMessage\_VerifyUserAttribute | Messaggio personalizzato quando un utente aggiunge un indirizzo e-mail o un numero di telefono e Amazon Cognito gli invia un codice di verifica. | 
| Messaggio personalizzato | CustomMessage\_Authentication | Messaggio personalizzato quando un utente che ha configurato SMS MFA esegue l'accesso. | 


**Trigger personalizzati per i mittenti**  

| Trigger | Valore triggerSource | Event | 
| --- | --- | --- | 
| Mittente personalizzato | `CustomEmailSender_SignUp`<br />`CustomSmsSender_SignUp` | Quando un utente si iscrive al tuo pool di utenti. | 
| Mittente personalizzato | `CustomEmailSender_AdminCreateUser`<br />`CustomSmsSender_AdminCreateUser` | Quando crei un utente come amministratore e Amazon Cognito gli invia una password temporanea. | 
| Mittente personalizzato | `CustomEmailSender_ForgotPassword`<br />`CustomSmsSender_ForgotPassword` | Quando l'utente richiede la reimpostazione della password. | 
| Mittente personalizzato | `CustomEmailSender_UpdateUserAttribute`<br />`CustomSmsSender_UpdateUserAttribute` | Quando un utente modifica il proprio indirizzo e-mail o numero di telefono e Amazon Cognito invia un codice di verifica. | 
| Mittente personalizzato | `CustomEmailSender_VerifyUserAttribute`<br />`CustomSmsSender_VerifyUserAttribute` | Quando un utente aggiunge un indirizzo e-mail o un numero di telefono e Amazon Cognito invia un codice di verifica. | 
| Mittente personalizzato | `CustomEmailSender_Authentication`<br />`CustomSmsSender_Authentication` | Quando un utente che ha configurato SMS o e-mail MFA o OTP accede. | 
| Mittente personalizzato | CustomEmailSender\_AccountTakeOverNotification | Quando le impostazioni di protezione dalle minacce intraprendono un'azione automatica contro il tentativo di accesso di un utente e l'azione relativa al livello di rischio include una notifica. | 