URL pré-signée

Le service de stockage Stockage Objet de cegedim.cloud prend en charge la génération d'URL pré-signées afin d'accorder l'accès aux objets sans avoir besoin d'authentification.

Les URL pré-signées sont utilisées pour fournir un accès à durée limitée, à un objet privé dans votre Bucket S3. Ils fonctionnent en ajoutant une Access key, une date d'expiration et une signature (Sigv4) comme paramètres de requête à l'objet S3.

Il y a deux cas d'utilisation courants où vous pouvez les utiliser :

  • Partage simple et occasionnel d'objets.

  • Accès fréquent et programmatique pour visualiser un objet dans une application

  • Accès fréquent et programmatique au téléchargement d'un objet par l'intermédiaire d'une application

Générer une URL pré-signée (téléchargement)

Nous utilisons les utilitaires aws s3 et aws s3api issues du client S3 AWSCLIv2 sur Linux. ${S3_ENDPOINT} et ${S3_PROFILE} sont des variables d'environnement.

aws s3 --endpoint-url=${S3_ENDPOINT} presign s3://bucket-test/feather.ttf --expires-in 600 --profile ${S3_PROFILE}
résultat
https://storage-eb4.cegedim.cloud/bucket-test/feather.ttf?AWSAccessKeyId=fzs37xbv5615hygx2wkm&Signature=S4jFPas53s8cnwdDieMHrhc0ddE%3D&Expires=1666821099

Dans cet exemple, l'URL générée a une expiration de 10 minutes. Passé ce délai, l'objet ne sera plus accessible, via cette URL.

--expires-in : Nombre de secondes avant l'expiration de l'URL pré-signée. La valeur par défaut est de 3600 secondes. Le délai maximal d'expiration est de 7 jours (604800 secondes).

Générer une URL pré-signée (téléversement)

aws s3 et aws s3api ne supportent pas la génération d'url pré-signées pour l'upload.

Vous devez utiliser AWS SDK pour créer une url pré-signée pour l'upload.

Ci-dessous, un exemple simple utilisant [AWS SDK pour Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)

L'URL pré-signée d'upload ne fonctionne qu'avec un adressage de type chemin.

Remplacez aws_access_key_id et aws_secret_access_key par vos propres identifiants.

ExpiresIn (entier) : Nombre de secondes avant l'expiration de l'URL pré-signée. La valeur par défaut est de 3600 secondes. Le délai d'expiration maximal est de 7 jours.

Vous pouvez utiliser un outil tel que curl pour télécharger votre fichier dans le bucket, en utilisant l'URL générée précédemment :

Last updated