

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à.

# Trigger Lambda di migrazione utenti
<a name="user-pool-lambda-migrate-user"></a>

Amazon Cognito richiama questo trigger quando un utente non esiste nel bacino d'utenza al momento dell'accesso con una password oppure nel flusso di reimpostazione della password. Dopo l'esito positivo della funzione Lambda, Amazon Cognito crea l'utente nel bacino d'utenza. Per i dettagli sul flusso di autenticazione con il trigger Lambda di migrazione utenti, consulta [Importazione di utenti con un trigger Lambda per la migrazione di utenti](cognito-user-pools-import-using-lambda.md).

Usa questo trigger Lambda per migrare gli utenti dalla directory degli utenti esistente nel bacino d'utenza ad Amazon Cognito al momento dell'accesso o durante il flusso di reimpostazione della password.

**Topics**
+ [Origini dei trigger Lambda di migrazione utenti](#user-pool-lambda-migrate-user-trigger-source)
+ [Parametri del trigger Lambda di migrazione utenti](#cognito-user-pools-lambda-trigger-syntax-user-migration)
+ [Esempio di migrazione di un utente con una password esistente](#aws-lambda-triggers-user-migration-example-1)

## Origini dei trigger Lambda di migrazione utenti
<a name="user-pool-lambda-migrate-user-trigger-source"></a>


| Valore triggerSource | Event | 
| --- | --- | 
| UserMigration\$1Authentication[1](#cognito-migrate-user-passwordless-note) | Migrazione degli utenti al momento dell'accesso. | 
| UserMigration\$1ForgotPassword | Migrazione degli utenti durante il flusso di password dimenticata. | 

1 [Amazon Cognito non richiama questo trigger quando gli utenti si autenticano con l'accesso senza password.](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless)

## Parametri del trigger Lambda di migrazione utenti
<a name="cognito-user-pools-lambda-trigger-syntax-user-migration"></a>

La richiesta passata da Amazon Cognito a questa funzione Lambda è una combinazione dei parametri seguenti e dei [parametri comuni](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-working-with-lambda-triggers.html#cognito-user-pools-lambda-trigger-syntax-shared) aggiunti da Amazon Cognito a tutte le richieste.

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

```
{
    "userName": "string",
    "request": {
        "password": "string",
        "validationData": {
            "string": "string",
            . . .
        },
        "clientMetadata": {
            "string": "string",
      	. . .
        }
    },
    "response": {
        "userAttributes": {
            "string": "string",
            . . .
        },
        "finalUserStatus": "string",
        "messageAction": "string",
        "desiredDeliveryMediums": [ "string", . . .],
        "forceAliasCreation": boolean,
        "enableSMSMFA": boolean
    }
}
```

------

### Parametri di richiesta di migrazione utenti
<a name="cognito-user-pools-lambda-trigger-syntax-user-migration-request"></a>

**userName**  
Il nome utente inserito dall'utente al momento dell'accesso.

**password**  
La password inserita dall'utente al momento dell'accesso. Amazon Cognito non invia questo valore in una richiesta avviata da un flusso di reimpostazione della password.

**validationData**  
Una o più coppie chiave-valore contenenti i dati di convalida nella richiesta di registrazione dell'utente. Per passare questi dati alla funzione Lambda, puoi utilizzare il ClientMetadata parametro nelle azioni [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)e [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)API.

**clientMetadata**  
Una o più coppie chiave-valore che è possibile fornire come input personalizzato alla funzione Lambda per il trigger di migrazione utenti. Per passare questi dati alla funzione Lambda, puoi utilizzare il ClientMetadata parametro nelle azioni [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)e [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)API.

### Parametri di risposta di migrazione utenti
<a name="cognito-user-pools-lambda-trigger-syntax-user-migration-response"></a>

**userAttributes**  
Questo campo è obbligatorio.   
Questo campo deve contenere una o più coppie nome-valore archiviate da Amazon Cognito nel profilo utente del bacino d'utenza e utilizzate come attributi utente. Puoi includere attributi utenti standard e personalizzati. Gli attributi personalizzati richiedono il prefisso `custom:` per distinguerli dagli attributi standard. Per ulteriori informazioni sugli attributi, consulta [Attributi personalizzati](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html#user-pool-settings-custom-attributes.html).  
Per poter reimpostare le password nel flusso di reimpostazione della password, gli utenti devono avere un indirizzo e-mail o un numero di telefono verificati. Amazon Cognito invia un messaggio contenente un codice di reimpostazione della password all'indirizzo e-mail o al numero di telefono specificati negli attributi utente.     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/cognito/latest/developerguide/user-pool-lambda-migrate-user.html)

**finalUserStatus**  
È possibile impostare questo parametro su `CONFIRMED` per confermare automaticamente gli utenti, in modo che possano accedere con le password precedenti. Gli utenti che imposti su `CONFIRMED` non devono intraprendere ulteriori azioni prima di poter effettuare l'accesso. Se non imposti questo attributo su `CONFIRMED`, esso rimane impostato su `RESET_REQUIRED`.  
Un `finalUserStatus` di `RESET_REQUIRED` significa che l'utente deve modificare la propria password immediatamente dopo la migrazione al momento dell'accesso e l'app client deve gestire l'eccezione `PasswordResetRequiredException` durante il flusso di autenticazione.  
Amazon Cognito non applica la policy relativa alla forza della password che hai configurato per il bacino d'utenza durante la migrazione utilizzando il trigger Lambda. Se la password non soddisfa la tua policy per le password, Amazon Cognito la accetta comunque e continua a migrare l'utente. Per applicare la policy di protezione delle password e rifiutare le password che non soddisfano la policy, convalida la validità della password nel codice. Quindi, se la password non soddisfa i criteri, impostala su finalUserStatus . `RESET_REQUIRED`

**messageAction**  
Se desideri impedire l'invio del messaggio di benvenuto che Amazon Cognito invia di solito ai nuovi utenti, imposta questo parametro su `SUPPRESS`. Se la funzione non restituisce questo parametro, Amazon Cognito invia il messaggio di benvenuto.

**desiredDeliveryMediums**  
Per inviare il messaggio di benvenuto tramite e-mail, imposta il valore su `EMAIL`; per inviarlo tramite SMS, imposta il valore su `SMS`. Se la funzione non restituisce questo parametro, Amazon Cognito invia il messaggio di benvenuto tramite SMS.

**forceAliasCreation**  
Se imposti questo parametro su `TRUE` e il numero di telefono o l'indirizzo e-mail nel UserAttributes parametro esiste già come alias con un altro utente, la chiamata API migra l'alias dall'utente precedente a quello appena creato. L'utente precedente non potrà più effettuare l'accesso utilizzando tale alias.  
Se imposti questo parametro su `FALSE` e l'alias esiste, Amazon Cognito non esegue la migrazione dell'utente e restituisce un errore all'app client.  
Se non restituisci questo parametro, Amazon Cognito presuppone che il suo valore sia "false".

**enableSMSMFA**  
Imposta questo parametro su `true` per richiedere all'utente migrato di completare l'autenticazione a più fattori (MFA) tramite SMS per accedere. Il pool di utenti deve avere l'MFA abilitato. Gli attributi dell'utente nei parametri della richiesta devono includere un numero di telefono, altrimenti la migrazione di quell'utente fallirà.

## Esempio di migrazione di un utente con una password esistente
<a name="aws-lambda-triggers-user-migration-example-1"></a>

Questa funzione Lambda di esempio migra l'utente con una password esistente ed elimina il messaggio di benvenuto da Amazon Cognito.

------
#### [ Node.js ]

```
exports.handler = (event, context, callback) => {
  var user;

  if (event.triggerSource == "UserMigration_Authentication") {
    // authenticate the user with your existing user directory service
    user = authenticateUser(event.userName, event.request.password);
    if (user) {
      event.response.userAttributes = {
        email: user.emailAddress,
        email_verified: "true",
      };
      event.response.finalUserStatus = "CONFIRMED";
      event.response.messageAction = "SUPPRESS";
      context.succeed(event);
    } else {
      // Return error to Amazon Cognito
      callback("Bad password");
    }
  } else if (event.triggerSource == "UserMigration_ForgotPassword") {
    // Lookup the user in your existing user directory service
    user = lookupUser(event.userName);
    if (user) {
      event.response.userAttributes = {
        email: user.emailAddress,
        // required to enable password-reset code to be sent to user
        email_verified: "true",
      };
      event.response.messageAction = "SUPPRESS";
      context.succeed(event);
    } else {
      // Return error to Amazon Cognito
      callback("Bad password");
    }
  } else {
    // Return error to Amazon Cognito
    callback("Bad triggerSource " + event.triggerSource);
  }
};
```

------