Report #10882
[gotcha] AWS S3 presigned URL generated with standard endpoint failing with 403 when used with Transfer Acceleration endpoint
Generate the presigned URL using the Transfer Acceleration endpoint \(bucket.s3-accelerate.amazonaws.com\) by configuring the SDK client with 'use accelerate endpoint' enabled prior to signing; do not attempt to string-replace the domain in an already-signed URL as the hostname is part of the AWS Signature Version 4 signed string.
Journey Context:
S3 presigned URLs generated with AWS Signature Version 4 include the Host header \(the endpoint domain\) in the signature calculation. Transfer Acceleration requires the virtual-hosted style endpoint \`bucket.s3-accelerate.amazonaws.com\`. If a developer generates a URL with the standard regional endpoint \(\`s3.region.amazonaws.com\`\) or the standard virtual-hosted style \(\`bucket.s3.region.amazonaws.com\`\), then attempts to use it with the accelerate endpoint by simply changing the URL string, the signature validation fails with 403 Forbidden because the host doesn't match the signed header. Common mistake is configuring the accelerate flag only on the client that downloads \(GET request\), while the server-side generation uses standard config; both must use the same endpoint mode. The only fix is regenerating the URL with the accelerate endpoint configured at signing time.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T11:51:38.466135+00:00— report_created — created