Accès aux données S3 à l’aide des informations d’identification fournies par les autorisations d’accès S3 - Amazon Simple Storage Service

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.

Accès aux données S3 à l’aide des informations d’identification fournies par les autorisations d’accès S3

Une fois qu’un bénéficiaire a obtenu des informations d’identification temporaires via son autorisation d’accès, il peut utiliser ces informations d’identification temporaires pour appeler les opérations d’API Amazon S3 afin d’accéder à vos données.

Les bénéficiaires peuvent accéder aux données S3 en utilisant le AWS Command Line Interface (AWS CLI) AWS SDKs, le et l'API REST Amazon S3. En outre, vous pouvez utiliser les plugins AWS Python et Java pour appeler S3 Access Grants

Une fois que le bénéficiaire a obtenu ses informations d’identification temporaires auprès des autorisations d’accès S3, il peut configurer un profil avec ces informations d’identification pour récupérer les données.

Pour l'installer AWS CLI, reportez-vous à la section Installation du AWS CLI dans le guide de AWS Command Line Interface l'utilisateur.

Pour utiliser les exemples de commandes suivants, remplacez les user input placeholders par vos propres informations.

Exemple : Configurer un profil
aws configure set aws_access_key_id "$accessKey" --profile access-grants-consumer-access-profile aws configure set aws_secret_access_key "$secretKey" --profile access-grants-consumer-access-profile aws configure set aws_session_token "$sessionToken" --profile access-grants-consumer-access-profile

Pour utiliser l’exemple de commande suivant, remplacez les user input placeholders par vos propres informations.

Exemple : Obtenir les données S3

Le bénéficiaire peut utiliser la get-object AWS CLI commande pour accéder aux données. Le bénéficiaire peut également utiliser put-objectls, et d'autres AWS CLI commandes S3.

aws s3api get-object \ --bucket amzn-s3-demo-bucket1 \ --key myprefix \ --region us-east-2 \ --profile access-grants-consumer-access-profile

Cette section fournit des exemples de la manière dont les bénéficiaires peuvent accéder à vos données S3 à l'aide du AWS SDKs.

Java

L'exemple de code Java suivant extrait un objet d'un compartiment S3. Pour obtenir les instructions pour la création et le test d’un exemple pratique, consultez Démarrer dans le Guide du développeur AWS SDK pour Java .

import com.amazonaws.AmazonServiceException; 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.GetObjectRequest; import com.amazonaws.services.s3.model.ResponseHeaderOverrides; import com.amazonaws.services.s3.model.S3Object; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class GetObject2 { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; String key = "*** Object key ***"; S3Object fullObject = null, objectPortion = null, headerOverrideObject = null; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withRegion(clientRegion) .withCredentials(new ProfileCredentialsProvider()) .build(); // Get an object and print its contents. System.out.println("Downloading an object"); fullObject = s3Client.getObject(new GetObjectRequest(bucketName, key)); System.out.println("Content-Type: " + fullObject.getObjectMetadata().getContentType()); System.out.println("Content: "); displayTextInputStream(fullObject.getObjectContent()); // Get a range of bytes from an object and print the bytes. GetObjectRequest rangeObjectRequest = new GetObjectRequest(bucketName, key) .withRange(0, 9); objectPortion = s3Client.getObject(rangeObjectRequest); System.out.println("Printing bytes retrieved."); displayTextInputStream(objectPortion.getObjectContent()); // Get an entire object, overriding the specified response headers, and print // the object's content. ResponseHeaderOverrides headerOverrides = new ResponseHeaderOverrides() .withCacheControl("No-cache") .withContentDisposition("attachment; filename=example.txt"); GetObjectRequest getObjectRequestHeaderOverride = new GetObjectRequest(bucketName, key) .withResponseHeaders(headerOverrides); headerOverrideObject = s3Client.getObject(getObjectRequestHeaderOverride); displayTextInputStream(headerOverrideObject.getObjectContent()); } 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(); } finally { // To ensure that the network connection doesn't remain open, close any open // input streams. if (fullObject != null) { fullObject.close(); } if (objectPortion != null) { objectPortion.close(); } if (headerOverrideObject != null) { headerOverrideObject.close(); } } } private static void displayTextInputStream(InputStream input) throws IOException { // Read the text input stream one line at a time and display each line. BufferedReader reader = new BufferedReader(new InputStreamReader(input)); String line = null; while ((line = reader.readLine()) != null) { System.out.println(line); } System.out.println(); } }

Actions S3 prises en charge dans les autorisations d’accès S3

Un bénéficiaire peut utiliser les informations d’identification temporaires fournies par les autorisations d’accès S3 pour effectuer des actions S3 sur les données S3 auxquelles il a accès. Voici une liste des actions S3 qui peuvent être autorisées et qu’un bénéficiaire peut effectuer. Les actions qui peuvent être autorisées dépendent du niveau d’autorisation accordé dans l’autorisation d’accès : READ, WRITE ou READWRITE.

Note

Outre les autorisations Amazon S3 répertoriées ci-dessous, Amazon S3 peut appeler l'autorisation AWS Key Management Service (AWS KMS) Decrypt (kms:decrypt) ou l'READautorisation AWS KMS GenerateDataKey(kms:generateDataKey)WRITE. Ces autorisations ne permettent pas d'accéder directement à la AWS KMS clé.

Action IAM S3 Action d’API et documentation Autorisation d’octroi d’accès S3 Ressource S3
s3:GetObject GetObject READ Objet
s3:GetObjectVersion GetObject READ Objet
s3:GetObjectAcl GetObjectAcl READ Objet
s3:GetObjectVersionAcl GetObjectAcl READ Objet
s3:ListMultipartUploads ListParts READ Objet
s3:PutObject PutObject, CreateMultipartUpload, UploadPart, UploadPartCopy, CompleteMultipartUpload WRITE Objet
s3:PutObjectAcl PutObjectAcl WRITE Objet
s3:PutObjectVersionAcl PutObjectAcl WRITE Objet
s3:DeleteObject DeleteObject WRITE Objet
s3:DeleteObjectVersion DeleteObject WRITE Objet
s3:AbortMultipartUpload AbortMultipartUpload WRITE Objet
s3:ListBucket HeadBucket, ListObjectsV2, ListObjects READ Compartiment
s3:ListBucketVersions ListObjectVersions READ Compartiment
s3:ListBucketMultipartUploads ListMultipartUploads READ Compartiment