在AWS Lambda函数中无法访问listUsersRes.Users的userAttributes。

0

【以下的问题经过翻译处理】 我在 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”
            ],

profile picture
专家
已提问 5 个月前13 查看次数
1 回答
0

【以下的回答经过翻译处理】 您可以通过与用户元素相关联的属性获取电子邮件。

属性是AttributeType类型的数组。

listUsersRes.Users[0].Attributes[listUsersRes.Users[0].Attributes.findIndex(p => p.Name == "email")].Value
profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则