[Rails] 時計のズレが原因でS3への画像アップロードが失敗した

ある日のこと、Railsアプリの開発中に、carrierwave + fog を使ってS3に画像をアップロードしようとするとエラーが発生するようになってしまいました。環境は以下のとおり。

  • Rails 3.2.14
  • carrierwave 0.7.1
  • fog 1.3.1

ログには以下の様なエラーメッセージが出力されていました。

よく見ると「The difference between the request time and the current time is too large.」と書いてありますね。

試しに、開発用サーバ(Vagrantで動いているCent OS)を時刻を調べてみると、時計が実際の時刻からずれていることが判明。

開発用サーバにntpdをインストールし、時計をズレが修正されたあとに、再度画像のアップロードをためしてみると、今度は正常に動くようになりました。

まとめ

今回得た教訓は、

  • 開発用サーバでも時計合わせはしっかり行うようにする

ということですね。うっかり忘れてしまいがちですが、忘れないようにしましょう。

それでは!

参考URL

WEBアプリケーション研究室 開発ノート [AWS]AmazonS3にアップロードでRequestTimeTooSkewedのエラー