Mengakses data S3 menggunakan kredensil yang dijual oleh S3 Access Grants - Amazon Simple Storage Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengakses data S3 menggunakan kredensil yang dijual oleh S3 Access Grants

Setelah penerima hibah memperoleh kredensi sementara melalui hibah akses mereka, mereka dapat menggunakan kredensil sementara ini untuk memanggil operasi Amazon S3 API untuk mengakses data Anda.

Penerima hibah dapat mengakses data S3 dengan menggunakan AWS Command Line Interface (AWS CLI), the AWS SDKs, dan Amazon S3 REST API. Selain itu, Anda dapat menggunakan plugin AWS Python dan Java untuk memanggil S3 Access Grants

Setelah penerima hibah memperoleh kredensi sementara mereka dari S3 Access Grants, mereka dapat mengatur profil dengan kredensil ini untuk mengambil data.

Untuk menginstal AWS CLI, lihat Menginstal AWS CLI di Panduan AWS Command Line Interface Pengguna.

Untuk menggunakan perintah contoh berikut, ganti user input placeholders dengan informasi Anda sendiri.

contoh — Mengatur 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

Untuk menggunakan perintah contoh berikut, ganti user input placeholders dengan informasi Anda sendiri.

contoh — Dapatkan data S3

Penerima hibah dapat menggunakan get-object AWS CLI perintah untuk mengakses data. Penerima hibah juga dapat menggunakan put-object, ls, dan perintah AWS CLI S3 lainnya.

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

Bagian ini memberikan contoh bagaimana penerima hibah dapat mengakses data S3 Anda dengan menggunakan. AWS SDKs

Java

Contoh kode Java berikut mendapatkan objek dari bucket S3. Untuk petunjuk cara membuat dan menguji sampel yang berfungsi, lihat Memulai di Panduan AWS SDK untuk Java Pengembang.

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

Tindakan S3 yang didukung di Hibah Akses S3

Penerima hibah dapat menggunakan kredensi sementara yang dijual oleh S3 Access Grants untuk melakukan tindakan S3 pada data S3 yang dapat mereka akses. Berikut ini adalah daftar tindakan S3 yang diijinkan yang dapat dilakukan oleh penerima hibah. Tindakan mana yang diizinkan tergantung pada tingkat izin yang diberikan dalam hibah akses, baik, READWRITE, atauREADWRITE.

catatan

Selain izin Amazon S3 yang tercantum di bawah ini, Amazon S3 dapat memanggil izin AWS Key Management Service (AWS KMS) Decrypt () atau izin (kms:decrypt)READ. AWS KMS GenerateDataKeykms:generateDataKeyWRITE Izin ini tidak mengizinkan akses langsung ke AWS KMS kunci.

Tindakan IAM S3 Tindakan & dokumen API Izin Hibah Akses S3 Sumber daya S3
s3:GetObject GetObject READ Objek
s3:GetObjectVersion GetObject READ Objek
s3:GetObjectAcl GetObjectAcl READ Objek
s3:GetObjectVersionAcl GetObjectAcl READ Objek
s3:ListMultipartUploads ListParts READ Objek
s3:PutObject PutObject, CreateMultipartUpload, UploadPart, UploadPartCopy, CompleteMultipartUpload WRITE Objek
s3:PutObjectAcl PutObjectAcl WRITE Objek
s3:PutObjectVersionAcl PutObjectAcl WRITE Objek
s3:DeleteObject DeleteObject WRITE Objek
s3:DeleteObjectVersion DeleteObject WRITE Objek
s3:AbortMultipartUpload AbortMultipartUpload WRITE Objek
s3:ListBucket HeadBucket, ListObjectsV2, ListObjects READ Bucket
s3:ListBucketVersions ListObjectVersions READ Bucket
s3:ListBucketMultipartUploads ListMultipartUploads READ Bucket