家の開発機が突然以下のエラーを吐くようになった。
$ aws-vault exec user01 -- aws s3 ls aws-vault: error: exec: Failed to get credentials for user01: operation error STS: AssumeRole, https response error StatusCode: 403, RequestID: 6a84e405-fbf4-4362-848d-3ff14c9dca32, api error SignatureDoesNotMatch: Signature expired: 20250517T105618Z is now earlier than 20250517T111643Z (20250517T113143Z - 15 min.)
つい数時間前まで使っていたのになぜ・・・・
原因
エラーメッセージにもあるように、生成されたシグネチャーがおかしいとのこと。これってAWSに限らず、何かしらのAPIをたたくときによく見るやつ。
で、時間を確認してみたら確かに時間がずれていた。
$ timedatectl status
Local time: Sat 2025-05-17 10:58:05 UTC
Universal time: Sat 2025-05-17 10:58:05 UTC
RTC time: Sat 2025-05-17 10:58:05
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
UTCでわかりづらかったのでついでにJSTに直しておいた。NTPでの同期はONになっていたのでよかった。
$ sudo timedatectl set-timezone Asia/Tokyo
改めて時刻関連の情報取得。
$ sudo timedatectl status
Local time: Sat 2025-05-17 20:00:36 JST
Universal time: Sat 2025-05-17 11:00:36 UTC
RTC time: Sat 2025-05-17 11:00:37
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
少なくとも時間がずれているのでtimedatectrlにて直そうとしたが以下のエラーにてできなかった。NTP同期がONになっていると手動で設定するのはできないのね。
$ sudo timedatectl set-time '2025-05-17 20:36:10' Failed to set time: Automatic time synchronization is enabled
ってことでdateコマンドで強制的に修正。
$ sudo date -s '2025-05-17 20:36:10' Sat May 17 20:36:10 JST 2025
これで時間はあった。15分以上のずれがなければとりあえずいいので、細かい秒関連のはNTPに任せる。
$ sudo timedatectl status
Local time: Sat 2025-05-17 20:37:09 JST
Universal time: Sat 2025-05-17 11:37:09 UTC
RTC time: Sat 2025-05-17 11:37:09
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
これで治った。
まとめ
Signature~~~~とかそういうのが出てきた場合は時間がずれていないかというのを確認してみると治る場合があるので参考までに。
っていうか何で時間ずれたんだろう・・・・
それではー。
