如何检查Cognito用户池中是否存在一个组,然后创建一个不存在的组?

时间:2019-06-10 07:26:25

标签: amazon-web-services amazon-cognito

目标是将给定的用户添加到给定的组名,但是如果该组不存在,那么我需要创建该组,然后将该用户添加到该组。

 cognitoidentityserviceprovider.adminAddUserToGroup(groupParams, function(err, data) {
                if (err) {
                    if (err.message === "Group not found.") {

                        var params = {
                            GroupName: userType,
                            UserPoolId: userPoolId,
                            Precedence: 5,
                            // RoleArn: 'STRING_VALUE'
                        };
                        cognitoidentityserviceprovider.createGroup(params, function(err, data) {
                            if (err) console.log(err, err.stack); // an error occurred
                            else {
                                    cognitoidentityserviceprovider.adminAddUserToGroup(groupParams, function(err, data){
                                       if(err) {
                                           console.log(err, err.stack);
                                       } 
                                       else {
                                           console.log(data);
                                       }
                                    });
                            }
                                // successful response
                        });
                    }
                    else {
                        console.log(err, err.stack);
                    }

                } // an error occurred
                else console.log(data); // successful response
            });

此代码有效,但我担心AWS决定更改错误消息的那一天

2 个答案:

答案 0 :(得分:1)

也许您可以利用ListGroups API调用?

https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListGroups.html

列出池中的所有组,寻找要添加用户的组。如果存在,只需添加用户。如果不存在,请先创建它,然后添加用户。

答案 1 :(得分:0)

我使用error.code“ ResourceNotFoundException”代替了error.mesaage“未找到组”,因为它更可靠并且不太可能被AWS更改。