4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

perlでAzureのBlob操作

Posted at

perl関連でAzureのBlobの操作。

サンプルなどはここに書いてありますが、最初はちょっとてこずる。
http://junnama.alfasado.net/online/2013/12/netazurestrageclientcpan.html

まずは、CPANの「Net::Azure::StorageClient」を使えるようにする。

環境はUbuntsu。

command
# apt-get install libxml-perl
# cpan -i Net::Azure::StorageClient

構成的に「test」というコンテナを作り、中に「20140616」というフォルダ、その中に「test.tsv」というファイル。
つまりは以下の構成。

  test
   |-20140616
        |-test.tsv

フォルダのリストの表示

list.pl
#!/usr/bin/perl

use Net::Azure::StorageClient::Blob;

my $blobService = Net::Azure::StorageClient::Blob->new(
                                    account_name => 'アカウント',
                                    primary_access_key => 'シークレットキー', );
my $res = $blobService->list_blobs( 'test', { options => 'prefix=20140616/' } );
my $xml = $res->content;
print "$xml";

シークレットなんかは自分でMSから取得したアカウントとか。

結果は以下のxml

result
<?xml version="1.0" encoding="utf-8"?>
<EnumerationResults ContainerName="https://アカウント.blob.core.windows.net/test">
  <Prefix>20140616/</Prefix>
  <Blobs>
    <Blob>
      <Name>20140616/test.tsv</Name>
      <Url>https://アカウント.blob.core.windows.net/test/20140616/test.tsv</Url>
      <Properties>
        <Last-Modified>Mon, 16 Jun 2014 12:34:39 GMT</Last-Modified>
        <Etag>0x8D1577679848FBC</Etag>
        <Content-Length>34</Content-Length>
        <Content-Type>text/tab-separated-values</Content-Type>
        <Content-Encoding /><Content-Language />
        <Content-MD5>tfxlTh3a1F1LiVPyrfawLw==</Content-MD5>
        <Cache-Control />
        <BlobType>BlockBlob</BlobType>
        <LeaseStatus>unlocked</LeaseStatus>
        <LeaseState>available</LeaseState>
      </Properties>
    </Blob>
  </Blobs><NextMarker />
</EnumerationResults>

フォルダのダウンロード

test.tsvというファイルをダウンロードしています。
ローカルをフォルダで指定するとエラーになります。

フォルダ単位でのアップとかは出来そう。

get.pl
#!/usr/bin/perl

use Net::Azure::StorageClient::Blob;

my $blobService = Net::Azure::StorageClient::Blob->new(
                                    account_name => 'アカウント',
                                    primary_access_key => 'シークレットキー', );
my $res = $blobService->download('test/20140616/test.tsv', '/tmp/test.tsv');
my $xml = $res->message;
print "$xml";

★結果

OK

「$res->content;」とかすると中身表示しちゃう。

ファイルのアップロード

ローカルの「/tmp/up.txt」をアップロードしています。

up.pl
#!/usr/bin/perl

use Net::Azure::StorageClient::Blob;

my $blobService = Net::Azure::StorageClient::Blob->new(
                                    account_name => 'アカウント',
                                    primary_access_key => 'シークレットキー', );
my $res = $blobService->upload('test/20140616/up.txt', '/tmp/up.txt');
my $xml = $res->message;
print "$xml";

★結果

Created

慣れると操作は色々。

上のリンクのブログにあるようにフォルダにファイル5000個以上の時とか、スレッド増やしたりとか色々癖はありそう。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?