Accedere al Cloud Object Storage con Perl
Da WikiCloud.
Indice |
Utilizzare Amazon-S3-0.41.2
Esistono diverse soluzioni per accedere al proprio bucket utilizzando Perl.
In questo esempio utilizzeremo la seguente libreria:
Progetto Originale: Amazon-S3-0.41.2
Progetto modificato per l'utilizzo con il Cloud Object Storage: Amazon-S3-0.41.2 per Cloud Object Storage
Questa guida è stata sviluppata su una distribuzione Debian GNU/Linux ma dovrebbe funzionare senza grossi problemi anche su altre distribuzioni o architetture.
Installazione Amazon-S3-0.41.2
L'installazione della libreria è molto semplice:
perl Makefile.PL make make test make install
possono essere richieste alcune dipendenze in base ai pacchetti installati sul proprio sistema.
Autenticazione
Di seguito è riportata la parte iniziale per l'autenticazione e le dichiarazioni necessarie al funzionamento della libreria.
#!/usr/bin/perl use warnings; use strict; use Amazon::S3; use vars qw/$OWNER_ID $OWNER_DISPLAYNAME/; my $aws_access_key_id = "cosXXXX"; my $aws_secret_access_key = "XXXXXX"; my $s3 = Amazon::S3->new( { aws_access_key_id => $aws_access_key_id, aws_secret_access_key => $aws_secret_access_key } ); my $response = $s3->buckets;
Creare un bucket
Per poter iniziare ad utilizzare il Cloud Object Storage è necessario creare un bucket
my $bucket_name = "prova"; my $bucket = $s3->add_bucket( { bucket => $bucket_name } ) or die $s3->err . ": " . $s3->errstr;
Nel bucket è ora possibile inserire gli oggetti.
Caricare un oggetto in un bucket
In questo esempio verrà caricato il file logo.gif presente sul client nel bucket prova.
my $file="logo.gif"; $bucketName="prova"; my $bucket = $s3->bucket($bucketName); $bucket->add_key_filename($keyname,$keyname);
Prelevare un oggetto da un bucket
Il seguente codice preleva il file "prova.pdf" dal bucket "prova" e lo salva localmente con il nome "$keyname".
my $bucket = $s3->bucket("prova"); my $keyname = 'prova.pdf'; $bucket->get_key_filename($keyname,GET,$keyname);
Mostra il contenuto di un bucket
Visualizza tutti gli oggetti che appartengono ad un bucket. Questa operazione può essere particolarmente onerosa, in termini di prestazioni, in proporzione al numero di oggetti presenti nel bucket.
$response = $bucket->list or die $s3->err . ": " . $s3->errstr; print $response->{bucket}."\n"; for my $key (@{ $response->{keys} }) { print "\t".$key->{key}."\n"; }
Cancellare un oggetto in un bucket
Le seguenti istruzioni cancelleranno il file "logo.gif" dal bucket "prova".
my $bucket = $s3->bucket("prova"); $bucket->delete_key("logo.gif");
Cancellare un bucket
Le istruzioni seguenti cancellano il bucket "prova". Il bucket deve essere vuoto.
my $bucket = $s3->bucket("prova"); $bucket->delete_bucket;