LogoLogo
cegedim.cloudITCareAPIPrivacy
Français
Français
  • Documentation
  • ITCare
    • ITCare, c'est quoi ?
      • Débuter avec ITCare
      • Démos
    • Enercare
      • Empreinte carbone
    • Notes de mise à jour
  • ITCare API
    • Aperçu
    • Authentication
    • Erreurs
    • Pagination
    • Reference API
      • Démarrage rapide
      • Analytics
        • Matomo
      • Changes
        • Changes
      • Compute
        • Application Servers
        • Backup Policies
        • Containers
        • Environments
        • Instances
        • Platform
        • Resource Filters
        • Resource Types
        • Resources
        • Services
        • Statuses
        • Tag Keys
        • Tag Values
        • Types
      • Databases
        • Databases
        • MariaDB
        • OpenSearch
        • PostgreSQL
        • Redis
        • SQL Server
      • Hardwares
        • Hardwares
      • Messaging
        • Apache Kafka
        • Message Brokers
        • RabbitMQ
      • Networking
        • Domains
        • Load Balancers
        • Network Clusters
        • Networks
      • Operations
        • Actions
        • Operations
      • Storage
        • Glusterfs
        • Overdrive
      • Topology
        • Topology
  • Services
    • Produits
    • Politique de support
    • Politique de patch
    • RACI
  • Analytique
    • Matomo
      • Matomo - Architecture
      • Matomo - Didacticiels
  • Calcul
    • Instances virtuelles
      • Instances virtuelles - Architectures
        • Linux - Renforcement
      • Instances virtuelles - Didacticiels
    • Conteneurs (K8s)
      • K8s - Architecture
        • Hardening
        • Stockage Persistant
      • K8s - Didacticiels
        • Haute Disponibilité
  • Bases de données
    • MariaDB
      • MariaDB - Architecture
      • MariaDB - Didacticiels
    • OpenSearch
      • OpenSearch - Architecture
        • v2 - Changements
      • OpenSearch - Didacticiels
    • PostgreSQL
      • PostgreSQL - Architecture
      • PostgreSQL - Didacticiels
      • PostgreSQL - Mise à jour
    • Redis
      • Redis - Architecture
      • Redis - Didacticiels
      • Redis - Mise à jour
    • SQL Server
      • SQL Server - Architecture
      • SQL Server - Didacticiels
  • Message
    • Apache Kafka
      • Apache Kafka - Architecture
      • Apache Kafka - Didacticiels
      • Apache Kafka - Mise à jour
    • RabbitMQ
      • RabbitMQ - Architecture
      • RabbitMQ - Didacticiels
    • SMS
      • SMS - Didacticiels
  • Securité
    • Advanced Vulnerability Assessment
    • Bot Defense
      • Bot Defense - Architecture
    • Campagne de Phishing
    • Data Masking
      • Data Masking - Didacticiels
  • Surveillance
    • ExtraHop
  • Stockage
    • GlusterFS
      • GlusterFS - Architecture
      • GlusterFS - Didacticiels
    • OverDrive
      • OverDrive - Architecture
    • Stockage Objet
      • Stockage Objet - Architecture
        • Compatibilité API S3
        • Limitation et bonnes pratiques
        • URL pré-signée
        • Politiques de Buckets
        • Configuration de cycle de vie
        • Object Lock
      • Stockage Objet - Didacticiels
        • Gérer des Objects Users
        • Gérer des versions dans un Bucket
        • Gérer l'accès à un Bucket
Powered by GitBook
On this page
  • Générer une URL pré-signée (téléchargement)
  • Générer une URL pré-signée (téléversement)
Export as PDF
  1. Stockage
  2. Stockage Objet
  3. Stockage Objet - Architecture

URL pré-signée

PreviousLimitation et bonnes pratiquesNextPolitiques de Buckets

Last updated 11 months ago

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)

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)]

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.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import boto3
from botocore.client import Config
s3 = boto3.client('s3')
s3 = boto3.client(
    's3',
    aws_access_key_id='xxxxx',
    aws_secret_access_key='xxxxx',
    config=Config(s3={'addressing_style': 'path'}),
    endpoint_url='https://storage-eb4.cegedim.cloud'
)
bucket = "bucket-test"
key = "feather.ttf"

print(s3.generate_presigned_url('put_object', Params={'Bucket':bucket,'Key':key}, ExpiresIn=300, HttpMethod='PUT'))
# Output

# Run Python script
./create_presign_url_upload.py

#Ouput
https://storage-eb4.cegedim.cloud/bucket-test/feather.ttf?AWSAccessKeyId=fzs37xbv5615hygx2wkm&Signature=NI%2BvoHYhWEFPDR04ioeFfBz5fks%3D&Expires=1712056959

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 :

curl --request PUT --upload-file feather.ttf 'https://storage-eb4.cegedim.cloud/bucket-test/feather.ttf?AWSAccessKeyId=fzs37xbv5615hygx2wkm&Signature=NI%2BvoHYhWEFPDR04ioeFfBz5fks%3D&Expires=1712056959'
(https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)