Ejemplo de código Perl usando el API compatible con DreamObjects S3

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

Crear una Conexión

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

use Amazon::S3;
my $access_key = 'put your access key here!';
my $secret_key = 'put your secret key here!';

my $conn = Amazon::S3->new({
        aws_access_key_id     => $access_key,
        aws_secret_access_key => $secret_key,
        host                  => 'objects-us-east-1.dream.io',
        secure                => 1,
        retry                 => 1,
});
 

Enlistar Buckets Propios

Obtiene una lista de objects de Amazon::S3::Bucket que posees e imprime el nombre del bucket y la fecha de creación de cada bucket.

my @buckets = @{$conn->buckets->{buckets} || []};
foreach my $bucket (@buckets) {
        print $bucket->bucket . "\t" . $bucket->creation_date . "\n";
}

La salida se verá 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.

my $bucket = $conn->add_bucket({ bucket => 'my-new-bucket' });
 

Elistar el Contenido de un Bucket

Obtiene una lista de hashes con información sobre cada object en el bucket e imprime cada nombre del object, el tamaño del archivo, y la última fecha de modificación.

my @keys = @{$bucket->list_all->{keys} || []};
foreach my $key (@keys) {
        print "$key->{key}\t$key->{size}\t$key->{last_modified}\n";
}

La salida se verá 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 funcionará.

$conn->delete_bucket($bucket);
 

Forzar la Eliminación para Bucker No vacíos

No disponible en el módulo Amazon::S3 perl

 

Crear un Object

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

$bucket->add_key(
        'hello.txt', 'Hello World!',
        { content_type => 'text/plain' },
);
 

Cambiar el ACL de un Object

Hace el object hello.txt legible para el público y secret_plans.txt que sea privado.

$bucket->set_acl({
        key       => 'hello.txt',
        acl_short => 'public-read',
});
$bucket->set_acl({
        key       => 'secret_plans.txt',
        acl_short => 'private',
});
 

Descargar un Object (a un archivo)

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

$bucket->get_key_filename('perl_poetry.pdf', undef,
        '/home/username/documents/perl_poetry.pdf');
 

Eliminar un Object

Elimina el object goodbye.txt.

$bucket->delete_key('goodbye.txt');
 

Generar URL de Descarga de un Objeto (firmar y sin firmar)

Esto fenera una URL de descarga sin firma para hello.txt. Esto funciona por que hello.txt fue hecho público por la configuración ACL de arriba. Luego esto genera una URL de descarga firmada para secret_plans.txt esto funcionará por 1 hora. URL de descarga firmadas funcionarán por un periodo de tiempo aun si el object es privado (cuando el periodo se acaba, la URL dejará de funcionar.

El Amazon::S3 módulo no tiene ninguna manera de generar URL de descarga, entonces estos ejemplos usan otro módulo en vez. Desafortunadamente, muchos módulos para generar estas URL asumen que estás usando Amazon. Por esta razón, un módulo más obscuro, Muck::FS::S3 es usado. Esto debe ser lo mismo que módulo perl de ejemplo S3 de Amazon, pero este módulo de ejemplo no es un CPAN. Entonces, puedes o usar CPAN para instalar Muck::FS::S3, o instalar un módulo de Amazon S3 de ejemplo manualmente. Si vas a la ruta del manual, puedes eliminar Muck::FS:: del ejemplo a continuación.

use Muck::FS::S3::QueryStringAuthGenerator;
my $generator = Muck::FS::S3::QueryStringAuthGenerator->new(
        $access_key,
        $secret_key,
        0, # 0 means use 'http'. set this to 1 for 'https'
        'objects-us-east-1.dream.io',
);

my $hello_url = $generator->make_bare_url($bucket->bucket, 'hello.txt');
print $hello_url . "\n";

$generator->expires_in(3600); # 1 hour = 3600 seconds
my $plans_url = $generator->get($bucket->bucket, 'secret_plans.txt');
print $plans_url . "\n";

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

https://objects-us-east-1.dream.io:80/my-bucket-name/hello.txt
https://objects-us-east-1.dream.io:80/my-bucket-name/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?