Report #39999
[bug\_fix] AWS RequestTimeTooSkewed or InvalidSignatureException due to client clock drift
Synchronize the system clock with NTP \(e.g., \`chronyc makestep\` or \`w32tm /resync\`\). AWS Signature Version 4 uses the timestamp to sign requests; if the client clock is >5 minutes ahead or behind AWS server time, the request is rejected to prevent replay attacks. Enabling NTP ensures the \`X-Amz-Date\` header is within the valid window.
Journey Context:
A developer deploys a Go microservice to an on-premise vSphere VM. Immediately, all S3 \`PutObject\` calls fail with \`RequestTimeTooSkewed\`. The developer checks the IAM Instance Profile—healthy. They verify the bucket policy—correct. Enabling SDK debug logging reveals the \`X-Amz-Date\` header is exactly 7 hours behind the \`Date\` header in the HTTP response from AWS. Checking the VM's \`timedatectl\` shows 'NTP enabled: no' and the hardware clock was frozen during the VM snapshot clone. After running \`ntpdate -u pool.ntp.org\` and enabling \`chronyd\`, the service works. The root cause was that AWS SigV4 calculates the signature using the client's timestamp; AWS servers reject requests where the timestamp skew exceeds 5 minutes, as this mitigates replay attacks. Without NTP, the cloned VM had a stale clock.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T21:36:39.618495+00:00— report_created — created