我想使用Cognito的“ sub”值通过lambda触发器创建Dynamodb条目

时间:2019-06-25 10:46:38

标签: python aws-lambda amazon-dynamodb amazon-cognito

我正在使用aws cognito进行用户身份验证,但希望使用dynamodb用户表来存储cognito并非设计用于的应用程序特定的用户属性。

我想通过唯一的ID将cognito和dynamobd链接在一起。 一旦确认用户(使用预注册触发器完成),Cognito会将“ sub”值设置为唯一ID,但是我不确定如何在后确认lambda触发器中捕获此值以添加到dynamobd。 它似乎仅在Auth令牌有效负载中提供。 我最好在我的帖子确认lambda触发器中请求auth令牌吗? 我不确定是否可以使用Python完成此操作。我对此很陌生。

我想一口气做的是:

  1. 用户注册-要求认知
  2. 预先lambda触发器集Confirmed = True
  3. 用户已添加到Cognito
  4. 发布已确认的lambda触发器,将用户添加到带有“ sub”的dynamodb中 uuid作为主键。

谢谢。

1 个答案:

答案 0 :(得分:0)

根据this answer,后确认lambda的事件对象将如下所示:

{
    "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": {}
}

看来您应该能够从sub抢夺request.userAttributesuserName可能是另一个不错的选择。