【问题标题】:AWS Cognito User Pool AdminCreateUser in lambda returns no error nor datalambda 中的 AWS Cognito 用户池 AdminCreateUser 不返回错误也不返回数据
【发布时间】:2020-09-19 03:50:24
【问题描述】:

我创建了一个 AWS Lambda 函数来测试新 Cognito 用户池帐户的创建,但没有在用户池中创建帐户,并且控制台日志中没有显示错误。我检查了 AWS Cloud Watch,但 Cloud Watch 也没有报错。

START RequestId: ..... Version: $LATEST
END RequestId: .....
REPORT RequestId: .....  Duration: 80.12 ms  Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 84 MB  

我将 Lambda 函数更改为更简单的函数;描述用户池。仍然没有引发错误,并且控制台中没有打印任何用户池信息。我在 describeUserPool 回调函数中添加了一个 console.log 打印,但没有打印。

lambda 函数是使用 AWS 控制台 Lambda 内联编辑器创建的。 Lambda 函数附加了 AmazonESCognitoAccess 策略(此策略具有对 Cognito 用户池的列表/读取/写入访问级别)。

谁能解释我做错了什么? 非常感谢您。

var aws = require('aws-sdk');
aws.config.update({
    accessKeyId: 'access_key_id', 
    secretAccessKey: 'secret_access_key',
    region: 'us-east-1',
    apiVersion: '2016-04-18'
});
var cognito = new aws.CognitoIdentityServiceProvider();
var params = {
    UserPoolId: 'us-region-user-pool-id'
};

exports.handler = async (event) => {
    cognito.describeUserPool(params, function(err, data) {
        console.log('hello from inside function');
        if (err) {
            console.log(err);
        } else {
            console.log(data);
        }
     });
};

如果我在 AdminCreateUser 中包含不正确的参数,它会报告错误

var aws = require('aws-sdk');
    aws.config.update({
        accessKeyId: 'access_key_id', 
        secretAccessKey: 'secret_access_key',
        region: 'us-east-1',
        apiVersion: '2016-04-18'
    });


var cognito = new aws.CognitoIdentityServiceProvider();
var params = {
    UserPoolId: 'us-region-user-pool-id'
    Username: 'someone',
    TemporaryPassword: '11223344',
    DesiredDeliveryMediums: 'EMAIL',
    MessageAction: 'SUPPRESS',
    UserAttributes: [
    {
      Name: 'Email',
      Value: 'someone@example.com'
    },
    {
        Name: 'Family_Name',
        Value: 'One'
    },
    {
        Name: 'Given_Name',
        Value: 'Some'
    },
    {
        Name: 'Phone_Number_verified',
        Value: 'True'
    },
        {
        Name: 'Email_verified',
        Value: 'True'
    }

  ],
};

exports.handler = async (event) => {

    cognito.adminCreateUser(params, function(err, data) {
        console.log('hello from inside function');
        if (err) {
            console.log(err);
        } else {
            console.log(data);
        }
     });
};

我在 Lambda 内联编辑器控制台中收到以下错误消息:

Response:
null

Request ID:
"6e50fdb4-e437-4b84-be7b-3caaeb5b0a98"

