30 settembre 2026 · 5 min di lettura
Come condividere file privati S3 e R2 con URL prefirmati
Non tutti i file dovrebbero stare in un bucket pubblico. Contratti, fatture o build non ancora rilasciate possono restare privati ed essere comunque condivisi, con un link che funziona solo per un tempo limitato.
Come funzionano gli URL prefirmati
L'URL contiene tutto ciò che serve a S3 per verificare la richiesta: la chiave con cui è stato firmato, quando è stato firmato, per quanto tempo è valido e una firma. Ha questo aspetto:
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=…
La firma avviene sul tuo computer. Al provider non viene inviato nulla finché qualcuno non apre il link, e modificarne una parte qualsiasi invalida la firma.
Creane uno con la AWS CLI
aws s3 presign s3://your-bucket/contract.pdf --expires-in 86400
Questo link funziona per 24 ore. Per Cloudflare R2 o un altro servizio compatibile con S3, punta la CLI al suo endpoint:
aws s3 presign s3://your-bucket/contract.pdf --expires-in 86400 \
--endpoint-url https://<ACCOUNT_ID>.r2.cloudflarestorage.comLimiti da conoscere
- Al massimo 7 giorni. Signature Version 4 consente fino a 604.800 secondi, sia su S3 sia su R2.
- Le credenziali temporanee scadono prima. Un URL firmato con una sessione STS o SSO smette di funzionare quando la sessione scade, anche se hai chiesto una durata maggiore.
- R2 richiede il dominio API. Su R2 gli URL prefirmati funzionano con
<ACCOUNT_ID>.r2.cloudflarestorage.com, non con un dominio personalizzato. - Chiunque abbia il link può usarlo. Trattalo come una password finché non scade.
- Nessuna revoca per singolo link. Per disattivare un link prima del tempo, elimina o rinomina l'oggetto, oppure disattiva la chiave di accesso che l'ha firmato.
URL prefirmato o bucket pubblico?
Usa un bucket pubblico per i file che devono essere visti e continuare a funzionare: screenshot nella documentazione, immagini in un README. Usa gli URL prefirmati per tutto ciò che è riservato o di breve durata. Molti tengono un bucket di ciascun tipo e scelgono file per file.
Domande frequenti
Un URL prefirmato può durare più di 7 giorni?
Non con Signature Version 4, usata da S3 e R2. Per un accesso più lungo, rendi pubblico il file o genera un nuovo link quando il vecchio scade.
Perché il mio URL prefirmato restituisce SignatureDoesNotMatch?
Di solito l'URL è stato modificato dopo la firma, ad esempio da un client di posta o sostituendo l'host con un dominio personalizzato. Anche le impostazioni di regione ed endpoint devono corrispondere al bucket.
Gli URL prefirmati funzionano con Backblaze B2 e MinIO?
Sì. Entrambi supportano gli URL prefirmati Signature Version 4 tramite le loro API compatibili con S3.