2016-07-11 15 views
3

Ich mag würde für neu registrierte Benutzer in meiner AWS Cognito Benutzer PoolEreignisauslÓsersystem Objekt für AWS Cognito Benutzer Pools

Dazu eine benutzerdefinierte Bestätigungsnachricht machen, Ich versuche, eine Lamda-Funktion mit einem „Custom zu assoziieren Nachricht "auslösen.

Ich bin jedoch nicht in der Lage, das genaue Format des benutzerdefinierten Nachrichtenereignisses zu finden, um meine Lambda-Funktion ausführen zu können.

Die Lambda-Funktion, die ich kam mit ist

exports.handler = function(event, context) { 
    // 
    if(event.userPoolId === "us-east-t9....") { 

     // Identify why was this function invoked 
     if(event.triggerSource === "RegisterUser") { 
      // This Lambda function was invoked because a new user signed up to the user-pool "theRequiredUserPool" 
      // Ensure that your message contains event.request.codeParameter, this is the place holder for code that will be sent. 
         var link = "https://.....confirm_user.html?username="+ event.userName + "&code=" + event.request.codeParameter; 
      var message = "Thank you for signing up. Your confirmation code is " + event.request.codeParameter; 
      message+= " Click <a href='"+link+"'>here to finish your registatration!"; 
      event.response.emailSubject = "Welcome to the service"; 
      event.response.emailMessage = message; 

     } 
     // Create custom message for other events 
    } 
    // Customize messages for other user pools 


    // Return result to Cognito 
    context.done(null, event); 
} 

Als ich „test“ meine Funktion in der Lambda-Konsole, es funktioniert, aber das ist, weil ich es gegen mein eigenes -Ereignisobjekts mich entschieden, dass ich erstellt auf der Grundlage der einzige Hinweis, ich in der Dokumentation finden konnte:

{ "version": 1, 
    "triggerSource": "RegisterUser/ResendCode/ForgotPassword/VerifyUserAttribute", 
    "region": "<region>", 
    "userPoolId": "<userPoolId>", 
    "userName": "<userName>", 
    "callerContext": { 
     "awsSdk": "<calling aws sdk with version>", 
     "clientId": "<apps client id>", 
     ... 
    }, 
    "request": { 
     "userAttributes": { 
      "phone_verified": true/false, 
      "email_verified": true/false, 
      ... (all custom attributes) 
     }, 
     "codeParameter": "{code}" 
    }, 
    "response": { 
     "smsMessage": "<custom message to be sent in the message with code parameter>" 
     "emailMessage": "<custom message to be sent in the message with code parameter>" 
     "emailSubject": "<custom email subject>" 
    } 
} 

von https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools-working-with-aws-lambda-triggers.html

ich brauche etwas fester als das. Ich kann meine Funktion nicht ausführen und weiß nicht, wo ich anfangen soll. Wie kann ich eine Lambda-Funktion implementieren, wenn ich nicht weiß, was im Ereignisobjekt zu erwarten ist? Gibt es eine Spezifikation für das Ereignis "Benutzerdefinierte Nachricht"?

UPDATE: Nun, da Amazon User Pool sind aus der Beta-Phase, seit dem 29. Juli 2016, habe ich nicht mehr dieses Problem.

+1

Sie können 'console.log()' verwenden, um das Attribut 'event' zu protokollieren und seine Struktur in CloudWatch zu überprüfen. Weißt du, ob das Lambda überhaupt heißt? Die Registerkarte "Überwachung" in Lambda sollte Ihnen helfen, dies zu sehen. –

+0

Das ist eine gute Idee. @ AlexisN-o Und nein, es sieht nicht so aus, als ob das Lambda überhaupt aufgerufen wird. :-( –

Antwort

0

Es scheint, als ob in der vorherigen Dokumentation ein Fehler aufgetreten ist. Können Sie bitte versuchen, triggerSource name als "CustomMessage_SignUp" zu verwenden. Sie können auch die aktualisierten Dokumente für das Beispiel überprüfen.

Verwandte Themen