将用户名发送到由 aws Cognito 用户确认触发的 aws Lambda 函数

ben*_*orn 9 amazon-s3 amazon-web-services amazon-cognito aws-lambda

我正在尝试编写一个 Lambda 函数,该函数在以新确认的 Cognito 用户命名的 s3 存储桶中创建一个文件夹。这将允许我将该用户的访问权限限制在他们的文件夹中。我创建了一个 Lambda 函数,它可以使用通过 Lambda 的测试事件对象传递的用户名在 s3 中创建一个文件夹。我知道 cognito 有一个“确认事件”触发器,并且我选择了在该触发器上运行的函数,但我不知道如何从该事件中检索用户名。下面的屏幕截图是我的 Lambda 代码。
我的 lambda 函数

如果我需要提供更多信息,请告诉我。我已经看到了关于可能使用亚马逊 API 网关的内容,但是在一个半小时左右的时间里,我弄乱了 API 网关,我还没有更接近弄清楚如何解决这个问题。

谢谢!~本

Mic*_* Z. 10

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

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

{
    "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": {}
}
Run Code Online (Sandbox Code Playgroud)

所以基本上,只会event.userName检索用户名。


更新

最近的文档: