• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Amazon S3 in Perl
 

Amazon S3 in Perl

on

  • 2,283 views

Usare Amazon S3 in Perl può essere più semplice di quanto pensiate.

Usare Amazon S3 in Perl può essere più semplice di quanto pensiate.

Statistics

Views

Total Views
2,283
Views on SlideShare
2,252
Embed Views
31

Actions

Likes
2
Downloads
14
Comments
2

4 Embeds 31

https://duckduckgo.com 24
http://www.polettix.it 5
http://www.slideshare.net 1
http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

12 of 2 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Amazon S3 in Perl Amazon S3 in Perl Presentation Transcript

  • Amazon S3 Perl Web Client
  • ?
  • http://aws.amazon.com/s3/
  • Repository Repository Repository Amazon S3 Client
  • Repository Repository Repository ? Amazon S3 Client
  • $
  • Repository Repository Repository Amazon S3 Client
  • Repository Repository Repository Amazon S3 HTTP Client
  • Repository Repository Repository Amazon S3 HTTP Client
  • Repository Repository Repository Amazon S3 HTTP Client
  • Oggetto/File
  • Chiave => Valore
  • 1 byte - 5 Gbyte
  • 1 byte - 5 Gbyte
  • 1 byte - 5 Gbyte
  • 1 byte - 5 Gbyte Non in scala!
  • Quanti ne volete
  • Bucket
  • Fino a 100
  • Nome Univoco
  • Net::Amazon::S3
  • ->new() use Net::Amazon::S3; my $s3 = Net::Amazon::S3->new({ aws_access_key_id => 'chiave-aws', aws_secret_access_key => 'shhhh!', retry => 1, });
  • ->new() use Net::Amazon::S3; my $s3 = Net::Amazon::S3->new({ aws_access_key_id => 'chiave-aws', aws_secret_access_key => 'shhhh!', retry => 1, });
  • ->new() use Net::Amazon::S3; my $s3 = Net::Amazon::S3->new({ aws_access_key_id => 'chiave-aws', aws_secret_access_key => 'shhhh!', retry => 1, }); http://aws.amazon.com/s3/
  • retry
  • retry secure
  • retry secure timeout
  • ->buckets() my $buckets = $s3->buckets(); my $owner = $buckets->{owner_displayname}; my $owner_id = $buckets->{owner_id}; say "Bucket di $proprietario ", "($owner_id):";
  • ->buckets() my $aref = $buckets->{buckets}; for my $bucket (@$aref) { my $nome = $bucket->bucket(); my $data = $bucket->creation_date(); say "t$nome, creato il $data"; }
  • ->add_bucket() my $bucket = $s3->add_bucket({ bucket => ’foto-pippo’, acl_short => ’public-read’, # location_constraint => ’EU’, });
  • ->add_bucket() my $bucket = $s3->add_bucket({ bucket => ’foto-pippo’, acl_short => ’public-read’, # location_constraint => ’EU’, });
  • ->add_bucket() my $bucket = $s3->add_bucket({ bucket => ’foto-pippo’, acl_short => ’public-read’, # location_constraint => ’EU’, });
  • ->add_bucket() my $bucket = $s3->add_bucket({ bucket => ’foto-pippo’, acl_short => ’public-read’, # location_constraint => ’EU’, });
  • Dice il Saggio:
  • “No Lettere Maiuscole!”
  • acl_short?
  • public-read
  • private public-read
  • private authenticated-read public-read
  • private authenticated-read public-read public-read-write
  • Eliminazione
  • Eliminazione $s3->delete_bucket( {bucket => ’buttami-via’});
  • Eliminazione $s3->delete_bucket( {bucket => ’buttami-via’}); $s3->delete_bucket($bucket);
  • Eliminazione $s3->delete_bucket( {bucket => ’buttami-via’}); $s3->delete_bucket($bucket); $bucket->delete_bucket();
  • Ricordate: 100 bucket!
  • Chiavi
  • list_bucket() my $risultato = $s3->list_bucket({ bucket => ’photo’, });
  • Limiti
  • list_bucket() my $risultato = $s3->list_bucket({ bucket => ’photo’, max_keys => 100, prefix => ’immagini/’, delimiter => ’/’, });
  • list_bucket() my $risultato = $s3->list_bucket({ bucket => ’photo’, max_keys => 100, prefix => ’immagini/’, delimiter => ’/’, });
  • list_bucket() my $risultato = $s3->list_bucket({ bucket => ’photo’, max_keys => 100, prefix => ’immagini/’, delimiter => ’/’, });
  • prefix immagini/vacanze/IMG_0001.JPG immagini/vacanze/IMG_0002.JGP immagini/vacanze/IMG_0003.JGP immagini/tizio.jpg immagini/caio.png lavoro/boh.pdf
  • list_bucket() my $risultato = $s3->list_bucket({ bucket => ’photo’, max_keys => 100, prefix => ’immagini/’, delimiter => ’/’, });
  • prefix + delimiter immagini/vacanze/IMG_0001.JPG immagini/vacanze/IMG_0002.JGP immagini/vacanze/IMG_0003.JGP immagini/tizio.jpg immagini/caio.png lavoro/boh.pdf
  • risultato immagini/vacanze immagini/tizio.jpg immagini/caio.png
  • risultato prefisso “comune”! immagini/vacanze immagini/tizio.jpg immagini/caio.png
  • marker
  • lista di una “directory” my %ricerca = ( bucket => ’photo’, prefix => ’immagini/’, delimiter => ’/’, );
  • lista di una “directory” while (1) { my $risultato = $s3->list_bucket(%ricerca) or die ’errore’; say "dir : $_" for @{ $risultato->{common_prefixes} }; say "file: $_->{key}" for @{ $risultato->{keys} }; last unless $risultato->{is_truncated}; $impostazioni_ricerca{marker} = $risultato->{next_marker}; }
  • lista di una “directory” while (1) { my $risultato = $s3->list_bucket(%ricerca) or die ’errore’; say "dir : $_" for @{ $risultato->{common_prefixes} }; say "file: $_->{key}" for @{ $risultato->{keys} }; last unless $risultato->{is_truncated}; $impostazioni_ricerca{marker} = $risultato->{next_marker}; }
  • lista di una “directory” while (1) { my $risultato = $s3->list_bucket(%ricerca) or die ’errore’; say "dir : $_" for @{ $risultato->{common_prefixes} }; say "file: $_->{key}" for @{ $risultato->{keys} }; last unless $risultato->{is_truncated}; $impostazioni_ricerca{marker} = $risultato->{next_marker}; }
  • lista di una “directory” while (1) { my $risultato = $s3->list_bucket(%ricerca) or die ’errore’; say "dir : $_" for @{ $risultato->{common_prefixes} }; say "file: $_->{key}" for @{ $risultato->{keys} }; last unless $risultato->{is_truncated}; $impostazioni_ricerca{marker} = $risultato->{next_marker}; }
  • lista di una “directory” while (1) { my $risultato = $s3->list_bucket(%ricerca) or die ’errore’; say "dir : $_" for @{ $risultato->{common_prefixes} }; say "file: $_->{key}" for @{ $risultato->{keys} }; last unless $risultato->{is_truncated}; $impostazioni_ricerca{marker} = $risultato->{next_marker}; }
  • lista di una “directory” while (1) { my $risultato = $s3->list_bucket(%ricerca) or die ’errore’; say "dir : $_" for @{ $risultato->{common_prefixes} }; say "file: $_->{key}" for @{ $risultato->{keys} }; last unless $risultato->{is_truncated}; $impostazioni_ricerca{marker} = $risultato->{next_marker}; }
  • Perl, baby
  • lista di una “directory” my $risultato = $s3->list_bucket_all({ bucket => ’photo’, prefix => ’immagini/’, delimiter => ’/’, }); say "dir : $_" for @{ $risultato->{common_prefixes} }; say "file: $_->{key}" for @{ $risultato->{keys} };
  • Oggetti, finalmente!
  • Aggiunta my $bucket = $s3->bucket(’bucket-lavoro’); $bucket->add_key(’un/file/allegro‘ => "Ciao a tutti!n");
  • Aggiunta $bucket->add_key(chiave => ‘valore!’, { content_type => ’text/plain’, acl_short => ’public-read’, ’x-amz-meta-info’ => ’baz!!!’, } );
  • Aggiunta $bucket->add_key_filename( ‘mio/file.txt’, ‘/path/to/file.txt’, )
  • Download my $bucket = $s3->bucket(’il-mio-bucket’); my $dati = $bucket->get_key(’un/file/allegro’);
  • Download my $bucket = $s3->bucket(’il-mio-bucket’); my $dati = $bucket->get_key(’un/file/allegro’);
  • Download $dati = { content_type => ‘text/plain’, etag => ‘44b6...f367’, content => “Ciao a tutti!n”, # ... };
  • Download my $bucket = $s3->bucket(’il-mio-bucket’); my $dati = $bucket->get_key_filename( ’un/file/allegro’, undef, ‘/salvalo/qui’);
  • Download per eccellenza
  • public_read public_read_write
  • http:// bucket.s3.amazonaws.com/ chiave
  • http:// polettix.s3.amazonaws.com/ tmp/pwc.tar.gz
  • Net::Amazon::S3::ACL
  • Attori
  • Attori • proprietario
  • Attori • proprietario • altro utente Amazon S3
  • Attori • proprietario • altro utente Amazon S3 • tutti gli utenti Amazon S3
  • Attori • proprietario • altro utente Amazon S3 • tutti gli utenti Amazon S3 • tutti
  • Diritti
  • Diritti • lettura
  • Diritti • lettura • scrittura
  • Diritti • lettura • scrittura • lettura ACP
  • Diritti • lettura • scrittura • lettura ACP • scrittura ACP
  • Diritti • lettura • scrittura • lettura ACP • scrittura ACP • controllo completo
  • N::A::S::ACL use Net::Amazon::S3::ACL; my $acl = Net::Amazon::S3::ACL->new(); my $acl_xml = $bucket->get_acl(’etc/passwd’); $acl->parse($acl_xml); say $acl->stringify(); # XML say $acl->dump(); # YAML, se presente
  • ->add() $acl->add( ’foo@example.com’ => ’WRITE’, ALL => ’READ’, ’dfadffadf...‘ => ’*’, );
  • set_acl() $bucket->set_acl({ key => $chiave, acl_xml => $acl->stringify(), });
  • Upload da esterni
  • Net::Amazon::S3::Policy
  • F M Net::Amazon::S3::Policy T R
  • F M Net::Amazon::S3::Policy T R Friendly
  • ?
  • !