2013-09-09 6 views
32

Я использую aws-sdk-php, то SesClient конкретно, я уже развернуто приложение на сервере клиента (размещенном в DreamHost), и я получаю эту ошибку:AWS SDK Error - Подпись еще не ток

Signature not yet current: 20130909T170846Z is still later than 20130909T170823Z (20130909T170323Z + 5 min.) 

Я предполагаю, что время сервера неверно сконфигурировано, я пытаюсь связаться с DH, чтобы проверить это, я уверен, что это займет некоторое время.

Любые другие идеи? Приложение было развернуто много раз раньше, и я никогда не видел эту ошибку.

+0

Если кто-то ищет, вот руководство Amazon для решения проблемы https://aws.amazon.com/premiumsupport/knowledge-center/system-clock-drift-ubuntu/ – user1079810

ответ

31

Кажется, что это просто системная дата расконфигурация, проверить это

https://forums.aws.amazon.com/thread.jspa?threadID=103764#

Этот парень был один и тот же вопрос.

+0

Я знаю, что причиной отказа является время на выходе из-за синхронизации, я удивлен, так это то, что это первый раз, когда я попал в эту проблему, являясь общей проблемой на стороне сервера (часы на несколько минут я имею в виду). – xmarcos

+0

Да. Вам нужно синхронизировать часы на своем веб-сервере. http://google.com/search?q=dreamhost+ntp –

+0

Дело в том, что у меня нет контроля над этим сервером, и я беспокоюсь, потому что, если я распространю приложение, которое клиент собирается развернуть на общем веб-сервере I должны обязательно обеспечить обходное решение. Я предполагаю, что DH - это не единственный общий хост с плохой синхронизацией времени. В настоящее время я изучаю, как отправить запрос с использованием смещения по времени из SDK (может быть?) – xmarcos

38

У меня была аналогичная проблема. Я запускал свой CI-сервер из экземпляра Ubuntu EC2 и у меня время синхронизации. Я синхронизировал время с NTP suing

sudo ntpdate ntp.ubuntu.com 

Он начал нормально работать.

+1

Это отличная команда. Помогал. –

4

Я только столкнулся с той же проблемой с приложением Django, развернутым в AWS. Ошибка сайта была очень неопределенной, но журнал ошибок, который был отправлен мне по электронной почте, сказал: «JSONResponseError: JSONResponseError: 403 Запрещено {'message': 'Подпись еще не указана: 20150224T185106Z по-прежнему находится ниже 20150224T185033Z (20150224T184533Z + 5 мин.). '} "после пути к файлу, указывающего на Boto и Elastic Transcoder. Выполните следующие действия на сервере:

  1. ntpq -p сообщит вам, если вы нтп установили
  2. Если у вас нет нтп, сделать sudo apt-get install ntp
  3. sudo service ntp stop
  4. sudo ntpdate -s us.pool.ntp.org будет согласовывать время вашего сервера с атомным (это необходимо скорректировать в вашей стране)
  5. sudo service ntp start

Удачи! Вы можете узнать больше здесь: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html#configure_ntp

2

Просто убедитесь, что время вашего сервера составляет 5 минут от текущего времени. проверьте время AM или PM.

2

Я столкнулся с подобной проблемой и после некоторого расследования нашел основную причину.

Причина была в том, что мой часовой пояс экземпляра/сервера AWS и мой часовой пояс локальной системы, откуда я звонил RESTful, были разными. AWS предполагает, что запрос также производится из одного и того же часового пояса (он просто игнорирует разрыв в 5 минут, не более того). Я был в состоянии проверить это, сделав пробный звонок из консоли AWS и проверки деталей в журналах (давая ниже Java сниппета)

private String getDateString() { 
    Calendar cal = Calendar.getInstance(); 
    DateFormat dfm = new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); 
    dfm.setTimeZone(TimeZone.getTimeZone("UTC")); //server timezone 
    return dfm.format(cal.getTime()); 
} 
5

Я была такая же проблема в последнее время.Я сделал следующее

sudo ntpd -q -g 

Опция -g необходима, если ваши часы выход синхронизации. Он заставляет ntpd продолжать, пока он не синхронизируется.