Amazon web services AWS Cognito从Lambda向组添加用户

Amazon web services AWS Cognito从Lambda向组添加用户,amazon-web-services,aws-lambda,amazon-cognito,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) =>

诚然,这是我第一次尝试用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日志 亚马逊认知身份 亚马逊Cognito同步 amazoncognito用户池 亚马逊社交网站 身份和访问管理

以下是输出:

功能日志:启动请求ID:e6fb3c51-3928-40e1-b0c4-f7a2d9054ef0 版本:$最新 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信息已执行。 结束请求ID:e6fb3c51-3928-40e1-b0c4-f7a2d9054ef0报告请求ID: e6fb3c51-3928-40e1-b0c4-f7a2d9054ef0持续时间:657.73毫秒计费 持续时间:700毫秒内存大小:128 MB最大使用内存:37 MB初始 持续时间:464.08毫秒

我没有看到的是调用了
cognitoidentityserviceprovider.adminAddUserToGroup
,并运行了测试,但看起来没有向
ROLE\u ADMIN
组添加任何用法。要将用户添加到组中,我应该做什么


任何意见都将不胜感激。。。谢谢。

正如您所看到的,您无法看到
成功
错误
日志

操作
adminAddUserToGroup
在完成之前已被取消,因为您调用了
context.success(event)
以立即杀死该函数

如何解决,只需等待操作完成,然后
kill
函数。一般来说,我们有两种选择:

  • 正确使用
    回调
    功能(推荐):

  • 告诉Lambda函数
    等待调用堆栈清除
    :在函数的第一行插入
    context.callbackaitsforeptyeventloop=true
    (在声明
    参数
    变量之前)

  • 不要太迂腐,但你能明确说明哪一个是选项一,哪一个是选项二吗?我假设文本框中的代码都是第一个选项,告诉函数等待调用堆栈清除是选项2?@StillLearningToCode ohh,你说得对,我更新了答案!谢谢
    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);
      });
    };