将用户名发送到aws由aws Cognito用户确认的

时间:2018-03-30 19:13:26

标签: amazon-web-services amazon-s3 aws-lambda amazon-cognito

我正在尝试编写一个Lambda函数,该函数在以新确认的cognito用户命名的s3存储桶中创建一个文件夹。这样我就可以将该用户的访问限制在其文件夹中。我创建了一个Lambda函数,可以使用通过Lambda测试事件对象传递的用户名在s3中创建一个文件夹。我知道cognito有一个"确认事件"触发器,我选择了我的函数来运行该触发器,但我不知道如何从该事件中检索用户名。下面的截图是我的Lambda代码 my lambda function

如果我需要提供更多信息,请与我们联系。我已经看到了有关可能使用亚马逊的API网关的事情,但在一小时左右的时间里,我已经搞乱了API网关,我还没有找到更接近于如何使用它解决这个问题。

谢谢! 〜奔

1 个答案:

答案 0 :(得分:1)

好问题,在文档(https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-lambda-trigger-syntax-post-confirmation.html)上,他们只说request.userAttributes,但显然不包含用户名。

在我检查时,用于确认后触发的整个事件对象如下所示:

{
    "version": "1",
    "region": "eu-central-1",
    "userPoolId": "eu-central-1_45YtlkflA",
    "userName": "user4",
    "callerContext": {
        "awsSdkVersion": "aws-sdk-java-console",
        "clientId": "4736lckau64in48dku3rta0eqa"
    },
    "triggerSource": "PostConfirmation_ConfirmSignUp",
    "request": {
        "userAttributes": {
            "sub": "a2c21839-f9fc-49e3-be9a-16f5823d6705",
            "cognito:user_status": "CONFIRMED",
            "email_verified": "true",
            "email": "asdfsdfsgdfg@carbtc.net"
        }
    },
    "response": {}
}

基本上,只需event.userName即可检索用户名。