【以下的问题经过翻译处理】 我在 lambda 函数中过滤掉未经确认的电子邮件。我只想访问我的 listUsersRes.Users 中每个用户的电子邮件。我已经尝试过 listUsersRes.Users[0].Username 它完美地返回了用户名。但是当我尝试 listUsersRes.Users[0].Email 或 listUsersRes.Users[0].userAttributes.email 或 listUsersRes.Users[0].request.userAttributes.email 时,它返回空值。我有 AttributesToGet: ["email"]. 但我不知道为什么它不适用于电子邮件。
我的功能:
exports.handler = async (event, context, callback) => {
const cognitoProvider = new aws.CognitoIdentityServiceProvider({apiVersion: "2016-04-18"});
如果(event.triggerSource == “PreSignUp_SignUp” ||event.triggerSource == “PreSignUp_AdminCreateUser” || event.triggerSource == “PreSignUp_ExternalProvider”){
尝试 {
const listUserParams={UserPoolId: event.userPoolId,AttributesToGet: ["email"], Filter: `cognito:user_status= \"${"UNCONFIRMED"}\"`, Limit: 10 };
const listUsersRes = await cognitoProvider.listUsers(listUserParams).promise();
如果(listUsersRes.Users.length >= 0){
return callback(new Error(listUsersRes.Users[0].Username), event);//我正在修改这一行以从 listUsersRes.Users[0] 获取电子邮件属性
}
}
捕获(错误){返回回调(新错误(“捕获错误”),事件);}
}
别的 {
var error = "不支持该提供者";
回调(新错误(错误),事件);
}
};
我的许可:
"Sid": "VisualEditor0",
"效果": "允许",
“行动”: [
“日志:CreateLogStream”,
“日志:PutLogEvents”,
“认知 IDP:AdminInitiateAuth”,
“cognito-idp:ListUsers”,
“cognito-idp:AdminUpdateUserAttributes”,
“cognito-idp:AdminGetUser”
],