Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Lambda-Auslöser für benutzerdefinierte Nachrichten
Wenn Sie über einen externen Standard für die E-Mails und SMS Nachrichten verfügen, die Sie an Ihre Benutzer senden möchten, oder wenn Sie zur Laufzeit Ihre eigene Logik auf die Formatierung von Benutzernachrichten anwenden möchten, fügen Sie Ihrem Benutzerpool einen benutzerdefinierten Nachrichtenauslöser hinzu. Die benutzerdefinierte Nachricht Lambda empfängt den Inhalt aller E-Mails und SMS Nachrichten, bevor Ihr Benutzerpool sie sendet. Ihre Lambda-Funktion hat dann die Möglichkeit, den Inhalt und den Betreff der Nachricht zu ändern.
Amazon Cognito ruft diesen Auslöser auf, bevor es eine Bestätigungsnachricht per E-Mail oder Telefon oder einen Multi-Faktor-Authentifizierungscode () MFA sendet. Sie können die Nachricht mit Ihrem Auslöser für benutzerdefinierte Nachrichten dynamisch anpassen. Sie können statische benutzerdefinierte Nachrichten können auf der Registerkarte Nachrichtenanpassungen der ursprünglichen Amazon-Cognito
Die Anforderung beinhaltet codeParameter
. Dies ist eine Zeichenfolge, die als Platzhalter für den von Amazon Cognito dem Benutzerzugestellten Code dient. Fügen Sie die Zeichenfolge codeParameter
dort im Nachrichtentext ein, an der der Verifizierungscode erscheinen soll. Wenn Amazon Cognito diese Antwort empfängt, ersetzt Amazon Cognito die Zeichenfolge codeParameter
durch den tatsächlichen Verifizierungscode.
Anmerkung
Eine Lambda-Funktion für benutzerdefinierte Nachrichten mit der CustomMessage_AdminCreateUser
-Auslöserquelle gibt einen Benutzernamen und einen Verifizierungscode zurück. Da ein von einem Administrator erstellter Benutzer sowohl seinen Benutzernamen als auch seinen Code erhalten muss, muss die Antwort der Funktion sowohl request.usernameParameter
als auch request.codeParameter
enthalten.
Themen
Lambda-Auslöserquellen für benutzerdefinierte Nachrichten
triggerSource Wert | Ereignis |
---|---|
CustomMessage_SignUp |
Benutzerdefinierte Nachricht – Zum Senden des Bestätigungscodes nach der Anmeldung. |
CustomMessage_AdminCreateUser |
Benutzerdefinierte Nachricht – Zum Senden des temporären Passworts an einen neuen Benutzer. |
CustomMessage_ResendCode |
Benutzerdefinierte Nachricht – Zum erneuten Senden des Bestätigungscodes an einen vorhandenen Benutzer. |
CustomMessage_ForgotPassword |
Benutzerdefinierte Nachricht – Zum Senden des Bestätigungscodes für die Anforderung „Passwort vergessen“. |
CustomMessage_UpdateUserAttribute |
Benutzerdefinierte Nachricht – Wenn die E-Mail-Adresse oder die Telefonnummer eines Benutzers geändert wird, sendet dieser Auslöser automatisch einen Verifizierungscode an den Benutzer. Kann nicht für andere Attribute verwendet werden. |
CustomMessage_VerifyUserAttribute |
Benutzerdefinierte Nachricht – Dieser Auslöser sendet einen Verifizierungscode an Benutzer, wenn sie ihn manuell für eine neue E-Mail-Adresse oder Telefonnummer anfordern. |
CustomMessage_Authentication |
Benutzerdefinierte Nachricht — Um MFA Code während der Authentifizierung zu senden. |
Lambda-Auslöserparameter für benutzerdefinierte Nachrichten
Die Anforderung, die Amazon Cognito an diese Lambda-Funktion übergibt, ist eine Kombination der folgenden Parameter und der allgemeinen Parameter, die Amazon Cognito allen Anfragen hinzufügt.
Anforderungsparameter für benutzerdefinierte Nachrichten
- userAttributes
-
Ein oder mehrere Name-Wert-Paare, die Benutzerattribute darstellen.
- codeParameter
-
Eine Zeichenfolge, die Sie als Platzhalter für den Verifizierungscode in der benutzerdefinierten Nachricht verwenden.
- usernameParameter
-
Der Benutzername Amazon Cognito bezieht diesen Parameter in Anfragen von Benutzern ein, die von einem Administrator erstellt wurden.
- clientMetadata
-
Ein oder mehrere Schlüssel-Wert-Paare, die Sie als benutzerdefinierte Eingabe für die Lambda-Funktion bereitstellen können, die Sie für den Auslöser für benutzerdefinierte Nachrichten angeben. Die Anforderung, die eine benutzerdefinierte Nachrichtenfunktion aufruft, enthält keine Daten, die im ClientMetadata Parameter in AdminInitiateAuthund InitiateAuthAPI-Operationen übergeben wurden. Um diese Daten an Ihre Lambda-Funktion zu übergeben, können Sie den ClientMetadata Parameter in den folgenden API Aktionen verwenden:
Antwortparameter für benutzerdefinierte Nachrichten
In der Antwort geben Sie den benutzerdefinierten Text an, der in Nachrichten an Ihre Benutzer enthalten sein soll. Informationen zu den Zeichenketteneinschränkungen, die Amazon Cognito auf diese Parameter anwendet, finden Sie unter MessageTemplateType.
- smsMessage
-
Die benutzerdefinierte SMS Nachricht, die an Ihre Benutzer gesendet werden soll. Muss den in der Anforderung erhaltenen
codeParameter
-Wert enthalten, den Sie empfangen haben. - emailMessage
-
Die benutzerdefinierte E-Mail-Nachricht, die an Ihre Benutzer gesendet werden soll. Sie können die HTML Formatierung im
emailMessage
Parameter verwenden. Muss den in der Anforderung erhaltenencodeParameter
-Wert enthalten, den Sie als die Variable{####}
empfangen haben. Amazon Cognito kann denemailMessage
-Parameter nur verwenden, wenn dasEmailSendingAccount
-Attribut des BenutzerpoolsDEVELOPER
lautet. Wenn dasEmailSendingAccount
-Attribut des Benutzerpools nichtDEVELOPER
lautet und einemailMessage
-Parameter ausgegeben wird, generiert Amazon Cognito einen 400-Fehlercodecom.amazonaws.cognito.identity.idp.model.InvalidLambdaResponseException
. Wenn Sie Amazon Simple Email Service (AmazonSES) zum Senden von E-Mail-Nachrichten wählen, lautet dasEmailSendingAccount
Attribut eines BenutzerpoolsDEVELOPER
. Andernfalls lautet der WertCOGNITO_DEFAULT
. - emailSubject
-
Die Betreffzeile für die benutzerdefinierte Nachricht. Sie können den
emailSubject
Parameter nur verwenden, wenn das EmailSendingAccount Attribut des BenutzerpoolsDEVELOPER
Wenn dasEmailSendingAccount
-Attribut des Benutzerpools nichtDEVELOPER
lautet und Amazon Cognito einenemailSubject
-Parameter ausgibt, generiert Amazon Cognito einen 400-Fehlercodecom.amazonaws.cognito.identity.idp.model.InvalidLambdaResponseException
. DasEmailSendingAccount
Attribut eines Benutzerpools ist,DEVELOPER
wenn Sie Amazon Simple Email Service (AmazonSES) zum Senden von E-Mail-Nachrichten verwenden möchten. Andernfalls lautet der WertCOGNITO_DEFAULT
.
Benutzerdefinierte Nachricht für das Registrierbeispiel
Diese Lambda-Beispielfunktion passt eine E-Mail oder SMS Nachricht an, wenn der Dienst verlangt, dass eine App einen Bestätigungscode an den Benutzer sendet.
Amazon Cognito kann einen Lambda-Auslöser bei verschiedenen Ereignissen aufrufen: nach der Registrierung, beim erneuten Senden eines Verifizierungscodes, bei einem vergessenen Passwort oder bei der Verifizierung eines Benutzerattributs. Die Antwort umfasst sowohl Nachrichten für E-Mails als auch SMS für E-Mails. Die Nachricht muss den Codeparameter "####"
enthalten. Dieser Parameter ist der Platzhalter für den Verifizierungscode, den der Benutzer erhält.
Die maximale Länge für eine E-Mail-Nachricht beträgt 20.000 UTF -8 Zeichen,. Diese Länge beinhaltet den Verifizierungscode. Sie können in diesen E-Mail-Nachrichten HTML Tags verwenden.
Die maximale Länge von SMS Nachrichten beträgt UTF 140-8 Zeichen. Diese Länge beinhaltet den Verifizierungscode.
Amazon Cognito übergibt Ereignisinformationen an Ihre Lambda-Funktion. Die Funktion gibt dann das gleiche Ereignisobjekt mit allen Änderungen in der Antwort an Amazon Cognito zurück. Sie können in der Lambda-Konsole ein Testereignis mit den für Ihren Lambda-Auslöser relevanten Daten einrichten. Das Folgende ist ein Testereignis für dieses Codebeispiel:
Benutzerdefinierte Nachricht für das Beispiel, bei dem der Administrator einen Benutzer anlegt
Die Anfrage, die Amazon Cognito an diese Lambda-Funktion für eine benutzerdefinierte Beispielnachricht gesendet hat, hat den triggerSource
Wert CustomMessage_AdminCreateUser
und einen Benutzernamen und ein temporäres Passwort. Die Funktion wird ${event.request.codeParameter}
anhand des temporären Kennworts in der Anfrage und anhand des Benutzernamens in ${event.request.usernameParameter}
der Anfrage aufgefüllt.
Ihre benutzerdefinierten Nachrichten müssen die Werte von codeParameter
und usernameParameter
in smsMessage
und emailMessage
in das Antwortobjekt einfügen. In diesem Beispiel schreibt die Funktion dieselbe Nachricht in die Antwortfelder event.response.smsMessage
undevent.response.emailMessage
.
Die maximale Länge einer E-Mail-Nachricht beträgt 20.000 UTF -8 Zeichen. Diese Länge beinhaltet den Verifizierungscode. Sie können in diesen E-Mails HTML Tags verwenden. Die maximale Länge von SMS Nachrichten beträgt UTF 140-8 Zeichen. Diese Länge beinhaltet den Verifizierungscode.
Die Antwort umfasst sowohl SMS Nachrichten für E-Mails als auch für E-Mails.
Amazon Cognito übergibt Ereignisinformationen an Ihre Lambda-Funktion. Die Funktion gibt dann das gleiche Ereignisobjekt mit allen Änderungen in der Antwort an Amazon Cognito zurück. Sie können in der Lambda-Konsole ein Testereignis mit den für Ihren Lambda-Auslöser relevanten Daten einrichten. Das Folgende ist ein Testereignis für dieses Codebeispiel: