首页 > 解决方案 > AWS CLI:从 Cognito Identities 获取用户详细信息

问题描述

使用 AWS CLI,如何从 Cognito Identities 获取用户详细信息(用户名、电子邮件)?

这个问题与https://stackoverflow.com/a/55436168/1692112有关,它似乎在 2021 年不再起作用。问题是,sub用户池中的属性不再与IdentityId身份池中的属性匹配。

用户池中的用户列表:

$ aws cognito-idp list-users --user-pool-id XX-XXXXX-X_XXXXXXXXX

{
    "Users": [
        {
            "Username": "my.username.yay",
            "Attributes": [
                {
                    "Name": "sub",
                    "Value": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
                },
                {
                    "Name": "email_verified",
                    "Value": "true"
                },
                {
                    "Name": "email",
                    "Value": "my.username.yay@my.company.yay"
                }
            ],
            "UserCreateDate": 1612361296.687,
            "UserLastModifiedDate": 1612361331.99,
            "Enabled": true,
            "UserStatus": "CONFIRMED"
        }
    ]
}

身份池中的身份列表:

$ aws cognito-identity list-identities --identity-pool-id XX-XXXXXXXX-X:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX --max-results 50

{
    "IdentityPoolId": "XX-XXXXX-X:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    "Identities": [
        {
            "IdentityId": "XX-XXXXXXX-X:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
            "Logins": [
                "cognito-idp.XX-XXXXXXX-X.amazonaws.com/XX-XXXXXXX-X_XXXXXXXXX"
            ],
            "CreationDate": 1612795279.758,
            "LastModifiedDate": 1612795279.771
        }
    ]
}

我一直希望列表Logins能以某种方式提及用户名或sub,但它只是引用了整个用户池。

从理论上讲,可以使用 AWS Lambda 和 AWS Cognito 触发器来连接两个池并将 ID 存储在某处。但是,我假设 AWS Cognito 已经知道两个池之间的连接,并且有一个简单的命令来完成这项工作。

编辑:似乎即使在Pre Token Generation调用最后一个 Cognito 触发器时,身份也不存在。此外,该event结构在任何地方都没有引用身份。因此,AWS Lambda 和 Cognito 触发器也不会为 AWS CLI 提供解决方法。

有什么建议么?

标签: amazon-web-servicesamazon-cognitoaws-cli

解决方案


推荐阅读