Partage d’objets à l’aide d’URL présignées - Amazon Simple Storage Service

Partage d’objets à l’aide d’URL présignées

Par défaut, tous les objets Amazon S3 sont privés, seul le propriétaire de l’objet a l’autorisation d’y accéder. Toutefois, le propriétaire de l’objet peut partager des objets avec d’autres personnes en créant une URL présignée. Une URL présignée utilise des informations d’identification de sécurité pour accorder une autorisation limitée dans le temps pour télécharger des objets. L’URL peut être saisie dans un navigateur ou utilisée par un programme pour télécharger l’objet. Les informations d'identification utilisées par l'URL présignée sont celles de l'utilisateur AWS qui a généré l'URL.

Pour des informations générales sur les URL présignées, consultez Téléchargement et chargement d’objets à l’aide d’URL présignées.

Vous pouvez créer une URL présignée pour partager un objet sans écrire de code grâce à la console Amazon S3, AWS Explorer for Visual Studio (Windows) ou AWS Toolkit for Visual Studio Code. Vous pouvez également générer une URL présignée par programmation à l’aide de l’AWS Command Line Interface (AWS CLI) ou des kits AWS SDK.

Vous pouvez utiliser la console Amazon S3 afin de générer une URL présignée pour partager un objet en suivant ces étapes. Dans la console, le délai d’expiration maximal d’une URL présignée est de 12 heures à compter de la création.

Pour générer une URL présignée à l’aide de la console Amazon S3
  1. Connectez-vous à la AWS Management Console et ouvrez la console Amazon S3 à l’adresse https://console.aws.amazon.com/s3/.

  2. Dans le volet de navigation de gauche, choisissez Compartiments à usage général.

  3. Dans la liste Compartiments à usage général, choisissez le nom du compartiment qui contient l’objet pour lequel vous souhaitez une URL présignée.

  4. Dans la liste Objects (Objets), sélectionnez l’objet pour lequel vous souhaitez créer une URL présignée.

  5. Dans le menu Actions d’objet, choisissez Partager avec une URL présignée.

  6. Spécifiez la durée de validité souhaitée pour l’URL présignée.

  7. Choisissez Create presigned URL (Créer une URL présignée).

  8. Lorsqu’une confirmation apparaît, l’URL est automatiquement copiée dans votre presse-papier. Un bouton s’affiche pour copier l’URL présignée, si vous devez la copier à nouveau.

L’exemple de commande AWS CLI suivant génère une URL présignée pour partager un objet à partir d’un compartiment Amazon S3. Avec l’AWS CLI, le délai d’expiration maximal d’une URL présignée est de 7 jours à compter de la création. Pour utiliser cet exemple, remplacez les user input placeholders par vos propres informations.

aws s3 presign s3://amzn-s3-demo-bucket/mydoc.txt --expires-in 604800

Le paramètre --expires-in indique le délai d’expiration en secondes.

Note

Pour toutes les Régions AWS lancées après le 20 mars 2019, vous devez spécifier le endpoint-url et la Région AWS avec la demande. Pour voir la liste complète des régions et points de terminaison Amazon S3, consultez Régions et points de terminaison dans la Référence générale AWS.

aws s3 presign s3://amzn-s3-demo-bucket/mydoc.txt --expires-in 604800 --region af-south-1 --endpoint-url https://s3.af-south-1.amazonaws.com

Pour plus d’informations, consultez presign dans la Référence des commandes de l’AWS CLI.

Vous pouvez également générer une URL présignée par programmation à l’aide des kits AWS SDK.

Python

