O AWS SDK for Java 1.x entrou no modo de manutenção em 31 de julho de 2024 e chegará end-of-support
As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Realizar operações em objetos do Amazon S3
Um objeto do Amazon S3 representa um arquivo ou um conjunto de dados. Cada objeto deve residir em um bucket.
nota
Esses exemplos de código pressupõem que você entenda o material em Usar o AWS SDK for Java e tenha configurado credenciais da AWS padrão usando as informações em Configurar credenciais e região da AWS para desenvolvimento.
Tópicos
Fazer upload de um objeto
Use o método putObject
de cliente do AmazonS3 fornecendo um nome de bucket, um nome de chave e um arquivo para upload. O bucket deve existir ou isso resultará em um erro.
Importações
import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3;
Código
System.out.format("Uploading %s to S3 bucket %s...\n", file_path, bucket_name); final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { s3.putObject(bucket_name, key_name, new File(file_path)); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }
Veja o exemplo completo
Listar objetos
Para obter uma lista de objetos em um bucket, use o método listObjects
de cliente do AmazonS3 fornecendo o nome de um bucket.
O método listObjects
retorna um objeto ObjectListing que fornece informações sobre os objetos no bucket. Para listar os nomes de objeto (chaves), use o método getObjectSummaries
para obter uma lista de objetos S3ObjectSummary, cada um dos quais representa um único objeto no bucket. Depois disso, chame o método getKey
para recuperar o nome do objeto.
Importações
import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.ListObjectsV2Result; import com.amazonaws.services.s3.model.S3ObjectSummary;
Código
System.out.format("Objects in S3 bucket %s:\n", bucket_name); final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); ListObjectsV2Result result = s3.listObjectsV2(bucket_name); List<S3ObjectSummary> objects = result.getObjectSummaries(); for (S3ObjectSummary os : objects) { System.out.println("* " + os.getKey()); }
Veja o exemplo completo
Fazer download de um objeto
Use o método getObject
de cliente do AmazonS3 passando o nome de um bucket e o objeto para fazer download. Se bem-sucedido, o método retornará um S3Object. O bucket especificado e a chave de objeto devem existir ou isso resultará em um erro.
É possível obter o conteúdo do objeto chamando getObjectContent
no S3Object
. Isso retorna um S3ObjectInputStream que se comporta como um objeto InputStream
do Java padrão.
O exemplo a seguir faz download de um objeto do S3 e salva o conteúdo em um arquivo (usando o mesmo nome da chave do objeto).
Importações
import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.S3Object; import com.amazonaws.services.s3.model.S3ObjectInputStream; import java.io.File;
Código
System.out.format("Downloading %s from S3 bucket %s...\n", key_name, bucket_name); final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { S3Object o = s3.getObject(bucket_name, key_name); S3ObjectInputStream s3is = o.getObjectContent(); FileOutputStream fos = new FileOutputStream(new File(key_name)); byte[] read_buf = new byte[1024]; int read_len = 0; while ((read_len = s3is.read(read_buf)) > 0) { fos.write(read_buf, 0, read_len); } s3is.close(); fos.close(); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } catch (FileNotFoundException e) { System.err.println(e.getMessage()); System.exit(1); } catch (IOException e) { System.err.println(e.getMessage()); System.exit(1); }
Veja o exemplo completo
Copiar, mover ou renomear objetos
É possível copiar um objeto de um bucket para outro usando o método copyObject
de cliente do AmazonS3. Ele utiliza o nome do bucket do qual será feita a cópia, o objeto a ser copiado e o nome do bucket de destino.
Importações
import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions;
Código
try { s3.copyObject(from_bucket, object_key, to_bucket, object_key); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } System.out.println("Done!");
Veja o exemplo completo
nota
Você pode usar copyObject
com deleteObject para migrar ou renomear um objeto copiando primeiro o objeto para um novo nome (você pode usar o mesmo bucket na origem e no destino) e excluindo o objeto do local anterior.
Excluir um objeto
Use o método deleteObject
de cliente do AmazonS3, passando o nome de um bucket e o objeto a ser excluído. O bucket especificado e a chave de objeto devem existir ou isso resultará em um erro.
Importações
import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions;
Código
final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { s3.deleteObject(bucket_name, object_key); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }
Veja o exemplo completo
Excluir vários objetos de uma só vez
Usando o método deleteObjects
de cliente do AmazonS3, você pode excluir vários objetos do mesmo bucket passando seus nomes para o método link:sdk-for-java/v1/reference/com/amazonaws/services/s3/model/DeleteObjectsRequest.html.
Importações
import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3;
Código
final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { DeleteObjectsRequest dor = new DeleteObjectsRequest(bucket_name) .withKeys(object_keys); s3.deleteObjects(dor); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }
Veja o exemplo completo