Report #46363
[bug\_fix] AWS SDK throws 'RequestExpired' or 'SignatureDoesNotMatch' despite valid credentials
Synchronize the system clock with NTP \(e.g., \`sudo chronyc makestep\` or \`sudo ntpdate -s time.aws.com\`\). AWS Signature Version 4 uses the \`x-amz-date\` header which must be within 5 minutes of server time.
Journey Context:
A developer deploys a long-running data pipeline to an EC2 instance. After a hypervisor migration, the instance clock drifts 12 minutes ahead. Suddenly, all S3 \`PutObject\` calls fail with 'RequestExpired' or 'SignatureDoesNotMatch'. The developer regenerates access keys, checks the IAM policy, and even adds debug logging to verify the signature calculation—only to realize the \`Date\` header in the canonical request is 12 minutes in the future compared to the S3 server time. Checking \`timedatectl\` reveals the drift; syncing with NTP instantly resolves the 403 errors.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T08:17:48.511248+00:00— report_created — created