Недавно начал разбираться с Amazon Web Services для мобильных приложений. Первым делом я хотел разобраться с сервисом идентификаций AWS Cognito Identity. Данный сервис позволяет пользоваться сервисами AWS пользователем моего приложения, причем как прошедшим идентификацию, так и не прошедшим. На первом этапе я решил попробовать просто инициализироваться как гость и добавить запись в набор данных моего пула пользователей. Но возникли некоторые трудности…
Примеры как это сделать можно найти на официальном сайте, я про это говорить не буду, так как статья не про это.
Когда я пытался добавить датасет следующим образом:
var syncClient = AWSCognito.defaultCognito()
var dataset:AWSCognitoDataset = syncClient.openOrCreateDataset(my_dataset.text)
dataset.setString(my_login.text, forKey: my_email.text)
dataset.synchronize()
println(dataset.getAll())
то возникала следующая ошибка (в консоле):
Ошибка «Signature not yet current: 20150207T115013Z is still later than 20150207T114517Z (20150207T114017Z + 5min.)» говорит, что расхождение времени на моей локальной машине (где находится локальная БД в которой хранятся данные до синхронизации с сервером) больше 5 минут. Поэтому я не могу синхронизироваться.
Теперь надо сказать как я работаю. У меня стоит Windows 7x64, на ней стоит виртуалка VMWare 10. На этой виртуалке стоит OS X Mavericks в которой я и работаю.
Первое что я сделал — посмотрел время на моей виртуальной машине:
Оно оказалось синхронизированным с интернетом, то есть все в порядке. Закрыл окно настройки времени, опять запустил свою программу. Та же ошибка. Поставил время в ручную, как на сервере. Та же ошибка… И только потом (после долгих хождений по интернетам в поисках истины) я заметил, что когда я закрываю окно настройки времени, то через несколько секунд время перескакивает на 10 минут вперед! Оказалось, что несмотря на синхронизацию с интернетом времени операционной системы внутри виртуальной машины время берется из операционной системы на которой запущена виртуальная машина!
И тут я вспомнил, что некоторое время назад Дмитрий Анатольевич Медведев отменил переход на зимнее время. Моя же винда (обновления у меня отключены) упорно на него переходила, поэтому я не долго думая отменил синхронизацию времени с интернетом и поставил время в ручную.
В итоге с того момента у меня накопилась погрешность в +10 минут. И собственно это время и передавалось в мою виртуальную ось.
Теперь же великий повелитель времени Дмитрий Анатольевич вернул время назад, я включил синхронизацию и все стало нормально.
PS: Возможно кому-то это покажется детской ошибкой, но что было то было.