30 septembre 2026 · 5 min de lecture

Comment partager des fichiers S3 et R2 privés avec des URL présignées

Tous les fichiers n'ont pas leur place dans un bucket public. Contrats, factures ou builds non publiés peuvent rester privés et être partagés quand même, avec un lien qui ne fonctionne que pendant un temps limité.

Comment fonctionnent les URL présignées

L'URL contient tout ce dont S3 a besoin pour vérifier la requête : la clé qui a servi à la signer, la date de signature, la durée de validité et une signature. Elle ressemble à ceci :

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 signature se fait sur votre ordinateur. Rien n'est envoyé au fournisseur tant que personne n'ouvre le lien, et modifier la moindre partie de l'URL invalide la signature.

En créer une avec l'AWS CLI

aws s3 presign s3://your-bucket/contract.pdf --expires-in 86400

Ce lien fonctionne pendant 24 heures. Pour Cloudflare R2 ou un autre service compatible S3, indiquez son endpoint à la CLI :

aws s3 presign s3://your-bucket/contract.pdf --expires-in 86400 \
  --endpoint-url https://<ACCOUNT_ID>.r2.cloudflarestorage.com

Les limites à connaître

  • 7 jours maximum. Signature Version 4 autorise jusqu'à 604 800 secondes, sur S3 comme sur R2.
  • Les identifiants temporaires expirent plus tôt. Une URL signée avec une session STS ou SSO cesse de fonctionner à l'expiration de cette session, même si vous avez demandé plus longtemps.
  • R2 exige le domaine de l'API. Sur R2, les URL présignées fonctionnent avec <ACCOUNT_ID>.r2.cloudflarestorage.com, pas avec un domaine personnalisé.
  • Toute personne qui a le lien peut l'utiliser. Traitez-le comme un mot de passe jusqu'à son expiration.
  • Pas de révocation par lien. Pour couper un lien plus tôt, supprimez ou renommez l'objet, ou désactivez la clé d'accès qui l'a signé.

URL présignée ou bucket public ?

Utilisez un bucket public pour les fichiers destinés à être vus et qui doivent rester accessibles : captures dans une documentation, images dans un README. Utilisez des URL présignées pour tout ce qui est sensible ou éphémère. Beaucoup gardent un bucket de chaque type et choisissent fichier par fichier.

Questions fréquentes

Une URL présignée peut-elle durer plus de 7 jours ?

Pas avec Signature Version 4, qu'utilisent S3 et R2. Pour un accès plus long, rendez le fichier public ou générez un nouveau lien quand l'ancien expire.

Pourquoi mon URL présignée renvoie-t-elle SignatureDoesNotMatch ?

En général, l'URL a été modifiée après la signature, par exemple par un client de messagerie ou en remplaçant l'hôte par un domaine personnalisé. Les réglages de région et d'endpoint doivent aussi correspondre au bucket.

Les URL présignées fonctionnent-elles avec Backblaze B2 et MinIO ?

Oui. Les deux prennent en charge les URL présignées Signature Version 4 via leurs API compatibles S3.