AWS Cognito将用户从Lambda添加到组

时间:2019-10-29 19:19:32

标签: amazon-web-services aws-lambda amazon-cognito

诚然,这是我第一次尝试使用Cognito做任何事情,但是我无法通过lambda将用户添加到用户组中。这是lambda代码:

var AWS = require('aws-sdk');
var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider({apiVersion: '2016-04-18'});

exports.handler = (event, context, callback) => {

    var params = {
        GroupName: 'ROLE_ADMIN',
        // UserPoolId: 'arn:aws:cognito-idp:us-east-1:23453453453:userpool/us-east-1_XXX',
        UserPoolId: 'us-east-1_XXX',
        // Username: 'user@email.com'
        Username: 'ec12f604-a83c-4c76-856b-3acd9ca70562'
      }

console.log('before')
  cognitoidentityserviceprovider.adminAddUserToGroup(params, function(err, data) {
    console.log(params)
    if (err) console.log("Error");
    else     console.log("Success");
  });

  console.log('after')

  console.log("Executed.");

  context.succeed(event);
};

我已将AWS资源添加到lambda

Amazon CloudWatch日志 Amazon Cognito身份 Amazon Cognito同步 Amazon Cognito用户池 亚马逊SNS 身份和访问管理

这是输出:

  

功能日志:START RequestId:e6fb3c51-3928-40e1-b0c4-f7a2d9054ef0   版本:$ LATEST   2019-10-29T19:04:58.516Z e6fb3c51-3928-40e1-b0c4-f7a2d9054ef0之前的信息   2019-10-29T19:04:59.017Z e6fb3c51-3928-40e1-b0c4-f7a2d9054ef0之后的信息   2019-10-29T19:04:59.018Z e6fb3c51-3928-40e1-b0c4-f7a2d9054ef0 INFO已执行。   END RequestId:e6fb3c51-3928-40e1-b0c4-f7a2d9054ef0 REPORT RequestId:   e6fb3c51-3928-40e1-b0c4-f7a2d9054ef0时长:657.73 ms已结算   持续时间:700 ms内存大小:128 MB使用的最大内存:37 MB初始化   持续时间:464.08 ms

我没有看到被调用cognitoidentityserviceprovider.adminAddUserToGroup,并且测试运行了,但是看起来没有任何用途被添加到ROLE_ADMIN组中。将用户添加到组中应该怎么做?

任何输入将不胜感激...谢谢。

1 个答案:

答案 0 :(得分:0)

如您所见,您看不到SuccessError日志。

操作adminAddUserToGroup在完成之前已被取消,因为您立即调用context.succeed(event)kill函数。

如何解决,只需等到操作完成,然后kill函数即可。一般来说,我们有2个选项:

  1. 使用callback功能(建议)正确操作:
var AWS = require('aws-sdk');
var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider({ apiVersion: '2016-04-18' });

exports.handler = (event, context, callback) => {

  var params = {
    GroupName: 'ROLE_ADMIN',
    // UserPoolId: 'arn:aws:cognito-idp:us-east-1:23453453453:userpool/us-east-1_XXX',
    UserPoolId: 'us-east-1_XXX',
    // Username: 'user@email.com'
    Username: 'ec12f604-a83c-4c76-856b-3acd9ca70562'
  }

  console.log('before')
  cognitoidentityserviceprovider.adminAddUserToGroup(params, function (err, data) {
    console.log(params)
    if (err) console.log("Error");
    else console.log("Success");

    // when the action finished
    console.log('after');

    console.log("Executed.");

    context.succeed(event);
  });
};

  1. 向Lambda函数讲解wait until the call stack is clear:在函数的第一行(在声明context.callbackWaitsForEmptyEventLoop = true变量之前)插入params