VirtualBox等の仮想化環境でawsコマンド(aws-cli)やaws-apiライブラリを使用したシステムよりAWSの各種APIへアクセスすると、次のようにエラーが表示される場合があります。
An error occurred (RequestTimeTooSkewed) when calling the ListBuckets operation: The difference between the request time and the current time is too large.
特に、ノートPCの場合はその現象が顕著に発生する傾向があります。
原因
ノートPCでVM起動中にスリープ(サスペンド、ハイバネーション)を行うと、スリープ復帰後に時刻ずれが生じる場合があります。
スリープ復帰後は時刻が自動的に補正されない場合があるため、次のいずれかの対応が必要となります。
A)手動で時刻補正を行う
B)VMを一旦停止(シャットダウン)してから起動し直す
対応
ここでは、Aの方法をもとに説明を進めます。
1.時刻が正しいか確認します
Linux(VM)の日時を確認します。
# date
Thu Apr 18 00:05:58 JST 2019
以上を見てみると、ホストOSとVMで異なる時刻を示していることがわかります。
2.時刻を合わせます
ntpdateで時刻を合わせます。(以下はNICTのタイムサーバを使用する例です)
# ntpdate ntp.nict.jp
上記コマンドを実行すると、次のように結果が返され、時刻が補正されます。
18 Apr 01:21:42 ntpdate[15103]: step time server 133.243.238.243 offset 4325.436029 sec
3.awsコマンドを実行する
awsコマンドで何らか実行を行い、意図した結果が返ってくれば解決となります。