- Configuración
- Crear una Conexión
- Enlistar Buckets Propios
- Crear un Bucket
- Enlistar Contenido de un Bucket
- Eliminar un Bucket
- Forzar Eliminación para Buckets No vacíos
- Crear un Object
- Cambiar el ACL de un Object
- Descargar un Object (a un archivo)
- Eliminar un Object
- Generar URL de Descarga de Objects (firmar o sin firmar)
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