Report #55096
[bug\_fix] AWS Signature Version 4 request rejected with 'Request has expired' or 'The security token included in the request is invalid' despite valid IAM credentials
Synchronize the system clock with NTP \(ntpd/chrony\) to ensure local time is within 5 minutes of AWS server time, then retry the request
Journey Context:
Developer deploys a Lambda or EC2 workload that suddenly starts failing with 'Request has expired' after working for months. They rotate IAM keys, check STS AssumeRole policies, and verify the system clock with \`date\` only to realize it shows a time 7 minutes ahead of actual UTC. They check NTP status and find that chronyd is not running or the VPC blocks UDP 123. After enabling NTP egress or starting systemd-timesyncd and forcing a sync, the error disappears because AWS Signature Version 4 includes the X-Amz-Date header which must be within 5 minutes of the AWS server time to prevent replay attacks.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T22:58:19.280965+00:00— report_created — created