AWS开发工具包-如何为用户池中的listGroups创建Lambda函数?

时间:2020-06-25 18:47:25

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

我是AWS Lambda Functions的新手,我想创建一个新函数以从Amplify生成的Cognito用户池中获取用户组,我看到了很多示例,但到目前为止我的函数没有用,我认为我可能不确定某些权限,我不确定。这是我的功能:

const AWS = require('aws-sdk');

exports.handler = async (event) => {
    let cognito = new AWS.CognitoIdentityServiceProvider();
    const params = { UserPoolId: 'us-east-1_xxxxxxx'};
    
    let res = { status: 'no changes' };
    
    cognito.listGroups(params, function(err, data) {
      console.log('inside of response')
      if (err) {
        res = { error: err };
      }
      else {
        res = { data: data };
      }
      
    })
    
    const response = {
      statusCode: 200,
      body: JSON.stringify(res),
    };
    return response; 
};

我已经在this answer here

之后添加了权限

我正在跟踪the API docs here来调用Cognito listGroups方法。

对于权限,与此功能关联的角色具有以下策略: enter image description here

我正在在线进行所有操作,并且仅通过“测试”按钮进行测试,到目前为止,我得到的唯一响应是:{ status: 'no changes' },甚至没有显示函数内部的日志。 / p>

如何使此功能适用于我的Amplify Cognito用户投票中的listGroup?是否缺少任何权限?

类似的问题:

1 个答案:

答案 0 :(得分:1)

我的经理让它正常工作:

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


exports.handler = async (event) => {
    const params = { UserPoolId: 'us-east-1_xxxxxxx'};
    
    let res = { status: 'no changes' };
    
    await cognito.listGroups(params, function(err, data) {
      if (err) {
        res = { error: err };
      }
      else {
        res = { data: data };
      }
    }).promise();
    
    
    const response = {
      statusCode: 200,
      body: JSON.stringify(res),
    };
    return response; 
};

在认知通话结束时我错过了await.promise()