WSL2 で時刻がめちゃめちゃになって AWS認証情報が Signature expired になる

WSL2 Ubuntu 20.04 で serverless deploy をしようとしたところ以下のエラーに遭遇しました。

$ serverless deploy

Deploying aws-python-http-api-project to stage dev (ap-northeast-1)

✖ Stack aws-python-http-api-project-dev failed to deploy (5s)
Environment: linux, node 18.12.1, framework 3.27.0, plugin 6.2.3, SDK 4.3.2
Credentials: Local, "talkeyboid-serverless-user" profile
Docs:        docs.serverless.com
Support:     forum.serverless.com
Bugs:        github.com/serverless/serverless/issues

Error:
Signature expired: 20230205T195512Z is now earlier than 20230207T123422Z (20230207T124922Z - 15 min.)

署名の時刻がかなり怪しい。

Ubuntu 時刻と Windows 時刻を確認。

$ date
Mon Feb  6 04:56:54 JST 2023
>date
現在の日付: 2023/02/07

>time
現在の時刻: 21:51:12.03

めちゃくちゃずれてる???

ということで、NTP サーバ同期します。こんなにずれていてはしょうがないので強制一発同期(-b)です。

$ sudo apt install ntpdate
$ sudo ntpdate -b ntp.nict.jp
$ date
Tue Feb  7 21:54:01 JST 2023

うまく同期できたので再度 serverless deploy

$ serverless deploy

Deploying aws-python-http-api-project to stage dev (ap-northeast-1)

✔ Service deployed to stack aws-python-http-api-project-dev (129s)

functions:
  hello: aws-python-http-api-project-dev-hello (85 kB)

無事にデプロイすることができました。

なんでこんなにもずれるのか、WSL2 のカーネル Hyper-V 周りだそうです(あまり詳しくないので首を突っ込まない)。

qiita.com