🌊

WSL2(Ubuntu)と親(Windows)との時間差でAWSのAPIが認証されなかった

2024/02/18に公開

概要

Dockerで生成したフロントエンドのアプリで
AWSの認証キーが通らなかった。
原因としてはサーバーの時間がずれていて、そこで怒られていた。
日本時間に直しつつ、同期されるようにしたら通った

エラー内容

dynamoDBにアイテムの追加ができなかった。

"Error executing "PutItem" on "https://dynamodb.ap-northeast-1.amazonaws.com"; AWS HTTP error: Client error: `POST https://dynamodb.ap-northeast-1.amazonaws.com` resulted in a `400 Bad Request` response:{"__type":"com.amazon.coral.service#InvalidSignatureException","message":"Signature expired: 20240217T004403Z is now ear (truncated...) InvalidSignatureException (client): Signature expired: 20240217T004403Z is now earlier than 20240218T021910Z (20240218T023410Z - 15 min.) - {"__type":"com.amazon.coral.service#InvalidSignatureException","message":"Signature expired: 20240217T004403Z is now earlier than 20240218T021910Z (20240218T023410Z - 15 min.)"}"

対応

ロケールを日本に変更(そのあと一度ターミナルを閉じる)

sudo update-locale LANG=ja_JP.UTF-8

タイムゾーンをJSTに変更(東京を選択)

sudo dpkg-reconfigure tzdata

時間を同期サーバーに紐づけ

sudo ntpdate ntp.ubuntu.com

ローカルPCとの紐づけを強制

これをしないと、時間経った後にずれが生じる

sudo hwclock -s

正しい時間か確認

date

Discussion