Как изменить личность пользователя, обращающегося к DynamoDB в iOS SDK / Swift
У меня есть приложение (Swift), которое ведет себя так:
- Изначально пользователю приложения не нужно входить в систему. Этот анонимный пользователь может выполнять определенные операции только для чтения на DynamoDB (я понимаю, что это не очень хороший дизайн, но это то, что есть, я не могу изменить эту часть прямо сейчас)
- Но когда пользователю требуются дополнительные привилегии, он должен войти в систему, используя учетную запись пула Cognito.
- С этого момента DynamoDB должен использовать учетные данные пользователя Cognito, а не анонимного пользователя.
Проблема в том, что, как только соединение с DynamoDB было установлено с анонимным пользователем, я не могу изменить его на что-либо другое.
DynamoDB доступен следующим образом:
let dynamoDbObjectMapper = AWSDynamoDBObjectMapper.default()
let queryExpression = AWSDynamoDBQueryExpression()
queryExpression.keyConditionExpression = //etc;
// other conditions
dynamoDbObjectMapper.query(self, expression: queryExpression).continueWith(//etc
Пользователь вошел в систему с помощью контроллера входа, очень похожего на SignInViewController.swift в aws-sdk-ios-samples
Конфигурация пула также очень похожа на в AppDelegate.swift в aws-sdk-ios-samples
При доступе к таблицам БД, требующим аутентификации, я получаю сообщение об ошибке (как оно отображается в журнале трассировки AWS):
"__type": "com.amazon.coral.service # AccessDeniedException", "Message": "Пользователь: ...:accept-role/...UnAuthentic-.../CognitoIdentityCredentials не авторизован для выполнения: динамодат: Запрос на ресурсе:...
(Как видите, он все еще использует пользователя UnAuthentic.)
Итак, как мне изменить личность пользователя, который обращается к DynamoDB после входа в систему? Это вообще возможно?