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

Accès aux données S3 à l’aide des informations d’identification fournies par S3 Access Grants

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 à l’aide de l’AWS Command Line Interface (AWS CLI), des kits AWS SDK ou de l’API REST Amazon S3. En outre, vous pouvez utiliser les plug-ins 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 de S3 Access Grants, il peut configurer un profil avec ces informations d’identification pour récupérer les données.

Pour installer la AWS CLI, consultez Installation de la AWS CLI dans le Guide de l’utilisateur AWS Command Line Interface.

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 commande AWS CLI get-object pour accéder aux données. Le bénéficiaire peut également utiliser put-object, ls et d’autres commandes AWS CLI 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 illustrant comment les bénéficiaires peuvent accéder à vos données S3 à l’aide des kits AWS SDK.

Java

L’exemple de code Java suivant récupère 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 S3 Access Grants

Un bénéficiaire peut utiliser les informations d’identification temporaires fournies par S3 Access Grants 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) READ ou l’autorisation AWS KMS GenerateDataKey (kms:generateDataKey) WRITE. Ces autorisations ne permettent pas d’accéder directement à la clé AWS KMS.

Action IAM S3 Action d’API et documentation Autorisation S3 Access Grants 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