AWS Lambda函数问题

时间:2019-06-06 07:41:47

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

我最近开始尝试使用AWS Lambda函数。单击 Test 按钮后,这就是Lambda控制台的执行结果窗口中显示的信息。

Response:
{
  "statusCode": 500,
  "body": "{\"message\":\"Missing credentials in config\",
  \"code\":\"CredentialsError\",\"time\":\"2019-06-06T07:11:53.538Z\",
  \"originalError\":{\"message\":\"No credentials to load\",
  \"code\":\"CredentialsError\",\"time\":\"2019-06-06T07:11:53.538Z\"}}"
}

这是Lambda函数源代码:

var AWS = require('aws-sdk/dist/aws-sdk-react-native');

AWS.config.update({
    region:'ap-northeast-1'
});

exports.handler = async (event,context) => {
    var params = {
        UserPoolId: 'ap-northeast-1MY-POOL-ID',
        AttributesToGet: [
            'email'
        ],
        Limit: '2',
    };

    var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();

    try {
      const data = await cognitoidentityserviceprovider.listUsers(params).promise()
      const response = {
        inBound: event.sub,
        statusCode: 200,
        body: JSON.stringify(data)
      }
      return response;
    } catch (err) {
        const response = {
            inBound: event.sub,
            statusCode: 500,
            body: JSON.stringify(err)
        };
        return response;
    }
};

由于我已经设置了角色和策略,所以我不确定错误消息指的是哪种凭据和哪种配置。

1 个答案:

答案 0 :(得分:1)

首先,将现有的import语句替换为以下内容。

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

第二,按如下所示,授予Lambda角色的认知用户列表权限。

{
  "Effect": "Allow",
    "Action": [
        "cognito-idp:ListUsers"
    ],
    "Resource": [
        "arn:aws:cognito-idp:ap-northeast-1:AWS_ACCOUNT_NO:userpool:*"
    ]
}

注意:将AWS_ACCOUNT_NO替换为您的实际AWS帐号。