AWS cognito用户池,自定义消息lambda

时间:2017-11-24 11:03:25

标签: javascript java amazon-web-services lambda

每个人都过得愉快。

我在AWS认证用户池自定义消息中遇到问题,该消息在lambda函数内创建为触发器(自定义消息lambda)。内部有验证链接的消息。特别是我将消息设置为“自定义主题”(并且电子邮件具有此主题),并且消息正文为“使用此{##自定义链接##}”(并且消息未出现在正文中,但是使用用户池Web界面中的那个。)

我的代码是:

public void handleRequest(InputStream input, OutputStream output, Context context) throws IOException {
    JsonNode json = parseJsonFromStream(input);
    ObjectNode jsonWithResponse = (ObjectNode) json;
    jsonWithResponse.with("response").put("emailMessage", "Use this {##Custom link##} instead");
    jsonWithResponse.with("response").put("emailSubject", "Custom subject");
    try (Writer w = new OutputStreamWriter(output, "UTF-8")) {
            w.write(jsonWithResponse.toString());
    }
}

我曾尝试设置{####}而不是{## Link text ##}并且仍然相同。我几乎可以肯定它已经工作了一段时间(我不记得我改变了什么)。有谁知道我应该去哪看(挖)。因为我花了太多时间在这上面,并且没有遗漏某些东西(希望)很小或者他们有一些变化/问题。

P.S。 lambda测试成功。 Lambda输出看起来很好(我在这里消除了记录器)。

更新:(带响应的记录器输出)

OUTPUT JSON is
{
    "version": "1",
    "region": "eu-west-1",
    "userPoolId": "****",
    "userName": "*****",
    "callerContext": {
        "awsSdkVersion": "aws-sdk-android-2.6.7",
        "clientId": "****"
    },
    "triggerSource": "CustomMessage_SignUp",
    "request": {
        "userAttributes": {
            "sub": "****",
            "email_verified": "false",
            "cognito:user_status": "UNCONFIRMED",
            "nickname": "Yaroslav",
            "email": "****"
        },
        "codeParameter": "{####}",
        "usernameParameter": null
    },
    "response": {
        "emailMessage": "Use this {##Custom link##} instead",
        "emailSubject": "Custom subject"
    }
}

Upd2(JS触发器):

我在基于example的js(自定义电子邮件的新触发器)上添加了代码,当用户需要确认代码时,该代码适用于自定义电子邮件,但这不适用于确认链接。我再次尝试{## link ##}获取链接。

1 个答案:

答案 0 :(得分:0)

所以我最终得到的是使用代码确认。在这种情况下,自定义电子邮件将按预期工作。

为了防止用户在应用程序中输入密码,我发送了带有自定义链接的电子邮件,其中包含代码参数。自定义链接指向API网关,该API网关具有相应的lambda来处理所有内容并完成用户注册。