Acessar os dados do S3 usando credenciais fornecidas pelo recurso Concessão de Acesso do S3 - Amazon Simple Storage Service

Acessar os dados do S3 usando credenciais fornecidas pelo recurso Concessão de Acesso do S3

Depois que um beneficiário obtém credenciais temporárias por meio de uma concessão de acesso, ele pode usar essas credenciais temporárias para chamar as operações de API do Amazon S3 para acessar os dados.

Os beneficiários podem acessar dados do S3 usando a AWS Command Line Interface (AWS CLI), os AWS SDKs e a API REST do Amazon S3. Além disso, é possível usar os plug-ins Python e Java da AWS para chamar o recurso Concessão de Acesso do S3.

Depois que o beneficiário obtém as credenciais temporárias da funcionalidade Concessões de Acesso do S3, ele pode configurar um perfil com essas credenciais para recuperar os dados.

Para instalar a AWS CLI, consulte Instalar a AWS CLI no Guia do usuário da AWS Command Line Interface.

Para usar os comandos a seguir, substitua os user input placeholders por suas próprias informações.

exemplo : configurar um perfil
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

Para usar o comando a seguir, substitua os user input placeholders por suas próprias informações.

exemplo : obter os dados do S3

O beneficiário pode usar o comando get-object da AWS CLI para acessar os dados. O beneficiário também pode usar put-object, ls e outros comandos da AWS CLI do S3.

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

Esta seção fornece exemplos de como os beneficiários podem acessar os dados do S3 usando os AWS SDKs.

Java

O exemplo de código Java a seguir obtém um objeto de um bucket do S3. Consulte instruções sobre como criar e testar uma amostra funcional em Getting Started no Guia do desenvolvedor do AWS SDK para 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(); } }

Ações do S3 aceitas no recurso Concessão de Acesso do S3

Um beneficiário pode usar a credencial temporária fornecida pelo recurso Concessão de Acesso do S3 para realizar ações do S3 nos dados do S3 aos quais ele tem acesso. Veja a seguir uma lista de ações permitidas do S3 que um beneficiário pode realizar. As ações permitidas dependem do nível de permissão indicado na concessão de acesso, como READ, WRITE ou READWRITE.

nota

Além das permissões do Amazon S3 listadas abaixo, o Amazon S3 pode chamar a permissão Decrypt do AWS Key Management Service (AWS KMS) (kms:decrypt) READ ou a GenerateDataKey do (AWS KMS) (kms:generateDataKey) WRITE. Essas permissões não autorizam acesso direto à chave do AWS KMS.

Ação do IAM no S3 Ação e documentação da API Permissão do recurso Concessão de Acesso do S3 Recurso do S3
s3:GetObject GetObject READ Objeto
s3:GetObjectVersion GetObject READ Objeto
s3:GetObjectAcl GetObjectAcl READ Objeto
s3:GetObjectVersionAcl GetObjectAcl READ Objeto
s3:ListMultipartUploads ListParts READ Objeto
s3:PutObject PutObject, CreateMultipartUpload, UploadPart, UploadPartCopy, CompleteMultipartUpload WRITE Objeto
s3:PutObjectAcl PutObjectAcl WRITE Objeto
s3:PutObjectVersionAcl PutObjectAcl WRITE Objeto
s3:DeleteObject DeleteObject WRITE Objeto
s3:DeleteObjectVersion DeleteObject WRITE Objeto
s3:AbortMultipartUpload AbortMultipartUpload WRITE Objeto
s3:ListBucket HeadBucket, ListObjectsV2, ListObjects READ Bucket
s3:ListBucketVersions ListObjectVersions READ Bucket
s3:ListBucketMultipartUploads ListMultipartUploads READ Bucket