Я пытаюсь добавить пользователя a в группу пула пользователей cognito из лямбды, которая получает подтверждение после запуска. Вот код этой лямбды:
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);
}
Я точно знаю, что эта лямбда запускается, потому что я вижу, что "выполнено" регистрируется в CloudWatch. Тем не менее, вызов adminAddUserToGroup
, похоже, не проходит вообще, так как ни сообщение об ошибке, ни сообщение об успехе не регистрируются.
Причина, по которой я пытаюсь это сделать, заключается в том, что я могу предоставить группам разные роли для доступа к внутренним ресурсам. Например, я мог бы иметь группу Admin
с ролью CanWriteToS3
и группу Customer
с ролью CanReadFromS3
и добавлять или удалять пользователей из групп по мере необходимости.
Я подозреваю, что одной из проблем этой лямбды является то, что ей не хватает правильных разрешений для добавления и удаления пользователей из группы.
Это роль, придаваемая лямбде:
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 пула пользователей cognito для ресурса, но я искал в Интернете и не могу найти никакой документации по ARN групп пула пользователей cognito.
Какова бы ни была проблема, я не могу ее диагностировать, так как мой звонок на adminAddUserToGroup
, похоже, не проходит вообще.