Report #17049
[bug\_fix] An error occurred \(RequestTimeTooSkewed\) when calling the PutObject operation: The difference between the request time and the current time is too large.
Synchronize the system clock using NTP \(Network Time Protocol\) via \`sudo ntpdate -u time.aws.com\` or enable systemd-timesyncd/chronyd. Root cause: AWS Signature Version 4 \(SigV4\) includes a timestamp in the request signature. AWS servers reject requests where the client timestamp differs from server time by more than 5 minutes \(or 15 minutes for some services\) to prevent replay attacks.
Journey Context:
Developer is running a Python boto3 script on an old VM or a Raspberry Pi that has been suspended/resumed. The script attempts to upload a file to S3. It fails with RequestTimeTooSkewed. Developer checks the error timestamp and compares it to \`date\` output on their machine, realizing the VM clock is 3 days behind. They first try to restart the AWS CLI configuration thinking it's a credential issue. They check ~/.aws/credentials and verify keys are valid. They try exporting AWS\_ACCESS\_KEY\_ID again. They then notice the clock skew warning in the boto3 logs \(if debug logging is enabled\). The fix requires sudo privileges to run ntpdate or systemctl restart systemd-timesyncd. After syncing the clock, the signature calculated by botocore's SigV4Signer matches the server's expected signature within the valid time window, and the S3 PUT succeeds.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T04:20:19.334101+00:00— report_created — created