

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

# Acionador do Lambda de pré-cadastro
<a name="user-pool-lambda-pre-sign-up"></a>

Você pode personalizar o processo de cadastro em grupos de usuários que têm opções por autoatendimento. Alguns usos comuns do acionador pre sign-up são: realizar análises e registros personalizados de novos usuários, aplicar padrões de segurança e governança ou vincular usuários de um IdP de terceiros a um [perfil de usuário consolidado](cognito-user-pools-identity-federation-consolidate-users.md). Você também pode ter usuários confiáveis que não precisam passar por [verificação e confirmação](signing-up-users-in-your-app.md).

Imediatamente antes de o Amazon Cognito concluir a criação de um novo usuário [local](cognito-terms.md#terms-localuser) ou [federado](cognito-terms.md#terms-federateduser), ele ativa a função do Lambda de pré-cadastro. O objeto `userAttributes` de solicitação enviado para essa função contém atributos fornecidos pelo cadastro do usuário local ou que foram mapeados com sucesso com base nos atributos do provedor para um usuário federado. Seu grupo de usuários invoca esse gatilho na inscrição por autoatendimento [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)ou no primeiro login com um [provedor de identidade](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-federated) confiável e na criação de usuários com. [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html) Como parte do processo de cadastro, você pode usar essa função para analisar o evento de login com a lógica personalizada e modificar ou negar o novo usuário.

**Topics**
+ [Parâmetros do acionador do Lambda de pré-cadastro](#cognito-user-pools-lambda-trigger-syntax-pre-signup)
+ [Exemplo de pré-cadastro: confirmação automática de usuários em um domínio registrado](#aws-lambda-triggers-pre-registration-example)
+ [Exemplo de pré-cadastro: confirmação e verificação automáticas de todos os usuários](#aws-lambda-triggers-pre-registration-example-2)
+ [Exemplo de pré-cadastro: negar cadastro se o nome de usuário tiver menos de cinco caracteres](#aws-lambda-triggers-pre-registration-example-3)

## Parâmetros do acionador do Lambda de pré-cadastro
<a name="cognito-user-pools-lambda-trigger-syntax-pre-signup"></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 ]

```
{
    "request": {
        "userAttributes": {
            "string": "string",
            . . .
        },
        "validationData": {
            "string": "string",
            . . .
         },
        "clientMetadata": {
            "string": "string",
            . . .
         }
    },

    "response": {
        "autoConfirmUser": "boolean",
        "autoVerifyPhone": "boolean",
        "autoVerifyEmail": "boolean"
    }
}
```

------

### Parâmetros de solicitação de pré-cadastro
<a name="cognito-user-pools-lambda-trigger-syntax-pre-signup-request"></a>

**userAttributes**  
Um ou mais pares de nome-valor que representam atributos de usuário. Os nomes de atributo são as chaves.

**validationData**  
Um ou mais pares de chave-valor com dados de atributos do usuário que a aplicação passou para o Amazon Cognito na solicitação para criar um usuário. Envie essas informações para sua função Lambda no ValidationData parâmetro da sua solicitação [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html)ou da [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)API.  
O Amazon Cognito não define seus ValidationData dados como atributos do usuário que você cria. ValidationData são informações temporárias do usuário que você fornece para fins de seu gatilho Lambda de pré-inscrição.

**clientMetadata**  
Um ou mais pares de chave-valor que você pode fornecer como entrada personalizada para a função Lambda especificada para o acionamento de pré-cadastro. Você pode passar esses dados para sua função Lambda usando o ClientMetadata parâmetro nas seguintes ações de API: [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html), [AdminRespondToAuthChallenge[ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html), e. [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)

### Parâmetros de resposta de pré-cadastro
<a name="cognito-user-pools-lambda-trigger-syntax-pre-signup-response"></a>

Na resposta, você pode definir `autoConfirmUser` para `true` se quiser confirmar o usuário automaticamente. Você pode definir `autoVerifyEmail` como `true` para verificar o e-mail do usuário automaticamente. Você pode definir `autoVerifyPhone` como `true` para verificar automaticamente o número de telefone do usuário.

**nota**  
Os parâmetros de resposta `autoVerifyPhone`, `autoVerifyEmail` e `autoConfirmUser` são ignorados pelo Amazon Cognito quando a função do Lambda de pré-inscrição é acionada pela API `AdminCreateUser`.

**autoConfirmUser**  
Definido como `true` para confirmar o usuário automaticamente; do contrário, defina-o como `false`.

**autoVerifyEmail**  
Defina como `true` para especificar como verificado o e-mail de um usuário que está se cadastrando ou, do contrário, defina como `false`. Se `autoVerifyEmail` for definido como `true`, o atributo `email` deverá ter um valor válido, não nulo. Caso contrário, ocorrerá um erro e o usuário não poderá concluir o cadastro.  
Se o atributo `email` for selecionado como um alias, será criado um alias para o e-mail do usuário quando `autoVerifyEmail` for definido. Se já houver um alias com esse endereço de e-mail, ele será movido para o novo usuário e o endereço de e-mail do usuário anterior será marcado como não verificado. Para obter mais informações, consulte [Personalização dos atributos de login](user-pool-settings-attributes.md#user-pool-settings-aliases).

**autoVerifyPhone**  
Defina como `true` para definir como verificado o número de telefone de um usuário que está se cadastrando; do contrário, defina-o como `false`. Se `autoVerifyPhone` for definido como `true`, o atributo `phone_number` deverá ter um valor válido, não nulo. Caso contrário, ocorrerá um erro e o usuário não poderá concluir o cadastro.  
Se o atributo `phone_number` for selecionado como um alias, este será criado para o número de telefone do usuário quando `autoVerifyPhone` for definido. Se um alias com esse número de telefone já existir, o alias será movido para o novo usuário e o número de telefone do usuário anterior será marcado como não verificado. Para obter mais informações, consulte [Personalização dos atributos de login](user-pool-settings-attributes.md#user-pool-settings-aliases).

## Exemplo de pré-cadastro: confirmação automática de usuários em um domínio registrado
<a name="aws-lambda-triggers-pre-registration-example"></a>

Este é um exemplo de código de acionador do Lambda. O acionador de pré-inscrição é invocado imediatamente antes que o Amazon Cognito processe a solicitação de inscrição. Ele usa um atributo personalizado **custom:domain** para confirmar automaticamente novos usuários de um determinado domínio de e-mail. Os novos usuários que não estiverem no domínio personalizado serão adicionados ao seu grupo de usuários, mas não automaticamente confirmados.

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

```
export const handler = async (event, context, callback) => {
  // Set the user pool autoConfirmUser flag after validating the email domain
  event.response.autoConfirmUser = false;

  // Split the email address so we can compare domains
  var address = event.request.userAttributes.email.split("@");

  // This example uses a custom attribute "custom:domain"
  if (event.request.userAttributes.hasOwnProperty("custom:domain")) {
    if (event.request.userAttributes["custom:domain"] === address[1]) {
      event.response.autoConfirmUser = true;
    }
  }

  // Return to Amazon Cognito
  callback(null, event);
};
```

------
#### [ Python ]

```
def lambda_handler(event, context):
    # It sets the user pool autoConfirmUser flag after validating the email domain
    event['response']['autoConfirmUser'] = False

    # Split the email address so we can compare domains
    address = event['request']['userAttributes']['email'].split('@')

    # This example uses a custom attribute 'custom:domain'
    if 'custom:domain' in event['request']['userAttributes']:
        if event['request']['userAttributes']['custom:domain'] == address[1]:
            event['response']['autoConfirmUser'] = True

    # Return to Amazon Cognito
    return event
```

------

O Amazon Cognito transmite informações de evento para a função Lambda. A função retorna o mesmo objeto de evento para o Amazon Cognito, com as alterações na resposta. No console do Lambda, você pode configurar um evento de teste com dados relevantes para o acionador do Lambda. A seguir, é mostrado um evento de teste para esse exemplo de código:

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

```
{
    "request": {
        "userAttributes": {
            "email": "testuser@example.com",
            "custom:domain": "example.com"
        }
    },
    "response": {}
}
```

------

## Exemplo de pré-cadastro: confirmação e verificação automáticas de todos os usuários
<a name="aws-lambda-triggers-pre-registration-example-2"></a>

Este exemplo confirma todos os usuários e define os atributos `email` e `phone_number` do usuário como verificados, se o atributo estiver presente. Além disso, se o alias estiver habilitado, eles serão criados para `phone_number` e `email` quando a verificação automática for definida. 

**nota**  
Se um alias com o mesmo número de telefone já existir, o alias será movido para o novo usuário e o `phone_number` do usuário anterior será marcado como não verificado. O mesmo se aplica para endereços de e-mail. Para evitar que isso aconteça, você pode usar a [ListUsers API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html) de grupos de usuários para ver se há um usuário existente que já está usando o número de telefone ou endereço de e-mail do novo usuário como alias.

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

```
exports.handler = (event, context, callback) => {
  // Confirm the user
  event.response.autoConfirmUser = true;

  // Set the email as verified if it is in the request
  if (event.request.userAttributes.hasOwnProperty("email")) {
    event.response.autoVerifyEmail = true;
  }

  // Set the phone number as verified if it is in the request
  if (event.request.userAttributes.hasOwnProperty("phone_number")) {
    event.response.autoVerifyPhone = true;
  }

  // Return to Amazon Cognito
  callback(null, event);
};
```

------
#### [ Python ]

```
def lambda_handler(event, context):
    # Confirm the user
    event['response']['autoConfirmUser'] = True

    # Set the email as verified if it is in the request
    if 'email' in event['request']['userAttributes']:
        event['response']['autoVerifyEmail'] = True

    # Set the phone number as verified if it is in the request
    if 'phone_number' in event['request']['userAttributes']:
        event['response']['autoVerifyPhone'] = True

    # Return to Amazon Cognito
    return event
```

------

O Amazon Cognito transmite informações de evento para a função do Lambda. A função retorna o mesmo objeto de evento para o Amazon Cognito, com as alterações na resposta. No console do Lambda, você pode configurar um evento de teste com dados relevantes para o acionador do Lambda. A seguir, é mostrado um evento de teste para esse exemplo de código:

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

```
{
  "request": {
    "userAttributes": {
      "email": "user@example.com",
      "phone_number": "+12065550100"
    }
  },
  "response": {}
}
```

------

## Exemplo de pré-cadastro: negar cadastro se o nome de usuário tiver menos de cinco caracteres
<a name="aws-lambda-triggers-pre-registration-example-3"></a>

Esse exemplo verifica a extensão do nome de usuário em uma solicitação de cadastro. O exemplo retornará um erro se o usuário tiver inserido um nome com menos de cinco caracteres.

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

```
export const handler = (event, context, callback) => {
    // Impose a condition that the minimum length of the username is 5 is imposed on all user pools.
    if (event.userName.length < 5) {
        var error = new Error("Cannot register users with username less than the minimum length of 5");
        // Return error to Amazon Cognito
        callback(error, event);
    }
    // Return to Amazon Cognito
    callback(null, event);
};
```

------
#### [ Python ]

```
def lambda_handler(event, context):
    if len(event['userName']) < 5:
        raise Exception("Cannot register users with username less than the minimum length of 5")
    # Return to Amazon Cognito
    return event
```

------

O Amazon Cognito transmite informações de evento para a função do Lambda. A função retorna o mesmo objeto de evento para o Amazon Cognito, com as alterações na resposta. No console do Lambda, você pode configurar um evento de teste com dados relevantes para o acionador do Lambda. A seguir, é mostrado um evento de teste para esse exemplo de código:

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

```
{
  "userName": "rroe",
  "response": {}
}
```

------