O AWS SDK para Java 1.x entrou no modo de manutenção em 31 de julho de 2024 e o fim do suporte
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 para 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 da
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 da
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 da
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 da
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 (é possível 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 da
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 da
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