Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Desencadenadores de Lambda para remitentes personalizados
Los desencadenadores de Lambda CustomEmailSender
y CustomSMSSender
admiten notificaciones por correo electrónico y SMS de terceros en grupos de usuarios. Puede elegir proveedores de SMS y correo electrónico para que envíen las notificaciones a los usuarios desde su código de función de Lambda. Cuando Amazon Cognito envía a los usuarios invitaciones, códigos de MFA, códigos de confirmación, códigos de verificación y contraseñas temporales, los eventos activan las funciones de Lambda configuradas. Amazon Cognito envía el código y las contraseñas temporales (secretos) a sus funciones de Lambda activadas. Amazon Cognito cifra estos secretos con una clave gestionada por el AWS KMS cliente y el. AWS Encryption SDK AWS Encryption SDK Se trata de una biblioteca de cifrado del lado del cliente que le ayuda a cifrar y descifrar datos genéricos.
- CustomEmailSender
-
Amazon Cognito invoca este desencadenador para enviar notificaciones por correo electrónico a los usuarios.
- PersonalizadaSMSSender
-
Amazon Cognito invoca este desencadenador para enviar notificaciones por SMS a los usuarios.
Conceptos de cifrado
Amazon Cognito no envía los códigos de los usuarios en texto sin formato en los eventos que envía a desencadenadores de remitentes personalizados. Las funciones de Lambda deben descifrar códigos en los eventos. Los siguientes conceptos forman la arquitectura de cifrado que la función debe utilizar para obtener los códigos que puede entregar a los usuarios.
- AWS KMS
-
AWS KMS es un servicio gestionado para crear y controlar AWS KMS claves. Estas claves cifran los datos. Para obtener más información, consulte ¿Qué es AWS Key Management Service?.
- Clave de KMS
-
Una clave KMS es una representación lógica de una clave criptográfica. La clave de KMS incluye metadatos, como el ID de clave, la fecha de creación, la descripción y el estado de la clave. La clave de KMS también contiene el material de claves utilizado para cifrar y descifrar datos. Para obtener más información, consulte AWS claves KMS.
- Claves KMS simétricas
-
Una clave KMS simétrica es una clave de cifrado de 256 bits que no sale de AWS KMS sin cifrar. Para usar una clave KMS simétrica, debe llamar AWS KMS. Amazon Cognito utiliza claves simétricas. La misma clave cifra y descifra. Para obtener más información, consulte Claves KMS simétricas.
Información que debe saber sobre los activadores Lambda de remitentes personalizados
-
Puede utilizar la AWS CLI o el SDK para configurar sus grupos de usuarios con el fin de utilizar estos desencadenadores de Lambda. Estas configuraciones no están disponibles en la consola de Amazon Cognito.
La
UpdateUserPool
operación establece la configuración de Lambda. Las solicitudes de esta operación requieren todos los parámetros del grupo de usuarios y los parámetros que desee cambiar. Si no proporciona todos los parámetros relevantes, Amazon Cognito establece los valores de los parámetros que faltan en sus valores predeterminados. Como se muestra en el siguiente ejemplo de AWS CLI, incluya entradas para todas las funciones de Lambda que desee añadir o conservar en su grupo de usuarios. Para obtener más información, consulte Actualización de la configuración del grupo de usuarios y del cliente de aplicación.#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 las solicitudes que utilizan el cuerpo de JSON
UpdateUserPool
del siguienteLambdaConfig
fragmento, se asignan funciones personalizadas de envío de SMS y correo electrónico."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 eliminar un activador Lambda de remitente personalizado con un
update-user-pool
AWS CLI comando, omita elCustomEmailSender
parámetroCustomSMSSender
o e incluya todos los demás activadores que desee usar con su grupo de usuarios.--lambda-config
Para eliminar un desencadenador de Lambda de remitente personalizado con una solicitud de API
UpdateUserPool
, omita el parámetroCustomSMSSender
oCustomEmailSender
del cuerpo de la solicitud que contiene el resto de la configuración del grupo de usuarios. -
Amazon Cognito aplica códigos de escape HTML a caracteres reservados como
<
(<
) y>
(>
) en la contraseña temporal de su usuario. Estos caracteres pueden aparecer en las contraseñas temporales que Amazon Cognito envía a su función de remitente de correo electrónico personalizado, pero no en los códigos de verificación temporales. Para enviar contraseñas temporales, su función de Lambda debe anular los códigos de escape de estos caracteres después de descifrar la contraseña y antes de enviar el mensaje a su usuario.
Activación de activadores Lambda de remitentes personalizados
Para usar una lógica personalizada para enviar mensajes SMS o de correo electrónico a su grupo de usuarios, configure activadores de remitentes personalizados. En el procedimiento siguiente se asigna un desencadenador de SMS personalizado, un desencadenador de correo electrónico personalizado o ambos a su grupo de usuarios. Tras añadir el activador de remitente personalizado, Amazon Cognito siempre envía los atributos del usuario, incluidos el número de teléfono y el código de un solo uso, a la función Lambda, en lugar del comportamiento predeterminado, que envía un mensaje de correo electrónico o SMS.
-
Cree una clave de cifrado simétrica en AWS Key Management Service ().AWS KMS Amazon Cognito genera secretos (contraseñas temporales, códigos de verificación, contraseñas de un solo uso y códigos de confirmación) y, a continuación, utiliza esta clave de KMS para cifrar los secretos. AWS Encryption SDK A continuación, puede utilizar AWS Encryption SDK la función Lambda para descifrar los secretos y enviarlos al usuario en texto plano.
-
El director de IAM que crea o actualiza el grupo de usuarios crea una concesión única con la clave de KMS que Amazon Cognito utiliza para cifrar el código. Otorgue estos
CreateGrant
permisos principales para su clave de KMS. Para que este ejemplo de política de claves de KMS sea efectiva, el administrador que actualice el grupo de usuarios debe iniciar sesión con una sesión de rol asumido para el rol de IAM.arn:aws:iam::111222333444:role/my-example-administrator-role
Aplique la siguiente política basada en recursos, modificada para su entorno, a su clave de 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": "*" }] } -
Cree una función de Lambda para el desencadenador de remitente personalizado. Amazon Cognito utiliza el SDK de cifrado de AWS para cifrar los secretos, las contraseñas temporales y los códigos que autorizan las solicitudes de API de sus usuarios.
-
Asigne una función de ejecución de Lambda que tenga, como mínimo,
kms:Decrypt
permisos para su clave KMS. -
Redacte el código de la función Lambda para enviar sus mensajes. El evento de entrada de la función contiene un secreto. En su función, descifre el secreto con el AWS Encryption SDK y procese los metadatos relevantes. A continuación, envíe el código, su propio mensaje personalizado y el número de teléfono de destino a la API personalizada que entrega el mensaje.
-
Añada el AWS Encryption SDK a su función Lambda. Para obtener más información, consulte Lenguajes de programación del SDK de cifrado de AWS. Complete los siguientes pasos para actualizar el paquete de Lambda.
-
Exporte su función de Lambda como un archivo .zip en la AWS Management Console.
-
Abra la función y añada la AWS Encryption SDK. Para obtener más información y enlaces de descarga, consulte Lenguajes de programación de AWS Encryption SDK en la Guía para desarrolladores de AWS Encryption SDK .
-
Comprima su función con sus dependencias del SDK y cargue la función en Lambda. Para obtener más información, consulte Implementación de funciones de Lambda como archivos .zip en la Guía para desarrolladores de AWS Lambda .
-
-
-
Conceda el acceso
cognito-idp.amazonaws.com
a la entidad principal del servicio de Amazon Cognito para llamar a la función de Lambda.El siguiente AWS CLI comando otorga permiso a Amazon Cognito para invocar la función Lambda:
aws lambda add-permission --function-name
lambda_arn
--statement-id "CognitoLambdaInvokeAccess
" --action lambda:InvokeFunction --principal cognito-idp.amazonaws.com -
Genere una solicitud de UpdateUserPoolAPI con un
LambdaConfig
parámetro que añada activadores Lambda de remitente personalizados. No puede añadir activadores de este tipo en la consola de Amazon Cognito. Los activadores de envío personalizados requierenLambdaConfig
parámetros deKMSKeyID
yCustomSMSSender
oCustomEmailSender
(o ambos).