

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

# Como personalizar fluxos de trabalho do grupo de usuários com acionadores do Lambda
<a name="cognito-user-pools-working-with-lambda-triggers"></a>

O Amazon Cognito trabalha com AWS Lambda funções para modificar o comportamento de autenticação do seu grupo de usuários. É possível configurar o grupo de usuários para invocar automaticamente as funções do Lambda antes da primeira inscrição, após a conclusão da autenticação e em vários estágios intermediários. Suas funções podem modificar o comportamento padrão do seu fluxo de autenticação, fazer solicitações de API para modificar seu grupo de usuários ou outros AWS recursos e se comunicar com sistemas externos. O código nas funções do Lambda é seu. O Amazon Cognito envia dados de eventos para a função, espera que a função processe os dados e, na maioria dos casos, antecipa um evento de resposta que reflete as alterações que você deseja fazer na sessão.

No sistema de eventos de solicitação e resposta, você pode apresentar seus próprios desafios de autenticação, migrar usuários entre seu grupo de usuários e outro repositório de identidades, personalizar mensagens e modificar tokens web JSON ()JWTs.

Os gatilhos do Lambda podem personalizar a resposta que o Amazon Cognito fornece ao usuário depois que ele inicia uma ação em seu grupo de usuários. Por exemplo, é possível impedir o login de um usuário que, de outra forma, seria bem-sucedido. Eles também podem realizar operações de tempo de execução em seu AWS ambiente externo APIs, bancos de dados ou repositórios de identidade. O gatilho de migração de usuário, por exemplo, pode combinar uma ação externa com uma alteração no Amazon Cognito: você pode pesquisar informações do usuário em um diretório externo e definir atributos em um novo usuário com base nessas informações externas.

Quando você tem um gatilho do Lambda atribuído ao seu grupo de usuários, o Amazon Cognito interrompe seu fluxo padrão para solicitar informações de sua função. O Amazon Cognito gera um *evento* JSON e o transmite para sua função. O evento contém informações sobre a solicitação do usuário para criar uma conta de usuário, fazer login, redefinir uma senha ou atualizar um atributo. Sua função então tem a oportunidade de agir ou enviar o evento de volta sem modificações. Um evento retornado sem modificação notifica seu grupo de usuários para continuar com a ação padrão do evento. Por exemplo, seu acionador de pré-inscrição pode confirmar automaticamente os usuários para a origem do acionador `PreSignUp_SignUp`, mas retornar o evento inalterado para usuários externos e criados pelo administrador.

A tabela a seguir resume algumas das maneiras pelas quais os acionadores do Lambda são usados para personalizar operações do grupo de usuários:


****  


- ** **Fluxo de autenticação personalizado** **
  - **Operation:** Definir o desafio de autenticação / **Description:** Determina o próximo desafio em um fluxo de autenticação personalizado
  - **Operation:** Criar desafio de autenticação / **Description:** Cria um desafio em um fluxo de autenticação personalizado
  - **Operation:** Verificar a resposta do desafio de autenticação / **Description:** Determina se uma resposta está correta em um fluxo de autenticação personalizado

- ****Eventos de autenticação****
  - **Operation:** [Acionador do Lambda de pré-autenticação](user-pool-lambda-pre-authentication.md) / **Description:** Validação personalizada para aceitar ou negar a solicitação de login
  - **Operation:** [Acionador do Lambda de pós-autenticação](user-pool-lambda-post-authentication.md) / **Description:** Registra eventos para análise personalizada
  - **Operation:** [Acionador do Lambda antes da geração do token](user-pool-lambda-pre-token-generation.md) / **Description:** Aumenta ou suprime solicitações de token

- ****Federação****
  - **Operation:** [Acionador Lambda de federação de entrada](user-pool-lambda-inbound-federation.md)
  - **Description:** Transforma os atributos do usuário federado antes da criação ou atualização do usuário nos grupos de usuários do Amazon Cognito

- ****Cadastrar-se****
  - **Operation:** [Acionador do Lambda de pré-cadastro](user-pool-lambda-pre-sign-up.md) / **Description:** Executa uma validação personalizada que aceita ou nega a solicitação de cadastro
  - **Operation:** [Acionador do Lambda de pós-confirmação](user-pool-lambda-post-confirmation.md) / **Description:** Adiciona mensagens de boas-vindas personalizadas ou registro de eventos para análise personalizada
  - **Operation:** [Migrar o acionador do Lambda do usuário](user-pool-lambda-migrate-user.md) / **Description:** Migra um usuário de um diretório de usuário existente para grupos de usuários

- ****Mensagens****
  - **Operation:** [Acionador do Lambda de mensagem personalizada](user-pool-lambda-custom-message.md)
  - **Description:** Realiza personalização avançada e localização de mensagens

- ****Criação de token****
  - **Operation:** [Acionador do Lambda antes da geração do token](user-pool-lambda-pre-token-generation.md)
  - **Description:** Adiciona ou remove atributos em tokens de ID e acesso

