Node.js AWS cognito:AdminUpdateUserAttribute不工作且未给出错误,我是否遗漏了什么?

Node.js AWS cognito:AdminUpdateUserAttribute不工作且未给出错误,我是否遗漏了什么?,node.js,aws-sdk,amazon-cognito,Node.js,Aws Sdk,Amazon Cognito,我无法让Cognito的AdminUpdateUserAttribute正常工作。cli可以正常工作,我可以让用户添加/更改它们(不希望如此,但希望看到它正常工作) 我在lambda函数上使用AWS管理的策略AmazonCognitoPowerUser,lambda正在触发,是否有我遗漏的东西?这听起来很简单,看起来很简单,但它不起作用 还有一种方法可以获得默认的创建日期,而不必自己创建 const AWS = require('aws-sdk'); const cognitoidentitys

我无法让Cognito的AdminUpdateUserAttribute正常工作。cli可以正常工作,我可以让用户添加/更改它们(不希望如此,但希望看到它正常工作)

我在lambda函数上使用AWS管理的策略AmazonCognitoPowerUser,lambda正在触发,是否有我遗漏的东西?这听起来很简单,看起来很简单,但它不起作用

还有一种方法可以获得默认的创建日期,而不必自己创建

const AWS = require('aws-sdk');
const cognitoidentityserviceprovider =  new AWS.CognitoIdentityServiceProvider();

exports.handler = async (event) => {
    cognitoidentityserviceprovider.adminUpdateUserAttributes(
  {
    UserAttributes: [
      {
        Name: 'custom:Date_Created',
        Value: new Date().toString() 
      }
      ....
    ],
    UserPoolId: " the correctpool id",
    Username: "dagTest"
  },
  function(err, data) { 
     if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);        
}
)};

// no errors and returns nothing as it says it should.

我猜这是因为您没有等待结果,lambda在调用
adminUpdateUserAttributes()
后终止,并且不等待它返回

我建议你改打基于承诺的电话,试试看

exports.handler = async (event) => {
  try{
    // no callback here
    const data = await cognitoidentityserviceprovider
      .adminUpdateUserAttributes(attributes)
      .promise()
    console.log('success', data)
  } catch(error) {
    console.error('error', error)
  }
)}

这个答案节省了我很多时间。谢谢你提供。您知道为什么需要“promise()”行吗?我已经测试并发现它确实是必需的。但是为什么呢?“try/catch”+“await”是否足以确保在updateUserAttributes函数运行之前Lambda不会完成?我不完全确定,但SDK的API需要回调。如果你不给承诺打电话,结果就不会被消费掉。因此,需要caling promise是AWS SDK开发人员的设计决策。谢谢。听到这些很有帮助。