Zugreifen auf S3-Daten mit den von S3 Access Grants bereitgestellten Anmeldeinformationen - Amazon Simple Storage Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Zugreifen auf S3-Daten mit den von S3 Access Grants bereitgestellten Anmeldeinformationen

Nachdem ein Gewährungsempfänger über seine Zugriffsgewährung temporäre Anmeldeinformationen erhalten hat, kann er mit diesen temporären Anmeldeinformationen Amazon-S3-API-Operationen für den Zugriff auf Ihre Daten aufrufen.

Stipendiaten können mithilfe der AWS Command Line Interface (AWS CLI), der und der AWS SDKs Amazon S3-REST-API auf S3-Daten zugreifen. Darüber hinaus können Sie die AWS Python - und Java-Plugins verwenden, um S3 Access Grants aufzurufen.

Nachdem der Gewährungsempfänger seine temporären Anmeldeinformationen von S3 Access Grants erhalten hat, kann er mit diesen Anmeldeinformationen ein Profil einrichten, um die Daten abzurufen.

Informationen zur AWS CLI Installation von finden Sie unter Installation von AWS CLI im AWS Command Line Interface Benutzerhandbuch.

Um die folgenden Beispielbefehle zu verwenden, ersetzen Sie user input placeholders durch eigene Daten.

Beispiel – Einrichten eines Profils
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

Wenn Sie den folgenden Beispielbefehl verwenden möchten, ersetzen Sie user input placeholders durch Ihre eigenen Informationen.

Beispiel – Abrufen der S3-Daten

Der Empfänger kann den get-object AWS CLI Befehl verwenden, um auf die Daten zuzugreifen. Der Empfänger kann auch put-object, ls, und andere AWS CLI S3-Befehle verwenden.

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

Dieser Abschnitt enthält Beispiele dafür, wie Stipendiaten mithilfe von auf Ihre S3-Daten zugreifen können. AWS SDKs

Java

Das folgende Java-Codebeispiel ruft ein Objekt aus einem S3-Bucket ab. Anweisungen zum Erstellen und Testen eines funktionierenden Beispiels finden Sie unter Erste Schritte im AWS SDK für Java -Entwicklerhandbuch.

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(); } }

Unterstützte S3-Aktionen in S3 Access Grants

Ein Gewährungsempfänger kann die von S3 Access Grants bereitgestellten temporären Anmeldeinformationen verwenden, um S3-Aktionen mit den S3-Daten durchzuführen, auf die er Zugriff hat. Im Folgenden finden Sie eine Liste der zulässigen S3-Aktionen, die ein Gewährungsempfänger ausführen kann. Welche Aktionen zulässig sind, hängt von der in der Zugriffsgewährung gewährten Berechtigungsstufe ab, entweder READ, WRITE oder. READWRITE

Anmerkung

Zusätzlich zu den unten aufgeführten Amazon S3-Berechtigungen kann Amazon S3 die AWS Key Management Service (AWS KMS) Decrypt (kms:decrypt) READ -Berechtigung oder die AWS KMS GenerateDataKey(kms:generateDataKey) WRITE -Berechtigung aufrufen. Diese Berechtigungen ermöglichen keinen direkten Zugriff auf den AWS KMS Schlüssel.

S3-IAM-Aktion API-Aktion und -Dokument S3-Access-Grants-Berechtigung S3-Ressource
s3:GetObject GetObject READ Object
s3:GetObjectVersion GetObject READ Object
s3:GetObjectAcl GetObjectAcl READ Object
s3:GetObjectVersionAcl GetObjectAcl READ Object
s3:ListMultipartUploads ListParts READ Object
s3:PutObject PutObject, CreateMultipartUpload, UploadPart, UploadPartCopy, CompleteMultipartUpload WRITE Object
s3:PutObjectAcl PutObjectAcl WRITE Object
s3:PutObjectVersionAcl PutObjectAcl WRITE Object
s3:DeleteObject DeleteObject WRITE Object
s3:DeleteObjectVersion DeleteObject WRITE Object
s3:AbortMultipartUpload AbortMultipartUpload WRITE Object
s3:ListBucket HeadBucket, ListObjectsV2, ListObjects READ Bucket
s3:ListBucketVersions ListObjectVersions READ Bucket
s3:ListBucketMultipartUploads ListMultipartUploads READ Bucket