使用 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 已经知道两个池之间的连接,并且有一个简单的作业命令。
编辑:似乎即使在调用最后一个 Cognito 触发器 Pre Token Generation
时,身份也不存在。此外,event
结构不会在任何地方引用标识。因此,AWS Lambda 和 Cognito Triggers 也不会为 AWS CLI 提供解决方法。
有什么建议吗?