Le script Python suivant génère une URL GET présignée pour le partage d’un objet.

  1. Copiez le contenu du script et enregistrez-le sous « get-only-url.py ». Pour utiliser les exemples suivants, remplacez les espaces réservés à la saisie utilisateur par vos propres informations (nom de votre fichier, par exemple).

    import argparse import boto3 from botocore.exceptions import ClientError def generate_presigned_url(s3_client, client_method, method_parameters, expires_in): """ Generate a presigned Amazon S3 URL that can be used to perform an action. :param s3_client: A Boto3 Amazon S3 client. :param client_method: The name of the client method that the URL performs. :param method_parameters: The parameters of the specified client method. :param expires_in: The number of seconds the presigned URL is valid for. :return: The presigned URL. """ try: url = s3_client.generate_presigned_url( ClientMethod=client_method, Params=method_parameters, ExpiresIn=expires_in ) except ClientError: print(f"Couldn't get a presigned URL for client method '{client_method}'.") raise return url def main(): parser = argparse.ArgumentParser() parser.add_argument("bucket", help="The name of the bucket.") parser.add_argument( "key", help="The key (path and filename) in the S3 bucket.", ) args = parser.parse_args() # By default, this will use credentials from ~/.aws/credentials s3_client = boto3.client("s3") # The presigned URL is specified to expire in 1000 seconds url = generate_presigned_url( s3_client, "get_object", {"Bucket": args.bucket, "Key": args.key}, 1000 ) print(f"Generated GET presigned URL: {url}") if __name__ == "__main__": main()
  2. Pour générer une URL GET présignée pour le partage d’un fichier, exécutez le script suivant avec le nom de votre compartiment et le chemin d’objet souhaité.

    La commande suivante utilise des valeurs d’exemple. Remplacez les espaces réservés à la saisie utilisateur par vos propres informations.

    python get-only-url.py amzn-s3-demo-bucket <object-path>

    Le script affiche une URL GET présignée :

    Generated GET presigned URL: https://amzn-s3-demo-bucket.s3.amazonaws.com/object.txt?AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&Signature=vjbyNxybdZaMmLa%2ByT372YEAiv4%3D&Expires=1741978496
  3. Vous pouvez télécharger le fichier en utilisant l’URL présignée générée avec curl :

    curl -X GET "generated-presigned-url" -o "path/to/save/file"

Pour obtenir des exemples d’utilisation des kits AWS SDK afin de générer une URL présignée pour le partage d’un objet, consultez Création d’une URL présignée pour Amazon S3 à l’aide d’un kit AWS SDK.

Note

Pour toutes les Régions AWS lancées après le 20 mars 2019, vous devez spécifier le endpoint-url et la Région AWS avec la demande. Pour voir la liste complète des régions et points de terminaison Amazon S3, consultez Régions et points de terminaison dans la Référence générale AWS.

Note

Lorsque vous utilisez les kits AWS SDK, l’attribut de balisage doit être un en-tête et non un paramètre de requête. Tous les autres attributs peuvent être transmis en tant que paramètre pour l’URL présignée.

Note

À l’heure actuelle, AWS Toolkit for Visual Studio ne prend pas en charge Visual Studio for Mac.

  1. Installez AWS Toolkit for Visual Studio en suivant les instructions ci-dessous, Installation et configuration de Toolkit for Visual Studio dans le Guide de l’utilisateur AWS Toolkit for Visual Studio.

  2. Connectez-vous à AWS en suivant les étapes dans Connexion à AWS dans le Guide de l’utilisateur AWS Toolkit for Visual Studio.

  3. Dans le volet latéral gauche intitulé Explorateur AWS, double-cliquez sur le compartiment contenant votre objet.

  4. Cliquez avec le bouton droit sur l’objet pour lequel vous souhaitez générer une URL présignée, puis sélectionnez Créer une URL présignée.

  5. Dans la fenêtre contextuelle, définissez la date et l’heure d’expiration de votre URL présignée.

  6. La clé d’objet devrait être préremplie en fonction de l’objet que vous avez sélectionné.

  7. Choisissez GET pour spécifier que cette URL présignée est utilisée pour télécharger un objet.

  8. Cliquez sur le bouton Générer.

  9. Pour copier l’URL dans le presse-papiers, choisissez Copier.

  10. Pour utiliser l’URL présignée générée, collez l’URL dans n’importe quel navigateur.

Si vous utilisez Visual Studio Code, vous pouvez générer une URL présignée pour partager un objet sans écrire de code grâce à AWS Toolkit for Visual Studio Code. Pour des informations générales, consultez AWS Toolkit for Visual Studio Code dans le Guide de l’utilisateur AWS Toolkit for Visual Studio Code.

Pour obtenir des instructions sur l’installation d’AWS Toolkit for Visual Studio Code, consultez Installation d’AWS Toolkit for Visual Studio Code dans le Guide de l’utilisateur AWS Toolkit for Visual Studio Code.

  1. Connectez-vous à AWS en suivant les étapes dans Connexion à AWS Toolkit for Visual Studio Code dans le Guide de l’utilisateur AWS Toolkit for Visual Studio Code.

  2. Sélectionnez le logo AWS dans le volet de gauche dans Visual Studio Code.

  3. Sous EXPLORER, sélectionnez S3.

  4. Choisissez un compartiment et un fichier, puis ouvrez le menu contextuel (clic droit).

  5. Choisissez Générer une URL présignée, puis définissez le délai d’expiration (en minutes).

  6. Appuyez sur Entrée et l’URL présignée est copiée dans votre presse-papiers.