EDIT:
IdentityId являются уникальными для каждого пользователя Cognito, как мы обнаружили вместе в ветке комментариев, но они кэшируются на устройстве и должны быть очищены при выходе из системы.Очистить через swift sdk с:
AWSCognitoIdentityProvider.Clear()
Ниже приведен мой оригинальный ответ, в котором рекомендуется использовать имя пользователя или псевдоним, который также уникален для каждого пользователя cognito, но его следует использовать только в качестве ссылки для обсуждения комментариев.Вместо этого используйте IdentityId в качестве первичных ключей dyanmodb.
END-EDIT:
Я бы порекомендовал использовать имя пользователя в качестве ключа раздела в вашей таблице DynamodB.
Вы можете получить имя пользователя из объекта AWSCognitoIdentityUser по
if let username = AWSCognitoIdentityUserPool.default().currentUser()?.username {
// do stuff with username
}
Вы также можете настроить пул пользователей на использование псевдонима пользовательского имени, чтобы пользователи могли входить через электронную почту и / или номер телефона.,В этом случае адрес электронной почты и / или номер телефона также будут уникальными, а затем, если вы предпочитаете, вы можете использовать любой из них в качестве уникального ключа раздела в своей таблице dynamicodb.Вот обзор псевдонимов в cognito.