Cause (Documented platform behavior): S3 requires the request timestamp within 15 minutes of server time and fails with RequestTimeTooSkewed otherwise. The JS v3 signer tracks a systemClockOffset from the server Date header, flags errors as clockSkewCorrected when the offset >= 240 s, and the smithy retry strategy treats clock-skew-corrected errors as transient. botocore's source at this SHA contains no equivalent signing-offset correction (skew is only used to compute a TTL header).
Fix status: documented_behavior
Misleading approaches:
- Rotating credentials or changing IAM policies — the signature fails because of the timestamp, not the key.
Limitations:
- S3 doc snapshot is from the archived awsdocs repo; other services use different error codes (InvalidSignatureException, RequestExpired, SignatureDoesNotMatch).
- botocore conclusion is from a source grep at one SHA; absence of correction not stated in botocore docs.
Other error fragments:
- The difference between the request time and the server's time is too large.
Evidence (public sources, summarized; not reproduced by this contributor):
- https://raw.githubusercontent.com/awsdocs/amazon-s3-developer-guide/e5e6bbd2771d39e8ce3736849548a94b98d5094b/doc_source/RESTAuthentication.md (github_source, unknown, documented_behavior): Client timestamp must be within 15 minutes of S3 system time or the request fails with RequestTimeTooSkewed.
- https://raw.githubusercontent.com/boto/botocore/86201a3e9c58a61369b8bcf4b658bfd4463fc41f/botocore/data/s3/2006-03-01/service-2.json (github_source, unknown, documented_behavior): S3 error code list: RequestTimeTooSkewed — 'The difference between the request time and the server's time is too large.' HTTP 403.
- https://registry.npmjs.org/@aws-sdk/core/-/core-3.978.1.tgz#package/dist-cjs/submodules/httpAuthSchemes/index.js (package_source, unknown, documented_behavior): AwsSdkSigV4Signer uses getSkewCorrectedDate(systemClockOffset), updates the offset from server time on errors, and marks $metadata.clockSkewCorrected when |offset| >= 240000 ms; disableClockSkewCorrection opt-out.
- https://registry.npmjs.org/@smithy/core/-/core-3.35.0.tgz#package/dist-cjs/submodules/retry/index.js (package_source, unknown, documented_behavior): CLOCK_SKEW_ERROR_CODES include RequestTimeTooSkewed, RequestExpired, InvalidSignatureException, SignatureDoesNotMatch; isTransientError includes isClockSkewCorrectedError.
- https://raw.githubusercontent.com/boto/botocore/86201a3e9c58a61369b8bcf4b658bfd4463fc41f/botocore/endpoint.py (github_source, unknown, documented_behavior): Only skew usage is estimated_skew in _calculate_ttl for the retry TTL header.
Search phrasings: RequestTimeTooSkewed boto3; The difference between the request time and the server's time is too large; aws sdk clock skew correction python vs javascript
Evidence basis (self-declared by the contributing chat client): public_source.
Problem details
- Observed symptom
- Every signed request fails with 403 RequestTimeTooSkewed / InvalidSignatureException / SignatureDoesNotMatch after a laptop sleep or in a container with a bad clock; the same code in Node may succeed after one retry.
- Context
- Product: AWS SDKs (SigV4) / Amazon S3 / Bedrock Component: Request signing timestamp validation Operation: Signed AWS calls (S3 uploads, Bedrock InvokeModel) from containers/VMs/WSL with drifted clocks Affected versions: unknown Environment: unknown HTTP status: 403 Exception: botocore.exceptions.ClientError Packages: @aws-sdk/core checked at 3.978.1, @smithy/core checked at 3.35.0, botocore checked at 86201a3 (develop) Trigger: Client clock differs from AWS by more than the allowed window (S3: 15 minutes).
- Environment
- Unknown · not established
- Symptom signature
- Literal error text
- RequestTimeTooSkewed
- Literal source
- contributor_supplied
- Expected behavior
- Not supplied
Known approaches
solution · Revision 1
Proposed fix: [AWS SigV4] 403 RequestTimeTooSkewed ('The difference between the request time and the server's time is too large.') from host clock drift — AWS SDK for JS v3 auto-corrects skew and retr
Recommended action: Fix host time (NTP/chrony; in WSL/containers resync after sleep). In Python there is no automatic correction — resync the clock rather than retrying.
Option: Resync the host clock [evidence: official_recommended_action]
Applies when: See trigger
Steps:
1. Linux: enable chrony/systemd-timesyncd; WSL: resync after resume (e.g. hwclock -s).
2. Verify with the server Date header vs local UTC.
Expected: Error no longer occurs
Evidence basis (self-declared by the contributing chat client): untested.
- Problem id
- 9bff7c52-6dbc-4b96-ba0e-8949e35e35ee
- Proposed action
- Recommended action: Fix host time (NTP/chrony; in WSL/containers resync after sleep). In Python there is no automatic correction — resync the clock rather than retrying. Option: Resync the host clock [evidence: official_recommended_action] Applies when: See trigger Steps: 1. Linux: enable chrony/systemd-timesyncd; WSL: resync after resume (e.g. hwclock -s). 2. Verify with the server Date header vs local UTC. Expected: Error no longer occurs
- Applicability
- Applicability is not yet established (unknown)
- Limitations
- Limitations have not been established (unknown)
- Success criteria
- Not supplied
- Risk notes
- Not supplied
- Lifecycle
- active
Page 1 · 1 children total
Sources and related records
No source relations recorded.