Function Logs:
    ncCredentials (/var/runtime/node_modules/aws-sdk/lib/config.js:391:24)
        at Config.getCredentials (/var/runtime/node_modules/aws-sdk/lib/config.js:411:9) {
      code: 'MultipleValidationErrors',
      errors: [
        InvalidParameterType: Expected params.DesiredDeliveryMediums to be an Array
            at ParamValidator.fail (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:50:37)
            at ParamValidator.validateType (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:232:10)
            at ParamValidator.validateList (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:99:14)
            at ParamValidator.validateMember (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:90:21)
            at ParamValidator.validateStructure (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:75:14)
            at ParamValidator.validateMember (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:88:21)
            at ParamValidator.validate (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:34:10)
            at Request.VALIDATE_PARAMETERS (/var/runtime/node_modules/aws-sdk/lib/event_listeners.js:126:42)
            at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:106:20)
            at callNextListener (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:96:12) {
          code: 'InvalidParameterType',
          time: 2020-05-31T21:59:35.116Z
        },
        InvalidParameterType: Expected params.UserAttributes[3].Value to be a string
            at ParamValidator.fail (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:50:37)
            at ParamValidator.validateType (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:232:10)
            at ParamValidator.validateString (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:154:32)
            at ParamValidator.validateScalar (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:130:21)
            at ParamValidator.validateMember (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:94:21)
            at ParamValidator.validateStructure (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:75:14)
            at ParamValidator.validateMember (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:88:21)
            at ParamValidator.validateList (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:103:14)
            at ParamValidator.validateMember (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:90:21)
            at ParamValidator.validateStructure (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:75:14) {
          code: 'InvalidParameterType',
          time: 2020-05-31T21:59:35.116Z
        },
        InvalidParameterType: Expected params.UserAttributes[4].Value to be a string
            at ParamValidator.fail (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:50:37)
            at ParamValidator.validateType (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:232:10)
            at ParamValidator.validateString (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:154:32)
            at ParamValidator.validateScalar (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:130:21)
            at ParamValidator.validateMember (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:94:21)
            at ParamValidator.validateStructure (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:75:14)
            at ParamValidator.validateMember (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:88:21)
            at ParamValidator.validateList (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:103:14)
            at ParamValidator.validateMember (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:90:21)
            at ParamValidator.validateStructure (/var/runtime/node_modules/aws-sdk/lib/param_validator.js:75:14) {
          code: 'InvalidParameterType',
          time: 2020-05-31T21:59:35.116Z
        }
      ],
      time: 2020-05-31T21:59:35.173Z
    }
    END RequestId: 6e50fdb4-e437-4b84-be7b-3caaeb5b0a98
    REPORT RequestId: 6e50fdb4-e437-4b84-be7b-3caaeb5b0a98  Duration: 122.82 ms Billed Duration: 200 ms Memory Size: 128 MB Max Memory Used: 80 MB  Init Duration: 356.12 ms    

【问题讨论】:

  • 嗨,你能看看它是否被调用。检查 CloudWatch 指标
  • 在 Lambda 控制台中触发了“测试”,Cloud Watch 确认它运行了 successfully. Timestamp Message There are older events to load. Load more. 2020-05-31T16:59:07.766-04:00 START RequestId: 1ea1741e-d9e7-4991-af9d-f72bf73b1133 Version: $LATEST 2020-05-31T16:59:08.202-04:00 END RequestId: 1ea1741e-d9e7-4991-af9d-f72bf73b1133 2020-05-31T16:59:08.202-04:00 REPORT RequestId: 1ea1741e-d9e7-4991-af9d-f72bf73b1133 Duration: 434.49 ms Billed Duration: 500 ms Memory Size: 128 MB Max Memory Used: 83 MB Init Duration: 337.21 ms。但是,Cognito 没有 CloudWatch 指标。
  • 我将函数调用改回 AdminCreateUser。这并没有产生任何 CloudWatch 日志。看起来 lambda 根本没有触发 CognitoIdentifyServiceProvider 函数调用。

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


【解决方案1】:

找到这个帖子cognito admin not giving error。 @thopaw 的建议解决了我遇到的问题。

通过将其更改为 promise() 基础,它可以按预期工作。 谢谢你们的时间。

如果有人遇到这个,下面是更新的代码。

exports.handler = async (event, context) => {
    console.log('starts');
    var data;
    try {
        const data = await cognito.adminCreateUser(params).promise();
    } catch (error) {
        console.log(error);
    }
};

【讨论】:

    猜你喜欢
    • 2017-09-07
    • 2017-03-21
    • 1970-01-01
    • 2020-01-03
    • 2020-09-03
    • 2017-10-14
    • 2018-12-17
    • 2017-04-10
    • 2016-09-22
    相关资源
    最近更新 更多