管理Lambda的cognito用户属性 - 他们必须登录吗?

Kri*_*ian 1 amazon-web-services amazon-cognito

我已经使用Cognito SDK完成了许多get/set属性工作客户端,但现在我需要能够通过Lambda函数(在step函数中)从后端修改用户的自定义属性.

但是在该过程的客户端版本中,我需要检索当前Cognito用户,因为他们之前已经过身份验证.这是代码:

var poolData = this.poolData;
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
var cognitoUser = userPool.getCurrentUser();
if (cognitoUser != null) {
    cognitoUser.getSession(function(err, session) {
      var attributeList = [];
      var attribute = {
          Name : attr,
          Value : value
      };
      var attribute = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(attribute);
      attributeList.push(attribute);
      console.log("attributeList", attributeList);

      cognitoUser.updateAttributes(attributeList, function(err, result) {
        callback(err, result);
      });
    });
}
Run Code Online (Sandbox Code Playgroud)

但在后端版本中,我在技术上管理用户.

那么,我如何从lambda函数修改用户的属性数据?用户不一定先登录的地方?

doo*_*uck 5

您指出时无法更新用户的属性,因为您没有该用户的令牌.

而是使用adminUpdateUserAttributeson CognitoIdentityServiceProvider参数中的用户名并更新属性.

这将要求您对Lambda执行角色拥有正确的权限,因为它将用于SDK调用.因此,您需要lambda的权限才能编辑coginito属性.

呼叫文档:adminUpdateUserAttributes

  • Cognito dev在这里,这是正确的答案. (2认同)