

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Migrar o acionador do Lambda do usuário
<a name="user-pool-lambda-migrate-user"></a>

Quando um usuário não existir no grupo de usuários no momento de login com senha, ou no fluxo de senha esquecida, o Amazon Cognito invocará esse acionador. Depois que a função Lambda retornar com êxito, o Amazon Cognito criará o usuário no grupo de usuários. Para obter detalhes sobre o fluxo de autenticação com o acionador do Lambda de migração de usuários, consulte [Como importar usuários com um acionador do Lambda de migração de usuários](cognito-user-pools-import-using-lambda.md).

Para migrar os usuários de seu diretório de usuários existente para grupos de usuários do Amazon Cognito no momento do login ou durante o fluxo de senha esquecida, siga esse acionador do Lambda.

**Topics**
+ [Fontes do acionador do Lambda de migrar usuário](#user-pool-lambda-migrate-user-trigger-source)
+ [Parâmetros do acionador do Lambda de migrar usuário](#cognito-user-pools-lambda-trigger-syntax-user-migration)
+ [Exemplo: migrar um usuário com uma senha existente](#aws-lambda-triggers-user-migration-example-1)

## Fontes do acionador do Lambda de migrar usuário
<a name="user-pool-lambda-migrate-user-trigger-source"></a>


| Valor de triggerSource | Event | 
| --- | --- | 
| UserMigration\$1Authentication[1](#cognito-migrate-user-passwordless-note) | Migração de usuários no login. | 
| UserMigration\$1ForgotPassword | Migração de usuários durante o fluxo de esquecimento de senha. | 

1 O Amazon Cognito não invoca esse acionador quando os usuários autenticam com [login sem senha](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless).

## Parâmetros do acionador do Lambda de migrar usuário
<a name="cognito-user-pools-lambda-trigger-syntax-user-migration"></a>

A solicitação que o Amazon Cognito transmite para essa função do Lambda é uma combinação dos parâmetros abaixo e dos [parâmetros comuns](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-working-with-lambda-triggers.html#cognito-user-pools-lambda-trigger-syntax-shared) que o Amazon Cognito adiciona a todas as solicitações.

------
#### [ 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
    }
}
```

------

### Parâmetros de solicitação de migrar usuário
<a name="cognito-user-pools-lambda-trigger-syntax-user-migration-request"></a>

**userName**  
O nome de usuário que o usuário insere no login.

**password**  
A senha que o usuário insere no login. O Amazon Cognito não envia esse valor em uma solicitação iniciada por um fluxo de senha esquecida.

**validationData**  
Um ou mais pares de chave-valor que contêm os dados de validação na solicitação de login do usuário. Para passar esses dados para sua função Lambda, você pode usar o ClientMetadata parâmetro nas ações [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)e da [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)API.

**clientMetadata**  
Um ou mais pares de chave-valor que você pode fornecer como entrada personalizada à função do Lambda para o acionador de migração do usuário. Para passar esses dados para sua função Lambda, você pode usar o ClientMetadata parâmetro nas ações [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)e da [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)API.

### Parâmetros de resposta de migrar usuário
<a name="cognito-user-pools-lambda-trigger-syntax-user-migration-response"></a>

**userAttributes**  
Este campo é obrigatório.   
Esse campo deve conter um ou mais pares de nome-valor que o Amazon Cognito armazena no perfil de usuário no grupo de usuários e usa como atributos de usuário. Você pode incluir atributos de usuário padrão e personalizados. Os atributos personalizados exigem o prefixo `custom:` para diferenciá-los dos atributos padrão. Para obter mais informações, consulte [Atributos personalizados](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html#user-pool-settings-custom-attributes.html).  
Para redefinir uma senha no fluxo de senha esquecida, o usuário deverá ter um e-mail verificado ou um número de telefone verificado. O Amazon Cognito envia uma mensagem contendo um código de redefinição de senha para o e-mail ou o número de telefone nos atributos do usuário.     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/user-pool-lambda-migrate-user.html)

**finalUserStatus**  
Você pode definir esse parâmetro como `CONFIRMED` para confirmar automaticamente seus usuários para que eles possam fazer login com a senha anterior. Quando você define um usuário como `CONFIRMED`, ele não precisa fazer nada além para fazer login. Se você não definir esse atributo como `CONFIRMED`, ele será definido como `RESET_REQUIRED`.  
Um `finalUserStatus` do `RESET_REQUIRED` significa que o usuário deve alterar a senha imediatamente após a migração no login, e sua aplicação cliente deve processar o `PasswordResetRequiredException` durante o fluxo de autenticação.  
O Amazon Cognito não impõe a política de intensidade de senha que você configurou para o grupo de usuários durante a migração usando o acionador do Lambda. Se a senha não atender à respectiva política que você configurou, o Amazon Cognito ainda assim a aceitará para que ela possa continuar a migrar o usuário. Para impor a política de intensidade da senha e rejeitar senhas que não atendam à política, valide a intensidade da senha no seu código. Em seguida, se a senha não atender à política, finalUserStatus defina como`RESET_REQUIRED`.

**messageAction**  
Você pode definir esse parâmetro como `SUPPRESS` para se recusar a enviar a mensagem de boas-vindas que o Amazon Cognito geralmente envia Amazon novos usuários. Se sua função não retornar esse parâmetro, o Amazon Cognito enviará a mensagem de boas-vindas.

**desiredDeliveryMediums**  
Esse parâmetro pode ser definido como `EMAIL` para enviar a mensagem de boas-vindas por e-mail ou como `SMS` para enviar a mensagem de boas-vindas por SMS. Se sua função não retornar esse parâmetro, o Amazon Cognito enviará a mensagem de boas-vindas por SMS.

**forceAliasCreation**  
Se você definir esse parâmetro como `TRUE` e o número de telefone ou endereço de e-mail no UserAttributes parâmetro já existir como um alias com um usuário diferente, a chamada da API migrará o alias do usuário anterior para o usuário recém-criado. O usuário anterior não pode mais fazer login usando esse alias.  
Se você definir esse parâmetro como `FALSE` e o alias existir, o Amazon Cognito não migrará o usuário e retornará um erro para a aplicação cliente.  
Se você não retornar esse parâmetro, o Amazon Cognito assumirá que seu valor é “false”.

**enableSMSMFA**  
Defina esse parâmetro como `true` para exigir que o usuário migrado conclua a autenticação multifator (MFA) por mensagem de texto SMS para fazer login. Seu grupo de usuários deve ter a MFA habilitada. Os atributos do usuário nos parâmetros da solicitação devem incluir um número de telefone; do contrário, a migração desse usuário falhará.

## Exemplo: migrar um usuário com uma senha existente
<a name="aws-lambda-triggers-user-migration-example-1"></a>

Esse exemplo de função Lambda migra o usuário com uma senha existente e suprime a mensagem de boas-vindas do 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);
  }
};
```

------