Report #40948
[bug\_fix] The security token included in the request is expired
Synchronize the system clock to NTP \(e.g., \`sudo chronyd -q 'server pool.ntp.org'\` or \`ntpdate\`\). Root cause: AWS Signature Version 4 signs requests with an X-Amz-Date header; if the client clock is skewed >5 minutes from AWS server time, the signature is rejected as expired regardless of credential validity.
Journey Context:
Developer deploys a Go microservice to an on-premise bare-metal Kubernetes cluster. Immediately on startup, the AWS SDK v2 throws 'Request has expired' when calling S3. They rotate IAM keys—no effect. They check the STS GetCallerIdentity—same error. Enabling SDK debug logging reveals the X-Amz-Date header is 7 minutes behind the server date in the response. Checking the node with \`date\` confirms the hardware clock drifted after a power outage. Installing and enabling NTP sync fixes it instantly. The rabbit hole assumed credential expiry when it was purely clock skew.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T23:12:06.575506+00:00— report_created — created