- ****Provedores de terceiros de e-mail e SMS****
  - **Operation:** [Acionadores do Lambda remetente personalizado](user-pool-lambda-custom-sender-triggers.md)
  - **Description:** Usa um provedor de terceiros para enviar mensagens de e-mail e SMS



**Topics**
+ [O que é importante saber sobre acionadores do Lambda](#important-lambda-considerations)
+ [Adicionar um acionador do Lambda do grupo de usuários](#triggers-working-with-lambda)
+ [Evento de acionador do Lambda do grupo de usuários](#cognito-user-pools-lambda-trigger-event-parameter-shared)
+ [Parâmetros comuns do acionador do Lambda do grupo de usuários](#cognito-user-pools-lambda-trigger-syntax-shared)
+ [Metadados do cliente](#working-with-lambda-trigger-client-metadata)
+ [Conectar operações de API a gatilhos do Lambda](#lambda-triggers-by-event)
+ [Conectar gatilhos do Lambda às operações funcionais do grupo de usuários](#working-with-lambda-trigger-sources)
+ [Acionador do Lambda de pré-cadastro](user-pool-lambda-pre-sign-up.md)
+ [Acionador do Lambda de pós-confirmação](user-pool-lambda-post-confirmation.md)
+ [Acionador do Lambda de pré-autenticação](user-pool-lambda-pre-authentication.md)
+ [Acionador do Lambda de pós-autenticação](user-pool-lambda-post-authentication.md)
+ [Acionador Lambda de federação de entrada](user-pool-lambda-inbound-federation.md)
+ [Acionadores do Lambda de desafio personalizado de autenticação](user-pool-lambda-challenge.md)
+ [Acionador do Lambda antes da geração do token](user-pool-lambda-pre-token-generation.md)
+ [Migrar o acionador do Lambda do usuário](user-pool-lambda-migrate-user.md)
+ [Acionador do Lambda de mensagem personalizada](user-pool-lambda-custom-message.md)
+ [Acionadores do Lambda remetente personalizado](user-pool-lambda-custom-sender-triggers.md)

## O que é importante saber sobre acionadores do Lambda
<a name="important-lambda-considerations"></a>

Ao preparar os grupos de usuários para as funções do Lambda, considere o seguinte:
+ Os eventos que o Amazon Cognito envia aos gatilhos do Lambda podem mudar com novos atributos. As posições dos elementos de resposta e solicitação na hierarquia JSON podem mudar ou os nomes dos elementos podem ser adicionados. Na função do Lambda, é possível esperar receber os pares de chave-valor do elemento de entrada descritos neste guia, mas uma validação de entrada mais rigorosa pode fazer com que as funções falhem.
+ É possível selecionar uma das várias versões dos eventos que o Amazon Cognito envia a alguns gatilhos. Algumas versões podem exigir que você aceite uma alteração nos preços do Amazon Cognito. Para obter mais informações sobre a definição de preços, consulte [Preço do Amazon Cognito](https://aws.amazon.com/cognito/pricing/). Para personalizar os tokens de acesso em um [Acionador do Lambda antes da geração do token](user-pool-lambda-pre-token-generation.md), é necessário configurar o grupo de usuários com um plano de recursos que não seja o *Lite* e atualizar a configuração do acionador do Lambda para usar a versão 2 do evento.
+ Exceto [Acionadores do Lambda remetente personalizado](user-pool-lambda-custom-sender-triggers.md), o Amazon Cognito invoca funções do Lambda de forma síncrona. Quando o Amazon Cognito chama sua função do Lambda, ela deve responder em até cinco segundos. Se isso não acontecer e se a chamada puder ser repetida, o Amazon Cognito poderá repetir a chamada. Se todas as tentativas de repetição falharem, a função expirará. Não é possível alterar esse valor de tempo limite de cinco segundos. Para obter mais informações, consulte o [modelo de programação Lambda](https://docs.aws.amazon.com/lambda/latest/dg/foundation-progmodel.html) no Guia do AWS Lambda desenvolvedor.

  O Amazon Cognito não repete chamadas de função que retornam um [erro de invocação](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html#API_Invoke_Errors) com um código de status HTTP de 500 a 599. Esses códigos indicam um problema de configuração que faz com que o Lambda não consiga iniciar a função. Para obter mais informações, consulte [Tratamento de erros e novas tentativas automáticas em AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/invocation-retries.html).
+ Você não pode declarar uma versão da função na configuração do acionador do Lambda. Os grupos de usuários do Amazon Cognito invocam a versão mais recente da função por padrão. No entanto, você pode associar uma versão da função a um alias e definir seu gatilho `LambdaArn` para o alias ARN em uma solicitação de API ou de uma [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)solicitação de API. [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html) Essa opção não está disponível no Console de gerenciamento da AWS. Para obter mais informações sobre aliases, consulte [Aliases de função do Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) no *Guia do desenvolvedor do AWS Lambda *.
+ Se você excluir um acionador do Lambda, deverá atualizar o acionador correspondente no grupo de usuários. Por exemplo, se excluir o acionador pós-autenticação, você deverá definir o acionador **Post authentication ** (Pós-autenticação) no grupo de usuários correspondente como **none** (nenhum). 
+ Se a função do Lambda não retornar os parâmetros de solicitação e resposta para o Amazon Cognito ou retornar um erro, o evento de autenticação não será bem-sucedido. Você pode retornar um erro na função para impedir a inscrição, a autenticação, a geração de tokens ou qualquer outro estágio do fluxo de autenticação de um usuário que invoque o acionador do Lambda.

  O login gerenciado retorna erros que os acionadores do Lambda geram como texto de erro acima da solicitação de login. A API de grupos de usuários do Amazon Cognito retorna erros do acionador no formato `{{[trigger]}} failed with error {{[error text from response]}}`. Como prática recomendada, gerem apenas erros nas funções do Lambda que você deseja que seus usuários vejam. Use métodos de saída, como `print()` registrar qualquer informação confidencial ou de depuração no Logs. CloudWatch Para ver um exemplo, consulte [Exemplo de pré-cadastro: negar cadastro se o nome de usuário tiver menos de cinco caracteres](user-pool-lambda-pre-sign-up.md#aws-lambda-triggers-pre-registration-example-3).
+ Você pode adicionar uma função Lambda em outra Conta da AWS como acionador para seu grupo de usuários. Você deve adicionar gatilhos entre contas com as operações da [UpdateUserPool](https://docs.aws.amazon.com/)API [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)e, ou seus equivalentes em e a. CloudFormation AWS CLI Você não pode adicionar funções de várias contas no Console de gerenciamento da AWS.
+ Quando você inclui um acionador do Lambda no console do Amazon Cognito, o Amazon Cognito adiciona uma política baseada em recursos à sua função que permita que o grupo de usuários a invoque. Quando você cria um acionador do Lambda fora do console do Amazon Cognito, é necessário adicionar permissões à função do Lambda. Suas permissões adicionadas devem permitir que o Amazon Cognito invoque a função em nome do grupo de usuários. Você pode [adicionar permissões do Lambda Console ou usar a operação da](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html) API [AddPermission](https://docs.aws.amazon.com/lambda/latest/dg/API_AddPermission.html)Lambda.

**Exemplo de política baseada em recursos do Lambda**  
O seguinte exemplo de política baseada em recursos do Lambda concede ao Amazon Cognito uma capacidade limitada de invocar uma função do Lambda. O Amazon Cognito só pode invocar a função quando o fizer em nome do grupo de usuários na condição `aws:SourceArn` e da conta na condição `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}}"
                  }
              }
          }
      ]
  }
  ```

------

## Adicionar um acionador do Lambda do grupo de usuários
<a name="triggers-working-with-lambda"></a>

**Para adicionar um acionador do Lambda do grupo de usuários com o console**

1. Use o [console do Lambda](https://console.aws.amazon.com/lambda/home) para criar uma função do Lambda. Para obter mais informações, sobre funções Lambda, consulte o [Guia do desenvolvedor do AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/).

1. Acesse o [console do Amazon Cognito](https://console.aws.amazon.com/cognito/home) e escolha **User Pools** (Grupos de usuários).

1. Escolha um grupo de usuários existente na lista ou [crie um grupo de usuários](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. Selecione o menu **Extensões** e localize os **Acionadores do Lambda**.

1. Selecione **Add a Lambda trigger** (Adicionar um acionador do Lambda).

1. Selecione uma **Category** (Categoria) de acionador do Lambda com base no estágio de autenticação que deseja personalizar.

1. Selecione **Atribuir função Lambda** e selecione uma função no mesmo grupo Região da AWS de usuários.
**nota**  
Se suas credenciais AWS Identity and Access Management (IAM) tiverem permissão para atualizar a função Lambda, o Amazon Cognito adicionará uma política baseada em recursos do Lambda. Com essa política, o Amazon Cognito pode invocar a função selecionada. Se as credenciais conectadas não tiverem permissões suficientes do IAM, você deverá atualizar a política baseada em recursos separadamente. Para obter mais informações, consulte [O que é importante saber sobre acionadores do Lambda](#important-lambda-considerations).

1. Escolha **Salvar alterações**.

1. Você pode usar CloudWatch no console Lambda para registrar sua função do Lambda. Para obter mais informações, consulte [Acessando CloudWatch registros para Lambda](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions-logs.html).

## Evento de acionador do Lambda do grupo de usuários
<a name="cognito-user-pools-lambda-trigger-event-parameter-shared"></a>

O Amazon Cognito transmite informações de evento para a função do Lambda. A função do Lambda retorna o mesmo objeto de evento para o Amazon Cognito, com as alterações na resposta. Se a sua função retornar o evento de entrada sem modificação, o Amazon Cognito continuará com o comportamento padrão. Veja a seguir os parâmetros comuns a todos os eventos de entrada do acionador do Lambda. Para obter a sintaxe de eventos específica do acionador, revise o esquema de eventos na seção deste guia para cada acionador.

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

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

------

## Parâmetros comuns do acionador do Lambda do grupo de usuários
<a name="cognito-user-pools-lambda-trigger-syntax-shared"></a>

**versionamento**  
O número da versão da função do Lambda.

**triggerSource**  
O nome do evento que acionou a função do Lambda. Para uma descrição de cada triggerSource, consulte [Conectar gatilhos do Lambda às operações funcionais do grupo de usuários](#working-with-lambda-trigger-sources).

**region**  
O Região da AWS como uma `AWSRegion` instância.

**userPoolId**  
O ID do grupo de usuários.

**userName**  
O nome do usuário atual.

**callerContext**  
Metadados sobre a solicitação e o ambiente de código. Ele contém os campos **awsSdkVersion**e o **ClientID.**    
**awsSdkVersion**  
A versão do AWS SDK que gerou a solicitação.  
****clientId****  
O ID do cliente da aplicação do grupo de usuários.

**request**  
Detalhes da solicitação de API do usuário. Ele inclui os seguintes campos e quaisquer parâmetros de solicitação específicos do gatilho. Por exemplo, um evento que o Amazon Cognito envia a um acionador de pré-autenticação também conterá um parâmetro `userNotFound`. Você pode processar o valor desse parâmetro para realizar uma ação personalizada quando o usuário tentar fazer login com um nome de usuário não registrado.    
**userAttributes**  
Um ou mais pares de chave-valor de nomes e valores de atributos, por exemplo, `"email": "john@example.com"`.

**resposta**  
Esse parâmetro não contém nenhuma informação na solicitação original. Sua função do Lambda deve retornar todo o evento ao Amazon Cognito e adicionar quaisquer parâmetros de retorno à `response`. Para ver quais parâmetros de retorno sua função pode incluir, consulte a documentação do gatilho que você deseja usar.

## Metadados do cliente
<a name="working-with-lambda-trigger-client-metadata"></a>

Você pode enviar parâmetros personalizados para suas funções de acionador do Lambda em operações de API e solicitações de [Endpoint de token](token-endpoint.md). Com os metadados do cliente, sua aplicação pode coletar informações adicionais sobre o ambiente em que as solicitações se originam. Quando você transmite metadados do cliente para suas funções do Lambda, elas podem processar os dados adicionais e usá-los nos logs ou na personalização dos fluxos de autenticação. Os metadados do cliente são pares de strings de sua escolha e design em um formato de valor-chave JSON.

**Exemplos de casos de uso de metadados do cliente**
+ Transmita dados de geolocalização no momento da inscrição para o [acionador de pré-inscrição](user-pool-lambda-pre-sign-up.md) e evite o login de locais indesejados.
+ Transmita dados de identificação do locatário para [acionadores de desafios personalizados](user-pool-lambda-challenge.md) e emita desafios diferentes para clientes de diferentes unidades de negócios.
+ Transmita o token de um usuário para o [acionador de pré-geração de tokens](user-pool-lambda-pre-token-generation.md) e gere um log da entidade principal em nome da qual foi feita uma solicitação M2M. Para ver um exemplo de solicitação, consulte [Credenciais do cliente com autorização básicaCredenciais do cliente com autorização do corpo POST](token-endpoint.md#exchanging-client-credentials-for-an-access-token-in-request-body).

Este é um exemplo de transmissão de metadados do cliente para o acionador de pré-inscrição.

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

Veja a seguir um exemplo de [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html#CognitoUserPools-SignUp-request-ValidationData)solicitação com metadados do cliente que o Amazon Cognito passa para um gatilho de pré-inscrição.

```
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 ]

A solicitação resulta no corpo de solicitação a seguir para sua função de pré-cadastro.

```
{
    "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"
}
```

------

**Metadados do cliente para credenciais do cliente machine-to-machine (M2M)**  
Você pode transmitir [metadados do cliente](#working-with-lambda-trigger-client-metadata) em solicitações de M2M. Os metadados do cliente são informações adicionais de um usuário ou ambiente de aplicação que podem contribuir para os resultados de um [Acionador do Lambda antes da geração do token](user-pool-lambda-pre-token-generation.md). Nas operações de autenticação com um usuário principal, você pode passar os metadados do cliente para o gatilho de pré-geração do token no corpo das solicitações [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)de [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)API. Como as aplicações conduzem o fluxo de geração de tokens de acesso para M2M com solicitações diretas ao [Endpoint de token](token-endpoint.md), elas têm um modelo diferente. No corpo POST das solicitações de token para credenciais do cliente, transmita um parâmetro `aws_client_metadata` com o objeto de metadados do cliente codificado em URL (`x-www-form-urlencoded`) para string. Para ver um exemplo de solicitação, consulte [Credenciais do cliente com autorização básicaCredenciais do cliente com autorização do corpo POST](token-endpoint.md#exchanging-client-credentials-for-an-access-token-in-request-body). Veja a seguir um exemplo de parâmetro que transmite os pares de chave-valor `{"environment": "dev", "language": "en-US"}`.

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

**Atributos temporários do usuário: `validationData`**  
Algumas operações de autenticação também têm um parâmetro `validationData`. Assim como os metadados do cliente, essa é uma oportunidade de transmitir informações externas que o Amazon Cognito não coleta automaticamente para os acionadores do Lambda. O campo de dados de validação tem como objetivo fornecer à sua função Lambda um contexto de usuário adicional nas operações de inscrição e login. [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)passe `validationData` para o [gatilho de pré-inscrição](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)passe `ClientMetadata` o corpo da solicitação da API como `validationData` no evento de entrada para os gatilhos do [usuário de [pré-autenticação](user-pool-lambda-pre-authentication.md) e migração](user-pool-lambda-migrate-user.md).

Para mapear as operações da API para as funções para as quais elas podem transmitir metadados do cliente, consulte as seções de origem do acionador a seguir.

## Conectar operações de API a gatilhos do Lambda
<a name="lambda-triggers-by-event"></a>

As seções a seguir descrevem os gatilhos do Lambda que o Amazon Cognito invoca a partir da atividade em seu grupo de usuários.

Quando a aplicação conecta usuários pela API de grupos de usuários do Amazon Cognito, do login gerenciado ou de endpoints de grupo de usuários, o Amazon Cognito invoca suas funções do Lambda com base no contexto da sessão. Para ter mais informações sobre a API de grupos de usuários do Amazon Cognito e endpoints de grupo de usuários, consulte [Noções básicas sobre a autenticação de API, OIDC e páginas de login gerenciado](authentication-flows-public-server-side.md#user-pools-API-operations). As tabelas nas seções a seguir descrevem eventos que fazem com que o Amazon Cognito invoque uma função e a string `triggerSource` que o Amazon Cognito inclui na solicitação.

**Topics**
+ [Gatilhos do Lambda na API do Amazon Cognito](#lambda-triggers-native-users-native-api)
+ [Acionadores do Lambda para usuários locais do Amazon Cognito no login gerenciado](#lambda-triggers-native-users-hosted-UI)
+ [Acionadores do Lambda para usuários federados](#lambda-triggers-for-federated-users)

### Gatilhos do Lambda na API do Amazon Cognito
<a name="lambda-triggers-native-users-native-api"></a>

A tabela a seguir descreve as strings de origem dos acionadores do Lambda que o Amazon Cognito pode invocar quando a aplicação cria, faz login ou atualiza um usuário local.


**Fontes locais de gatilho de usuário na API do Amazon Cognito**  


- ** [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html) **
  - **Gatilho do Lambda:** Pré-cadastro / **Fonte de gatilhos:**  `PreSignUp_AdminCreateUser` 
  - **Gatilho do Lambda:** Pré-geração de tokens / **Fonte de gatilhos:**  `TokenGeneration_NewPasswordChallenge` 
  - **Gatilho do Lambda:** Mensagem personalizada / **Fonte de gatilhos:**  `CustomMessage_AdminCreateUser` 
  - **Gatilho do Lambda:** Remetente de e-mail personalizado / **Fonte de gatilhos:**  `CustomEmailSender_AdminCreateUser` 
  - **Gatilho do Lambda:** Remetente de SMS personalizado / **Fonte de gatilhos:**  `CustomSMSSender_AdminCreateUser` 

- ** [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html) **
  - **Gatilho do Lambda:** Pré-cadastro / **Fonte de gatilhos:**  `PreSignUp_SignUp` 
  - **Gatilho do Lambda:** Mensagem personalizada / **Fonte de gatilhos:**  `CustomMessage_SignUp` 
  - **Gatilho do Lambda:** Remetente de e-mail personalizado / **Fonte de gatilhos:**  `CustomEmailSender_SignUp` 
  - **Gatilho do Lambda:** Remetente de SMS personalizado / **Fonte de gatilhos:**  `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) **
  - **Gatilho do Lambda:** Confirmação do post
  - **Fonte de gatilhos:**  `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) **
  - **Gatilho do Lambda:** Pré-autenticação / **Fonte de gatilhos:**  `PreAuthentication_Authentication` 
  - **Gatilho do Lambda:** Pós-autenticação / **Fonte de gatilhos:**  `PostAuthentication_Authentication` 
  - **Gatilho do Lambda:** Definir o desafio de autenticação / **Fonte de gatilhos:**  `DefineAuthChallenge_Authentication` 
  - **Gatilho do Lambda:** Criar desafio de autenticação / **Fonte de gatilhos:**  `CreateAuthChallenge_Authentication` 
  - **Gatilho do Lambda:** Verificar desafio de autenticação / **Fonte de gatilhos:**  `VerifyAuthChallenge_Authentication` 
  - **Gatilho do Lambda:** Pré-geração de tokens / **Fonte de gatilhos:**  `TokenGeneration_Authentication` `TokenGeneration_AuthenticateDevice` `TokenGeneration_RefreshTokens` 
  - **Gatilho do Lambda:** Migrar usuário / **Fonte de gatilhos:**  `UserMigration_Authentication` 
  - **Gatilho do Lambda:** Mensagem personalizada / **Fonte de gatilhos:**  `CustomMessage_Authentication` 
  - **Gatilho do Lambda:** Remetente de e-mail personalizado / **Fonte de gatilhos:**  `CustomEmailSender_AccountTakeOverNotification` `CustomEmailSender_Authentication` 
  - **Gatilho do Lambda:** Remetente de SMS personalizado / **Fonte de gatilhos:**  `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) **
  - **Gatilho do Lambda:** Pós-autenticação / **Fonte de gatilhos:**  `PostAuthentication_Authentication` 
  - **Gatilho do Lambda:** Definir o desafio de autenticação / **Fonte de gatilhos:**  `DefineAuthChallenge_Authentication` 
  - **Gatilho do Lambda:** Criar desafio de autenticação / **Fonte de gatilhos:**  `CreateAuthChallenge_Authentication` 
  - **Gatilho do Lambda:** Verificar desafio de autenticação / **Fonte de gatilhos:**  `VerifyAuthChallenge_Authentication` 
  - **Gatilho do Lambda:** Pré-geração de tokens / **Fonte de gatilhos:**  `TokenGeneration_Authentication` `TokenGeneration_AuthenticateDevice` `TokenGeneration_RefreshTokens` 
  - **Gatilho do Lambda:** Mensagem personalizada / **Fonte de gatilhos:**  `CustomMessage_Authentication` 
  - **Gatilho do Lambda:** Remetente de e-mail personalizado / **Fonte de gatilhos:**  `CustomEmailSender_AccountTakeOverNotification` `CustomEmailSender_Authentication` 
  - **Gatilho do Lambda:** Remetente de SMS personalizado / **Fonte de gatilhos:**  `CustomSMSSender_Authentication` 

- ** [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html) **
  - **Gatilho do Lambda:** Migrar usuário / **Fonte de gatilhos:**  `UserMigration_ForgotPassword` 
  - **Gatilho do Lambda:** Mensagem personalizada / **Fonte de gatilhos:**  `CustomMessage_ForgotPassword` 
  - **Gatilho do Lambda:** Remetente de e-mail personalizado / **Fonte de gatilhos:**  `CustomEmailSender_ForgotPassword` 
  - **Gatilho do Lambda:** Remetente de SMS personalizado / **Fonte de gatilhos:**  `CustomSMSSender_ForgotPassword` 

- ** [ConfirmForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html) **
  - **Gatilho do Lambda:** Confirmação do post
  - **Fonte de gatilhos:**  `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) **
  - **Gatilho do Lambda:** Mensagem personalizada / **Fonte de gatilhos:**  `CustomMessage_UpdateUserAttribute` 
  - **Gatilho do Lambda:** Remetente de e-mail personalizado / **Fonte de gatilhos:**  `CustomEmailSender_UpdateUserAttribute` 
  - **Gatilho do Lambda:** Remetente de SMS personalizado / **Fonte de gatilhos:**  `CustomSMSSender_UpdateUserAttribute` 

- ** [VerifyUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttributes.html) **
  - **Gatilho do Lambda:** Mensagem personalizada / **Fonte de gatilhos:**  `CustomMessage_VerifyUserAttribute` 
  - **Gatilho do Lambda:** Remetente de e-mail personalizado / **Fonte de gatilhos:**  `CustomEmailSender_VerifyUserAttribute` 
  - **Gatilho do Lambda:** Remetente de SMS personalizado / **Fonte de gatilhos:**  `CustomSMSSender_VerifyUserAttribute` 

- ** [GetTokensFromRefreshToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetTokensFromRefreshToken.html) **
  - **Gatilho do Lambda:** Pré-geração de tokens
  - **Fonte de gatilhos:**  `TokenGeneration_Authentication` 



### Acionadores do Lambda para usuários locais do Amazon Cognito no login gerenciado
<a name="lambda-triggers-native-users-hosted-UI"></a>

A tabela a seguir descreve as strings de origem dos acionadores do Lambda que o Amazon Cognito pode invocar quando um usuário local faz login em seu grupo de usuários com o login gerenciado.


**Fontes locais de acionador de usuário no login gerenciado**  


- **`/signup`**
  - **Gatilho do Lambda:** Pré-cadastro / **Fonte de gatilhos:**  `PreSignUp_SignUp` 
  - **Gatilho do Lambda:** Mensagem personalizada / **Fonte de gatilhos:**  `CustomMessage_SignUp` 
  - **Gatilho do Lambda:** Remetente de e-mail personalizado / **Fonte de gatilhos:**  `CustomEmailSender_SignUp` 
  - **Gatilho do Lambda:** Remetente de SMS personalizado / **Fonte de gatilhos:**  `CustomSMSSender_SignUp` 

- **`/confirmuser`**
  - **Gatilho do Lambda:** Confirmação do post
  - **Fonte de gatilhos:**  `PostConfirmation_ConfirmSignUp` 

- **`/login`**
  - **Gatilho do Lambda:** Pré-autenticação / **Fonte de gatilhos:**  `PreAuthentication_Authentication` 
  - **Gatilho do Lambda:** Pré-geração de tokens / **Fonte de gatilhos:**  `TokenGeneration_Authentication` `TokenGeneration_AuthenticateDevice` `TokenGeneration_RefreshTokens` 
  - **Gatilho do Lambda:** Migrar usuário / **Fonte de gatilhos:**  `UserMigration_Authentication` 
  - **Gatilho do Lambda:** Mensagem personalizada / **Fonte de gatilhos:**  `CustomMessage_Authentication` 
  - **Gatilho do Lambda:** Remetente de e-mail personalizado / **Fonte de gatilhos:**  `CustomEmailSender_AccountTakeOverNotification` `CustomEmailSender_Authentication` 
  - **Gatilho do Lambda:** Remetente de SMS personalizado / **Fonte de gatilhos:**  `CustomSMSSender_Authentication` 

- **`/forgotpassword`**
  - **Gatilho do Lambda:** Migrar usuário / **Fonte de gatilhos:**  `UserMigration_ForgotPassword` 
  - **Gatilho do Lambda:** Mensagem personalizada / **Fonte de gatilhos:**  `CustomMessage_ForgotPassword` 
  - **Gatilho do Lambda:** Remetente de e-mail personalizado / **Fonte de gatilhos:**  `CustomEmailSender_ForgotPassword` 
  - **Gatilho do Lambda:** Remetente de SMS personalizado / **Fonte de gatilhos:**  `CustomSMSSender_ForgotPassword` 

- **`/confirmforgotpassword`**
  - **Gatilho do Lambda:** Confirmação do post
  - **Fonte de gatilhos:**  `PostConfirmation_ConfirmForgotPassword` 



### Acionadores do Lambda para usuários federados
<a name="lambda-triggers-for-federated-users"></a>

Você pode usar os seguintes acionadores do Lambda para personalizar seus fluxos de trabalho do grupo de usuários para usuários que fazem login com um provedor federado. 

**nota**  
Usuários federados podem usar o login gerenciado para fazer login, ou você pode gerar uma solicitação para o [Autorizar endpoint](authorization-endpoint.md) que os redireciona silenciosamente para a página de login do provedor de identidades. Não é possível fazer login de usuários federados com a API de grupos de usuários do Amazon Cognito.


**Fontes de acionador de usuário federado**  


- **Primeiro login**
  - **Gatilho do Lambda:** Pré-cadastro / **Fonte de gatilhos:**  `PreSignUp_ExternalProvider` 
  - **Gatilho do Lambda:** Confirmação do post / **Fonte de gatilhos:**  `PostConfirmation_ConfirmSignUp` 
  - **Gatilho do Lambda:** Pré-geração de tokens / **Fonte de gatilhos:**  `TokenGeneration_HostedAuth` 

- **Logins subsequentes**
  - **Gatilho do Lambda:** Pré-autenticação / **Fonte de gatilhos:**  `PreAuthentication_Authentication` 
  - **Gatilho do Lambda:** Pós-autenticação / **Fonte de gatilhos:**  `PostAuthentication_Authentication` 
  - **Gatilho do Lambda:** Pré-geração de tokens / **Fonte de gatilhos:**  `TokenGeneration_HostedAuth` 



O login federado não invoca nenhum [Acionadores do Lambda de desafio personalizado de autenticação](user-pool-lambda-challenge.md), [Migrar o acionador do Lambda do usuário](user-pool-lambda-migrate-user.md), [Acionador do Lambda de mensagem personalizada](user-pool-lambda-custom-message.md) ou [Acionadores do Lambda remetente personalizado](user-pool-lambda-custom-sender-triggers.md) no grupo de usuários.

## Conectar gatilhos do Lambda às operações funcionais do grupo de usuários
<a name="working-with-lambda-trigger-sources"></a>

Cada gatilho do Lambda tem uma função em seu grupo de usuários. Por exemplo, um gatilho pode modificar seu fluxo de inscrição ou adicionar um desafio de autenticação personalizado. O evento que o Amazon Cognito envia para uma função do Lambda pode refletir uma das várias ações que compõem essa função. Por exemplo, o Amazon Cognito invoca um gatilho de pré-inscrição quando o usuário se inscreve e quando você cria um usuário. Cada um desses casos diferentes para a mesma função tem seu próprio valor `triggerSource`. Sua função do Lambda pode processar eventos recebidos de forma diferente com base na operação que a invocou.

O Amazon Cognito também invoca todas as funções atribuídas quando um evento corresponde a uma fonte de gatilhos. Por exemplo, quando um usuário faz login em um grupo de usuários ao qual você atribuiu gatilhos de migração de usuário e pré-autenticação, ele ativa ambos.


**Acionadores de inscrição, confirmação e login (autenticação)**  

| Trigger | Valor de triggerSource | Event | 
| --- | --- | --- | 
| Pré-cadastro | PreSignUp\_SignUp | Pré-cadastro. | 
| Pré-cadastro | PreSignUp\_AdminCreateUser | Pré-cadastro quando um administrador cria um novo usuário. | 
| Pré-cadastro | PreSignUp\_ExternalProvider | Pré-cadastro para provedores de identidade externos. | 
| Confirmação do post | PostConfirmation\_ConfirmSignUp | Confirmação pós-cadastro. | 
| Confirmação do post | PostConfirmation\_ConfirmForgotPassword | Confirmação após esquecimento de senha. | 
| Pré-autenticação | PreAuthentication\_Authentication | Pré-autenticação. | 
| Pós-autenticação | PostAuthentication\_Authentication | Pós-autenticação. | 


**Acionadores de desafio de autenticação personalizado**  

| Trigger | Valor de triggerSource | Event | 
| --- | --- | --- | 
| Definir o desafio de autenticação | DefineAuthChallenge\_Authentication | Definir o desafio de autenticação. | 
| Criar desafio de autenticação | CreateAuthChallenge\_Authentication | Criar desafio de autenticação. | 
| Verificar desafio de autenticação | VerifyAuthChallengeResponse\_Authentication | Verificar a resposta do desafio de autenticação. | 


**Acionadores da federação**  

| Trigger | Valor de triggerSource | Event | 
| --- | --- | --- | 
| Federação receptiva | InboundFederation\_ExternalProvider | Federação receptiva. | 


**Acionadores de geração de pré-token**  

| Trigger | Valor de triggerSource | Event | 
| --- | --- | --- | 
| Pré-geração de tokens | TokenGeneration\_HostedAuth |  O Amazon Cognito autentica o usuário na página de login do login gerenciado. | 
| Pré-geração de tokens | TokenGeneration\_Authentication | Autenticação do usuário ou atualização do token concluída. | 
| Pré-geração de tokens | TokenGeneration\_NewPasswordChallenge | O administrador cria o usuário. O Amazon Cognito invoca isso quando o usuário precisa alterar uma senha temporária. | 
| Pré-geração de tokens | TokenGeneration\_AuthenticateDevice | Final da autenticação do dispositivo de um usuário. | 
| Pré-geração de tokens | TokenGeneration\_RefreshTokens | O usuário tenta atualizar a identidade e acessar tokens. | 


**Acionadores de migração do usuário**  

| Trigger | Valor de triggerSource | Event | 
| --- | --- | --- | 
| Migração do usuário | UserMigration\_Authentication | Migração de usuários no momento de fazer login. | 
| Migração do usuário | UserMigration\_ForgotPassword | Migração de usuários durante o fluxo de esquecimento de senha. | 


**Acionadores de mensagem personalizada**  

| Trigger | Valor de triggerSource | Event | 
| --- | --- | --- | 
| Mensagem personalizada | CustomMessage\_SignUp | Mensagem personalizada quando um usuário se cadastra no grupo de usuários. | 
| Mensagem personalizada | CustomMessage\_AdminCreateUser | Mensagem personalizada quando você cria um usuário como administrador e o Amazon Cognito envia uma senha temporária. | 
| Mensagem personalizada | CustomMessage\_ResendCode | Mensagem personalizada quando o usuário existente solicita um novo código de confirmação. | 
| Mensagem personalizada | CustomMessage\_ForgotPassword | Mensagem personalizada quando o usuário solicita uma redefinição de senha. | 
| Mensagem personalizada | CustomMessage\_UpdateUserAttribute | Mensagem personalizada quando um usuário altera o endereço de e-mail ou número de telefone e o Amazon Cognito envia ]um código de verificação. | 
| Mensagem personalizada | CustomMessage\_VerifyUserAttribute | Mensagem personalizada quando um usuário adiciona um endereço de e-mail ou um número de telefone e o Amazon Cognito envia um código de verificação. | 
| Mensagem personalizada | CustomMessage\_Authentication | Mensagem personalizada quando um usuário que configurou a MFA SMS faz login. | 


**Acionadores de remetente personalizados**  

| Trigger | Valor de triggerSource | Event | 
| --- | --- | --- | 
| Remetente personalizado |  `CustomEmailSender_SignUp` `CustomSmsSender_SignUp`  | Quando um usuário se cadastra no grupo de usuários. | 
| Remetente personalizado |  `CustomEmailSender_AdminCreateUser` `CustomSmsSender_AdminCreateUser`  | Quando você cria um usuário como administrador e o Amazon Cognito envia uma senha temporária. | 
| Remetente personalizado |  `CustomEmailSender_ForgotPassword` `CustomSmsSender_ForgotPassword`  | Quando o usuário solicita uma redefinição de senha. | 
| Remetente personalizado |  `CustomEmailSender_UpdateUserAttribute` `CustomSmsSender_UpdateUserAttribute`  | Quando um usuário altera o endereço de e-mail ou número de telefone e o Amazon Cognito envia um código de verificação. | 
| Remetente personalizado |  `CustomEmailSender_VerifyUserAttribute` `CustomSmsSender_VerifyUserAttribute`  | Quando um usuário adiciona um endereço de e-mail ou um número de telefone e o Amazon Cognito envia um código de verificação. | 
| Remetente personalizado |  `CustomEmailSender_Authentication` `CustomSmsSender_Authentication`  | Quando um usuário que configurou MFA do SMS ou e-mail, ou OTP faz login. | 
| Remetente personalizado | CustomEmailSender\_AccountTakeOverNotification | Quando suas configurações de proteção contra ameaças realizam uma ação automática contra a tentativa de login de um usuário e a ação para o nível de risco inclui uma notificação. | 