Ejemplo de código Java con el API compatible con DreamObjects S3

Este artículo enlista muchos ejemplos de código para interactuar con DreamObjects.

 

Configuración

Los siguientes ejemplos pueden requerir algunas o todas de las siguientes clases de Java para ser importados:

import java.io.ByteArrayInputStream;
import java.io.File;
import java.util.List;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.util.StringUtils;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.Bucket;
import com.amazonaws.services.s3.model.CannedAccessControlList;
import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;
import com.amazonaws.services.s3.model.GetObjectRequest;
import com.amazonaws.services.s3.model.ObjectListing;
import com.amazonaws.services.s3.model.ObjectMetadata;
import com.amazonaws.services.s3.model.S3ObjectSummary;
 

Crear una Conexión

Crea una conexión para que puedas interactuar con el servidor.

String accessKey = "insert your access key here!";
String secretKey = "insert your secret key here!";

AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
AmazonS3 conn = new AmazonS3Client(credentials);
conn.setEndpoint("objects-us-east-1.dream.io");
 

Enlistar Buckets Propios

Obtiene una lista de tus propios Buckets. Esto también imprime el nombre del bucket y la fecha de creación de cada uno.

List buckets = conn.listBuckets();
for (Bucket bucket : buckets) {
        System.out.println(bucket.getName() + "\t" +
                StringUtils.fromDate(bucket.getCreationDate()));
}

La salida se ve más o menos así:

mahbuckat1   2011-04-21T18:05:39.000Z
mahbuckat2   2011-04-21T18:05:48.000Z
mahbuckat3   2011-04-21T18:07:18.000Z
 

Crear un Bucket

Crea un bucket llamado my-new-bucket.

Bucket bucket = conn.createBucket("my-new-bucket");
 

Enlistar Contenido de un Bucket

Obtiene una lista de los objects dentro del bucket. Esto también imprime cada nombre de los objects, el tamaño del archivo, y la última fecha de modificación.

ObjectListing objects = conn.listObjects(bucket.getName());
do {
        for (S3ObjectSummary objectSummary : objects.getObjectSummaries()) {
                System.out.println(objectSummary.getKey() + "\t" +
                        ObjectSummary.getSize() + "\t" +
                        StringUtils.fromDate(objectSummary.getLastModified()));
        }
        objects = conn.listNextBatchOfObjects(objects);
} while (objects.isTruncated());

La salida se ve más o menos así:

myphoto1.jpg 251262  2011-08-08T21:35:48.000Z
myphoto2.jpg 262518  2011-08-08T21:38:01.000Z
 

Eliminar un Bucket

El bucket debe estar vacío, si no no funciona.

conn.deleteBucket(bucket.getName());
 

Forzar Elmiminación para Buckets No vacíos

no disponible

 

Crear un Object

Crea un archivo hello.txt con la cadena "Hello World!"

ByteArrayInputStream input = new ByteArrayInputStream("Hello World!".getBytes());
conn.putObject(bucket.getName(), "hello.txt", input, new ObjectMetadata());
 

Cambiar el ACL de un Object

Hace el object hello.txt legíble para el público y secret_plans.txt que sea privado.

conn.setObjectAcl(bucket.getName(), "hello.txt", CannedAccessControlList.PublicRead);
conn.setObjectAcl(bucket.getName(), "secret_plans.txt", CannedAccessControlList.Private);
 

Descargar un Object (a un archivo)

Descarga el object perl_poetry.pdf y lo guarda en /home/username/documents. Asegúrate de cambiar username a tu usuario Shell.

conn.getObject(
        new GetObjectRequest(bucket.getName(), "perl_poetry.pdf"),
        new File("/home/username/documents/perl_poetry.pdf")
);
 

Eliminar un Object

Elimina el object goodbye.txt

conn.deleteObject(bucket.getName(), "goodbye.txt");
 

Generar URL de Descarga de Objects (firmado y sin firmar)

Generar una URL sin firmar para hello.txt. Esto funciona por que hello.txt fue hecho público por la configuración de ACL de arriba. Esto genera una URL de descarga para secret_plans.txt que funcionará por 1 hora. URL de descarga firmadas funcionarán por un periodo de tiempo aún si el objeto es privado (cuando el tiempo se termina, la URL deja de funcionar).

La librería de Java no tiene un método para generar URL sin firmar, por lo que el siguiente ejemplo solo genera una URL firmada.

GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucket.getName(), "secret_plans.txt");
System.out.println(conn.generatePresignedUrl(request));

La salida se verá mas o menos así:

https://my-bucket-name.objects-us-east-1.dream.io/secret_plans.txt?Signature=XXXXXXXXXXXXXXXXXXXXXXXXXXX&Expires=1316027075&AWSAccessKeyId=XXXXXXXXXXXXXXXXXXX

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?