Partage d'objets à l'aide d'une signature préalable URLs - Amazon S3 sur Outposts

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Partage d'objets à l'aide d'une signature préalable URLs

Pour accorder un accès limité dans le temps aux objets stockés localement dans un Outpost sans mettre à jour votre stratégie de compartiment, vous pouvez utiliser une URL présignée. Avec Presigned URLs, en tant que propriétaire du bucket, vous pouvez partager des objets avec des personnes dans votre cloud privé virtuel (VPC) ou leur donner la possibilité de télécharger ou de supprimer des objets.

Lorsque vous créez une URL présignée à l'aide du AWS SDKs ou du AWS Command Line Interface (AWS CLI), vous associez l'URL à une action spécifique. Vous accordez également un accès limité dans le temps à l'URL présignée en choisissant un délai d'expiration personnalisé qui peut aller de 1 seconde à 7 jours. Lorsque vous partagez l'URL présignée, la personne dans le VPC peut effectuer l'action intégrée dans l'URL comme s'il s'agissait de l'utilisateur connecté d'origine. Lorsque l'URL atteint son délai d'expiration, elle expire et ne fonctionne plus.

Lorsque vous créez une URL présignée, vous devez fournir vos informations d'identification de sécurité, puis spécifier les éléments suivants :

  • Un point d'accès pour Amazon Resource Name (ARN) du compartiment S3 on Outposts

  • Une clé d'objet

  • Une méthode HTTP (GET pour télécharger des objets)

  • Une date et une heure d'expiration

Une URL présignée est uniquement valide pendant la durée spécifiée. Autrement dit, vous devez commencer l'action autorisée par l'URL avant la date et l'heure d'expiration. Vous pouvez utiliser une URL présignée plusieurs fois, jusqu'à la date et l'heure d'expiration. Si vous avez créé une URL présignée à l'aide d'un jeton temporaire, alors l'URL expire lorsque le jeton expire, même si vous avez créé l'URL avec une heure d'expiration postérieure.

Les utilisateurs du cloud privé virtuel (VPC) qui ont accès à l'URL présignée peuvent accéder à l'objet. Par exemple, si votre compartiment contient une vidéo et que ce compartiment et l'objet sont confidentiels, vous pouvez partager la vidéo avec d'autres en générant une URL présignée. Dans la mesure où URLs les buckets S3 on Outposts sont autorisés à accéder à ceux qui possèdent l'URL, nous vous recommandons de les protéger de manière appropriée. URLs Pour plus de détails sur la protection des documents présignés URLs, consultezLimitation des capacités des URL présignées.

Toute personne qui possède des autorisations de sécurité valides peut créer une URL présignée. Cependant, l'URL présignée doit être créée par une personne disposant des autorisations nécessaires pour effectuer l'opération sur laquelle l'URL présignée est basée. Pour de plus amples informations, veuillez consulter Utilisateurs habilités à créer une URL présignée.

Vous pouvez générer une URL présignée pour partager un objet dans un compartiment S3 on Outposts en utilisant AWS SDKs le et le. AWS CLI Pour plus d’informations, consultez les exemples suivants.

Vous pouvez utiliser le AWS SDKs pour générer une URL présignée que vous pouvez communiquer à d'autres personnes afin qu'elles puissent récupérer un objet.

Note

Lorsque vous utilisez le AWS SDKs pour générer une URL présignée, le délai d'expiration maximal d'une URL présignée est de 7 jours à compter de sa création.

Java

L'exemple suivant génère une URL présignée que vous pouvez communiquer à d'autres afin qu'ils puissent récupérer un objet depuis un compartiment S3 on Outposts. Pour de plus amples informations, veuillez consulter Utilisation de Presigned URLs pour S3 sur Outposts. Pour utiliser cet exemple, remplacez user input placeholders par vos propres informations.

import com.amazonaws.AmazonServiceException; import com.amazonaws.HttpMethod; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest; import java.io.IOException; import java.net.URL; import java.time.Instant; public class GeneratePresignedURL { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String accessPointArn = "*** access point ARN ***"; String objectKey = "*** object key ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withRegion(clientRegion) .withCredentials(new ProfileCredentialsProvider()) .build(); // Set the presigned URL to expire after one hour. java.util.Date expiration = new java.util.Date(); long expTimeMillis = Instant.now().toEpochMilli(); expTimeMillis += 1000 * 60 * 60; expiration.setTime(expTimeMillis); // Generate the presigned URL. System.out.println("Generating pre-signed URL."); GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(accessPointArn, objectKey) .withMethod(HttpMethod.GET) .withExpiration(expiration); URL url = s3Client.generatePresignedUrl(generatePresignedUrlRequest); System.out.println("Pre-Signed URL: " + url.toString()); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
.NET

L'exemple suivant génère une URL présignée que vous pouvez communiquer à d'autres afin qu'ils puissent récupérer un objet depuis un compartiment S3 on Outposts. Pour de plus amples informations, veuillez consulter Utilisation de Presigned URLs pour S3 sur Outposts. Pour utiliser cet exemple, remplacez user input placeholders par vos propres informations.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; namespace Amazon.DocSamples.S3 { class GenPresignedURLTest { private const string accessPointArn = "*** access point ARN ***"; private const string objectKey = "*** object key ***"; // Specify how long the presigned URL lasts, in hours. private const double timeoutDuration = 12; // Specify your bucket Region (an example Region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 s3Client; public static void Main() { s3Client = new AmazonS3Client(bucketRegion); string urlString = GeneratePreSignedURL(timeoutDuration); } static string GeneratePreSignedURL(double duration) { string urlString = ""; try { GetPreSignedUrlRequest request1 = new GetPreSignedUrlRequest { BucketName = accessPointArn, Key = objectKey, Expires = DateTime.UtcNow.AddHours(duration) }; urlString = s3Client.GetPreSignedURL(request1); } catch (AmazonS3Exception e) { Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message); } catch (Exception e) { Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message); } return urlString; } } }
Python

L'exemple suivant génère une URL présignée pour partager un objet à l'aide du SDK pour Python (Boto3). Par exemple, utilisez un client Boto3 et la fonction generate_presigned_url pour générer une URL présignée qui vous permet d'accéder à un objet GET.

import boto3 url = boto3.client('s3').generate_presigned_url( ClientMethod='get_object', Params={'Bucket': 'ACCESS_POINT_ARN', 'Key': 'OBJECT_KEY'}, ExpiresIn=3600)

Pour plus d'informations sur l'utilisation du kit SDK pour Python (Boto3) pour générer une URL présignée, consultez la section Python dans la Référence d'API AWS SDK for Python (Boto) .

L'exemple de AWS CLI commande suivant génère une URL présignée pour un compartiment S3 on Outposts. Pour utiliser cet exemple, remplacez user input placeholders par vos propres informations.

Note

Lorsque vous utilisez le AWS CLI pour générer une URL présignée, le délai d'expiration maximal d'une URL présignée est de 7 jours à compter de sa création.

aws s3 presign s3://arn:aws:s3-outposts:us-east-1:111122223333:outpost/op-01ac5d28a6a232904/accesspoint/example-outpost-access-point/mydoc.txt --expires-in 604800

Pour de plus amples informations, veuillez consulter presign (présigner) dans la Référence des commandes AWS CLI .