iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
An S3 presigned URL is a bearer credential: whoever possesses it can make the specific S3 request it authorizes while it remains valid. Treat it like a temporary access credential, not harmless text. Its requested expiry is only an upper limit; the signer’s permissions, temporary credentials, bucket policies, and any signature-age guardrail can all end access sooner.
What a presigned URL actually authorizes
A presigned URL lets a recipient make a specific S3 request—such as downloading or uploading an object—without receiving the signer’s AWS credentials. The URL carries a signature, and possession of the URL is what enables the request. AWS describes it as permitting the signed API operation during the period before expiration in its logging and mitigation guidance.
It does not bypass authorization. The URL cannot grant authority the signing principal lacks: S3 still evaluates applicable permissions and policies, including explicit denies. The scope is bounded by the signed operation and resource, the signer’s authority, and relevant bucket or access-point controls. See the S3 presigned URL guide and AWS’s foundational best practices.
Why a URL can expire earlier than requested
The configured expiration is a maximum, not a guarantee that the link will work for that entire time. AWS says a presigned URL stops working at the earlier of its configured expiry and the expiration of the credentials used to sign it. Temporary role or STS credentials can therefore shorten the usable period. With SigV4 and IAM user credentials, AWS documents a maximum validity of seven days; that maximum does not apply to temporary credentials. The details are in the S3 user guide.
#1 Best Overall
Access can also be denied before the URL’s own expiry if the signer’s authorization changes or a policy blocks the request. And if a download began before expiry, it may continue; a retry or restarted request made after the deadline can fail. Set the shortest lifetime that fits the recipient’s workflow, and build a way to obtain a fresh URL when retries or later access are expected.
Security pitfalls and controls
1. Treating the URL as harmless text
The query string contains X-Amz-Signature, which can function as a credential while the request remains authorized. A browser, application, reverse proxy, analytics system, or other intermediary may record the complete request URI. HTTPS protects the URL in transit, but it does not stop endpoints or servers from logging it.
Redact the signature parameter or the entire query string from logs. If you must retain request data that includes a presigned URL, protect it as highly confidential. Limit access to the URL to intended recipients and avoid placing it in public tickets, chat rooms, analytics events, or other systems with broad visibility. AWS discusses these options in its logging guidance.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →2. Signing with excessive authority
A presigned URL inherits the limits of its signer. If the principal has broader S3 access than the task requires, a leaked URL can have a wider impact than intended. Give the signing principal only the necessary action and resource permissions, and account for bucket or access-point policies and explicit denies. Avoid combining a long-lived URL with a broadly privileged signer.
3. Assuming expiration is controlled only by the URL
For SigV4, S3 policies can use s3:signatureAge to reject a request once its signature exceeds a centrally enforced age—even when the URL itself has a later expiry. The value is expressed in milliseconds. AWS documentation includes a 600,000-millisecond (10-minute) example, while AWS Prescriptive Guidance shows a 15-minute organizational guardrail. These are examples, not universal recommended settings; the condition can shorten validity but cannot extend it.
A threshold below 60 seconds is generally impractical and can reject legitimate requests because of network latency or clock skew. Test a proposed guardrail against real download, upload, retry, and service flows before applying it broadly. Consult the S3 SigV4 policy-key documentation and AWS’s additional guardrails guidance.
4. Making content public to solve temporary sharing
A presigned URL can provide temporary access to a particular object without making the bucket publicly readable. Disabling Block Public Access or adding a public-read policy changes the model: the exposed objects may become accessible to anyone on the internet. Keep Block Public Access protections in place for private data. If you have a genuine public-hosting use case, separate that content into a deliberately configured public location. See AWS’s guide to granting public access to S3 data.
Diagnose a 403 or signature failure
A 403 Forbidden response is a symptom, not a diagnosis. Start by checking whether the signing principal had permission for the requested action and object, then inspect applicable bucket or access-point policies for an explicit deny. A policy using s3:signatureAge can also reject a URL that has not reached its own expiry.
Best Value
SignatureDoesNotMatch can indicate that the request no longer matches what was signed. Possible causes include clock drift, a proxy that changes headers or query parameters, or a mismatch in the HTTP method, headers, or query string. Compare the actual request with the request used to create the URL, and investigate intermediary transformations. For uploads, AWS documents checksum support with SigV4 to verify object integrity. See the S3 guide to presigned downloads and uploads.
Choose controls by the risk you need to reduce
| Control dimension | What to examine |
|---|---|
| Exposure window | The URL’s requested lifetime and whether the underlying signing credentials expire sooner. |
| Authority scope | The signer’s permissions, the object and operation, and applicable bucket or access-point policies. |
| Enforcement point | Application-generated expiry, an S3 s3:signatureAge condition, or network-path restrictions. |
| Leak surface | Whether clients, reverse proxies, analytics, or logs capture the query string. |
| Operational reliability | Expected latency, clock synchronization, retries, and the service workflows that a shorter age limit may affect. |
These controls address different failure modes. A short URL lifetime does not fix overbroad signer permissions or query-string logging; log redaction does not narrow the signer’s authority. Review each dimension when designing the URL-generation workflow and its surrounding policies.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.
Free tools Windows power users keep installed
One-click scans. No signup required.

