Report #12369
[bug\_fix] Signature expired or Request has expired. The difference between the request time and the current time is too large.
Synchronize the system clock with NTP \(e.g., sudo ntpdate pool.ntp.org or timedatectl set-ntp true\). Alternatively, configure the SDK with a custom clock skew adjustment mechanism if running in an environment where NTP is unavailable.
Journey Context:
A developer deploys a data pipeline to an EC2 instance. Initially it works, but after a maintenance window, all S3 uploads fail with 'Signature expired'. The developer checks the IAM policy—unchanged. They regenerate AWS keys—no effect. They examine the instance metadata—healthy. Finally, they SSH in and run \`date\`, noticing the system time is 7 minutes behind UTC \(NTP was disabled during the maintenance\). They realize AWS Signature Version 4 includes a timestamp in the 'X-Amz-Date' header; AWS servers reject requests where the signature timestamp differs from server time by more than 5 minutes to prevent replay attacks. The SDK calculated the signature based on the client's wrong clock, causing immediate expiration on the server side. Syncing the clock with NTP fixes the skew, and requests succeed.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T15:48:56.272338+00:00— report_created — created