gpt4 book ai didi

amazon-web-services - 如何从 AWS Lambda 将用户添加到 Cognito 用户池组?

转载 作者:行者123 更新时间:2023-12-03 00:48:50 24 4
gpt4 key购买 nike

我正在尝试从确认后触发的 lambda 将用户 a 添加到 cognito 用户池组。这是该 lambda 的代码:

    export async function postAuth(event, context, callback) {
var AWS = require('aws-sdk');
var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider({apiVersion: '2016-04-18'});

var params = {
GroupName: process.env.S3_GROUP_NAME,
UserPoolId: event.userPoolId,
Username: event.userName
};

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

console.log("Executed.");

context.succeed(event);

}

我知道这个 lambda 会被触发,因为我可以看到“执行”已记录在 CloudWatch 上。但是,对 adminAddUserToGroup 的调用似乎根本没有完成,因为错误消息和成功消息都没有被记录。

我尝试这样做的原因是我可以授予组不同的角色来访问后端资源。例如,我可以有一个具有角色 CanWriteToS3 的组 Admin 和一个具有角色 CanReadFromS3 的组 Customer 并添加或根据需要从组中删除用户。

我怀疑此 lambda 的问题之一是它缺乏在组中添加和删除用户的正确权限。

这是附加到 lambda 的角色:

    GroupManagementRole:
Type: AWS::IAM::Role
Properties:
RoleName: GroupManagementRole
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Principal:
Service: [lambda.amazonaws.com]
Action: sts:AssumeRole
Policies:
- PolicyName: "GroupManagementPolicy"
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action:
- logs:CreateLogGroup
- logs:CreateLogStream
- logs:PutLogEvents
Resource:
- 'Fn::Join':
- ':'
-
- 'arn:aws:logs'
- Ref: 'AWS::Region'
- Ref: 'AWS::AccountId'
- 'log-group:/aws/lambda/*:*:*'
- Effect: "Allow"
Action: ["cognito-idp:AdminAddUserToGroup", "cognito-idp:AdminRemoveUserFromGroup"]
Resource:
Fn::Join:
- ""
- - "arn:aws:cognito-idp:us-east-1:XXXXXXXXXXX:userpool/us-east-1_XXXXXXX/*"

我不确定是否应该使用认知用户池的 arn 来获取资源,但我在线搜索后找不到任何有关认知用户池组 ARN 的文档。

无论问题是什么,我都无法诊断它,因为我对 adminAddUserToGroup 的调用似乎根本没有通过。

最佳答案

主要问题是您将函数定义为异步函数。如果您定义异步函数,则不应在主体中使用回调。

请确保在函数体中使用 promise 版本。

try {
await cognitoISP.adminAddUserToGroup(params).promise();
} catch (error) {
console.error(error);
}

像这样

关于amazon-web-services - 如何从 AWS Lambda 将用户添加到 Cognito 用户池组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51144109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com