Является ли настраиваемый атрибут в пуле пользователей Cognito подходящим местом для хранения динамической информации о пользователях?

В документации Cognito AWS говорится:

Каждый настраиваемый атрибут: нельзя удалить или изменить после добавления в пул пользователей.

От: https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html#user-pool-settings-custom-attributes

Я считаю, что они имеют в виду имя настраиваемого атрибута, а не само значение.

Таким образом, значение может быть изменено, например, с помощью лямбда-функции. Допустим, мы храним очки верности для каждого пользователя на нашем веб-сайте электронной коммерции.

Подходит ли настраиваемый атрибут для хранения такой информации? Или мне следует создать новую таблицу DynamoDB, связанную с UserId в пользовательском пуле?


person osotorrio    schedule 30.05.2018    source источник


Ответы (1)


Вы, конечно, можете сохранить эту информацию в настраиваемом атрибуте Cognito. Если бы вы сделали это, я бы подумал о двух вещах:

1) Убедитесь, что клиент пула пользователей Cognito, который используется для аутентификации в пуле пользователей, не имеет разрешения на запись в этот атрибут. В противном случае злоумышленник мог написать код для аутентификации в пользовательском пуле и присвоить себе столько очков верности, сколько они хотели. Поэтому вы можете подумать о том, чтобы скрыть обновление настраиваемого атрибута за службой.

2) В зависимости от того, как часто вам нужно обновлять этот атрибут, и вашей общей схемы использования Cognito, вы можете столкнуться с ошибками RequestLimitExceeded при использовании Cognito updateAttributes API. Почти каждый раз, когда я пытался использовать Cognito в качестве основного хранилища данных для пользовательской информации, меня ограничивали. Поддержка AWS увеличит ваши пределы, но ошибка возникает без предупреждения, что не очень хорошо в производственной среде. Я неизменно заканчиваю тем, что по умолчанию использую таблицу DynamoDB. Конечно, это был только мой опыт, так что YMMV

person Brian Winant    schedule 30.05.2018
comment
Спасибо за обмен вашего опыта. Знаете ли вы, является ли этот RequestLimitExceeded индивидуальным для пользователя или общим лимитом в Cognito? - person osotorrio; 30.05.2018
comment
Это общий лимит, привязанный к вашей учетной записи AWS. - person Brian Winant; 31.05.2018