S3へのリクエストタイムが違いシードが流せない
Railsの本番環境でシードデータを入れる時に、
S3とのtimeがかけ離れているというニュアンスのメッセージが出現した。
[sirius@ip-10-0-11-191 diary_app]$ rails db:seed RAILS_ENV=production
Start inserting first seed "user" ...
rails aborted!
Aws::S3::Errors::RequestTimeTooSkewed: The difference between the request time and the current time is too large.
EC2インスタンス上ではJST
(日本標準時)を指定しているので、date
でそれ確かめてみると、たしかに、実際の時間が10:00なのにインスタンス40分近くずれていることがわかった。
これがシードデータを流すときに、S3バケットにアクセスした際に時間差がおおきすぎるのでエラーが生じたのだろう。
[sirius@ip-10-0-11-191 diary_app]$ date
2022年 5月 3日 火曜日 10:45:36 JST
おそらくサーバーが一定の時間停止していたことが原因でズレたと推測するが、どのタイミングでずれたのか調査中である。
解決策(サーバー再起動)
解決策はとても簡単で、EC2サーバーを立ち上げ直せばうまくいく。
AWSダッシュボードより、EC2インスタンスを停止
してから⇨開始
して起動し直す。
そうしてEC2上で
[sirius@ip-10-0-11-191 diary_app]$ date
2022年 5月 3日 火曜日 10:10:00 JST
とすると40分先に進んでいた時刻が戻っていることがわかる。
これでrails db:seed RAILS_ENV=production
とするとうまくいった。