30 september 2026 · 5 min. leestijd
Zo deel je privébestanden uit S3 en R2 met presigned URL's
Niet elk bestand hoort in een openbare bucket. Contracten, facturen of nog niet uitgebrachte builds kunnen privé blijven en toch gedeeld worden, met een link die maar een beperkte tijd werkt.
Hoe presigned URL's werken
De URL bevat alles wat S3 nodig heeft om het verzoek te controleren: de sleutel waarmee hij is ondertekend, wanneer dat gebeurde, hoe lang hij geldig is en een handtekening. Hij ziet er zo uit:
https://your-bucket.s3.eu-central-1.amazonaws.com/contract.pdf
?X-Amz-Algorithm=AWS4-HMAC-SHA256
&X-Amz-Credential=AKIA…/20260930/eu-central-1/s3/aws4_request
&X-Amz-Date=20260930T120000Z
&X-Amz-Expires=3600
&X-Amz-SignedHeaders=host
&X-Amz-Signature=…
Het ondertekenen gebeurt op je eigen computer. Er gaat niets naar de provider tot iemand de link opent, en als je een deel ervan wijzigt, klopt de handtekening niet meer.
Maak er een met de AWS CLI
aws s3 presign s3://your-bucket/contract.pdf --expires-in 86400
Die link werkt 24 uur. Voor Cloudflare R2 of een andere S3-compatibele dienst laat je de CLI naar het endpoint daarvan wijzen:
aws s3 presign s3://your-bucket/contract.pdf --expires-in 86400 \
--endpoint-url https://<ACCOUNT_ID>.r2.cloudflarestorage.comBeperkingen die je moet kennen
- Maximaal 7 dagen. Signature Version 4 staat tot 604.800 seconden toe, op S3 en R2.
- Tijdelijke inloggegevens stoppen eerder. Een URL die is ondertekend met een STS- of SSO-sessie werkt niet meer zodra die sessie verloopt, ook als je om een langere duur vroeg.
- R2 vereist het API-domein. Presigned URL's op R2 werken met
<ACCOUNT_ID>.r2.cloudflarestorage.com, niet met een eigen domein. - Iedereen met de link kan hem gebruiken. Behandel hem als een wachtwoord tot hij verloopt.
- Je kunt een link niet afzonderlijk intrekken. Wil je een link eerder blokkeren, verwijder of hernoem dan het object, of deactiveer de access key waarmee hij is ondertekend.
Presigned URL of openbare bucket?
Gebruik een openbare bucket voor bestanden die gezien mogen worden en moeten blijven werken: schermafbeeldingen in documentatie, afbeeldingen in een README. Gebruik presigned URL's voor alles wat gevoelig of kortlevend is. Veel mensen hebben van elk één bucket en kiezen per bestand.
Veelgestelde vragen
Kan een presigned URL langer dan 7 dagen geldig zijn?
Niet met Signature Version 4, dat S3 en R2 gebruiken. Voor langere toegang maak je het bestand openbaar, of maak je een nieuwe link als de oude verloopt.
Waarom geeft mijn presigned URL SignatureDoesNotMatch?
Meestal is de URL na het ondertekenen gewijzigd, bijvoorbeeld door een e-mailprogramma of doordat de host is vervangen door een eigen domein. Ook de regio- en endpointinstellingen moeten bij de bucket passen.
Werken presigned URL's met Backblaze B2 en MinIO?
Ja. Beide ondersteunen presigned URL's met Signature Version 4 via hun S3-compatibele API's.