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á.
Acionadores do Lambda remetente personalizado
Os acionadores do Lambda CustomEmailSender
e CustomSMSSender
permitem notificações por e-mail e SMS de terceiros em grupos de usuários. Você pode escolher provedores de SMS e e-mail para enviar notificações aos usuários de dentro do código de sua função do Lambda. Quando o Amazon Cognito envia convites, códigos de MFA, códigos de confirmação, códigos de verificação e senhas temporárias aos usuários, os eventos ativam suas funções configuradas do Lambda. O Amazon Cognito envia o código e senhas temporárias (segredos) para suas funções ativadas do Lambda. O Amazon Cognito criptografa esses segredos com uma chave gerenciada pelo AWS KMS cliente e o. AWS Encryption SDK AWS Encryption SDK É uma biblioteca de criptografia do lado do cliente que ajuda você a criptografar e descriptografar dados genéricos.
- CustomEmailSender
-
O Amazon Cognito invoca esse acionador para enviar notificações por e-mail aos usuários.
- PersonalizadoSMSSender
-
O Amazon Cognito invoca esse acionador para enviar notificações SMS aos usuários.
Conceitos de criptografia
O Amazon Cognito não envia códigos de usuários em texto simples nos eventos que envia para acionadores personalizados do remetente. As funções do Lambda devem descriptografar códigos nos eventos. Os conceitos a seguir são a arquitetura de criptografia que sua função deve usar para obter códigos que possam ser entregues aos usuários.
- AWS KMS
-
AWS KMS é um serviço gerenciado para criar e controlar AWS KMS chaves. Essas chaves criptografam seus dados. Para obter mais informações, consulte O que é o AWS Key Management Service?.
- Chave do KMS
-
Uma chave do KMS é uma representação lógica de uma chave criptográfica. A chave do KMS inclui metadados, como o ID da chave, a data de criação, a descrição e o estado da chave. A chave do KMS também contém o material de chave usado para criptografar e descriptografar dados. Para obter mais informações, consulte, Chaves do AWS KMS.
- Chaves simétricas do KMS
-
Uma chave simétrica do KMS é uma chave de criptografia de 256 bits que não sai do AWS KMS sem ser criptografada. Para usar uma chave KMS simétrica, você deve ligar. AWS KMS O Amazon Cognito usa chaves simétricas. A mesma chave criptografa e descriptografa. Para obter mais informações, consulte Chaves simétricas do KMS.
Coisas que você deve saber sobre os gatilhos Lambda personalizados do remetente
-
Para configurar seus grupos de usuários para usar esses acionadores do Lambda, é possível usar a AWS CLI ou o SDK. Essas configurações não estão disponíveis no console do Amazon Cognito.
A
UpdateUserPool
operação define a configuração do Lambda. As solicitações para essa operação exigem todos os parâmetros do seu grupo de usuários e os parâmetros que você deseja alterar. Se você não fornecer todos os parâmetros relevantes, o Amazon Cognito assumirá os valores padrão para todos os parâmetros ausentes. Conforme demonstrado no exemplo de AWS CLI a seguir, inclua entradas para todas as funções do Lambda que você deseja adicionar ou manter em seu grupo de usuários. Para obter mais informações, consulte Como atualizar a configuração do grupo de usuários e do cliente da aplicação.#Send this parameter in an 'aws cognito-idp update-user-pool' CLI command, including any existing #user pool configurations. This snippet also includes a pre sign-up trigger for syntax reference. The pre sign-up trigger #doesn't have a role in custom sender triggers. --lambda-config "PreSignUp=
lambda-arn
, \ CustomSMSSender={LambdaVersion=V1_0,LambdaArn=lambda-arn
}, \ CustomEmailSender={LambdaVersion=V1_0,LambdaArn=lambda-arn
}, \ KMSKeyID=key-id
"Para solicitações que usam o corpo JSON, o
LambdaConfig
trechoUpdateUserPool
a seguir atribui funções personalizadas de SMS e remetente de e-mail."LambdaConfig": { "KMSKeyID": "arn:aws:kms:
us-east-1
:111122223333
:key/a6c4f8e2-0c45-47db-925f-87854bc9e357
", "CustomEmailSender": { "LambdaArn": "arn:aws:lambda:us-east-1
:111122223333
:function:MyFunction
", "LambdaVersion": "V1_0" }, "CustomSMSSender": { "LambdaArn": "arn:aws:lambda:us-east-1
:111122223333
:function:MyFunction
", "LambdaVersion": "V1_0" } -
Para remover um gatilho Lambda personalizado do remetente com
update-user-pool
AWS CLI um comando, omitaCustomSMSSender
o parâmetroCustomEmailSender
--lambda-config
or e inclua todos os outros gatilhos que você deseja usar com seu grupo de usuários.Para remover um acionador do Lambda de remetente personalizado com uma solicitação da API
UpdateUserPool
, omita o parâmetroCustomSMSSender
ouCustomEmailSender
do corpo da solicitação que contém o restante da configuração do grupo de usuários. -
O Amazon Cognito faz escapes de caracteres reservados de HTML
<
(<
) e>
(>
) na senha temporária do usuário. Esses caracteres podem aparecer em senhas temporárias que o Amazon Cognito envia para à função personalizada de remetente de e-mail, mas não aparecem nos códigos de verificação temporários. Para enviar senhas temporárias, a função do Lambda deve liberar esses caracteres depois de decifrar a senha e antes de enviar a mensagem ao usuário.
Ativando gatilhos Lambda personalizados do remetente
Para usar a lógica personalizada para enviar mensagens SMS ou de e-mail para seu grupo de usuários, configure gatilhos de remetente personalizados. O procedimento a seguir atribui um acionador de SMS personalizado, um acionador de e-mail personalizado ou ambos ao seu grupo de usuários. Depois de adicionar seu gatilho de remetente personalizado, o Amazon Cognito sempre envia atributos do usuário, incluindo o número de telefone e o código único para sua função Lambda, em vez do comportamento padrão que envia uma mensagem SMS ou e-mail.
-
Crie uma chave de criptografia simétrica em AWS Key Management Service (AWS KMS). O Amazon Cognito gera segredos — senhas temporárias, códigos de verificação, senhas únicas de autenticação e códigos de confirmação — e usa essa chave KMS para criptografar os segredos com. AWS Encryption SDK Em seguida, você pode usar o AWS Encryption SDK em sua função Lambda para descriptografar os segredos e enviá-los ao usuário em texto simples.
-
O diretor do IAM que cria ou atualiza seu grupo de usuários cria uma concessão única com base na chave KMS que o Amazon Cognito usa para criptografar o código. Conceda essas
CreateGrant
permissões principais para sua chave KMS. Para que esse exemplo de política de chaves do KMS seja efetivo, o administrador que atualiza o grupo de usuários deve estar conectado com uma sessão de função assumida para a função do IAM.arn:aws:iam::111222333444:role/my-example-administrator-role
Aplique a seguinte política baseada em recursos, modificada para seu ambiente, à sua chave KMS.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111122223333
:role/my-example-administrator-role
" }, "Action": "kms:CreateGrant", "Resource": "arn:aws:kms:us-west-2:111122223333
:key/1example-2222-3333-4444-999example
", "Condition": { "StringEquals": { "kms:EncryptionContext:userpool-id": "us-west-2_EXAMPLE
" } } }, { "Sid": "Allow Lambda to decrypt", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333
:role/my-lambda-function-role
" }, "Action": "kms:Decrypt", "Resource": "*" }] } -
Crie uma função do Lambda para o acionador de remetente personalizado. O Amazon Cognito usa o SDK de criptografia da AWS para criptografar os segredos, as senhas temporárias e os códigos que autorizam as solicitações de API dos usuários.
-
Atribua uma função de execução do Lambda que tenha, no mínimo,
kms:Decrypt
permissões para sua chave KMS. -
Escreva o código da função Lambda para enviar suas mensagens. O evento de entrada para sua função contém um segredo. Em sua função, decifre o segredo com o AWS Encryption SDK e processe todos os metadados relevantes. Depois, envie o código, sua própria mensagem personalizada e o número de telefone de destino para a API personalizada que entrega a mensagem.
-
Adicione o AWS Encryption SDK à sua função Lambda. Para ter mais informações, consulte Linguagens de programação do AWS Encryption SDK. Para atualizar o pacote do Lambda, conclua as etapas a seguir.
-
Exporte a função do Lambda como um arquivo .zip no AWS Management Console.
-
Abra sua função e adicione AWS Encryption SDK o. Para ter mais informações e links de download, consulte Linguagens de programação do AWS Encryption SDK no Guia do desenvolvedor do AWS Encryption SDK .
-
Compacte a função com as dependências do SDK e faça upload da função para o Lambda. Para obter mais informações, consulte Implantar funções do Lambda como arquivos .zip no Guia do desenvolvedor do AWS Lambda .
-
-
-
Conceda à entidade principal
cognito-idp.amazonaws.com
do serviço do Amazon Cognito acesso para invocar a função do Lambda.O AWS CLI comando a seguir concede ao Amazon Cognito permissão para invocar sua função Lambda:
aws lambda add-permission --function-name
lambda_arn
--statement-id "CognitoLambdaInvokeAccess
" --action lambda:InvokeFunction --principal cognito-idp.amazonaws.com -
Gere uma solicitação de UpdateUserPoolAPI com um
LambdaConfig
parâmetro que adiciona gatilhos Lambda personalizados do remetente. Você não pode adicionar gatilhos desse tipo no console do Amazon Cognito. Os acionadores personalizados do remetente exigemLambdaConfig
parâmetros deKMSKeyID
eCustomSMSSender
ouCustomEmailSender
(ou ambos).