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
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.
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).
Si un objet ayant la même clé existe déjà dans le bucket spécifié dans l'URL pré-signée, l'objet existant sera remplacé.
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 :