鈍足ランナーのIT日記

走るのが好きな5流のITエンジニアのブログ。

趣味の範囲は広いけど、どれも中途半端なクソブロガー楽しめるWebアプリを作ってあっと言わせたい。サーバーサイドPerl(Mojolicious)、クライアントサイドVue.js。Arduinoにも触手を伸ばす予定。

さくらbase StrageをPerlから使ってみる

さくらBaseストレージを使ってみよう。 バケットを作るところはコマンドラインで作りたいなと 思い。 開発機WindowsだからS3Expressというのをダウンロードしてみた。

Amazon S3 Tools: Command Line S3 Client and S3 Backup for Windows, Linux: s3cmd, s3express

さくらのBASE Storageで「access key」「secret key」に相当する項目は?
ネームスペース管理画面において、ユーザ名が「access key」に、トークンが「secret key」に相当します

さくらのFAQにアクセスキーとシークレットキーの説明あり、なるほど。

S3ExpressはAmazon S3専用?接続先をさくらに変えられないのかな。

S3Express Help

setopt -endpoint:/b.storage.sakura.ad.jp

どうも、ネームスペース=バケットになっているようで S3Expressコマンドからmkbktする必要はないようでした。 (現在のBASEストレージは1バケットしか割り当ててもらえないということ。β版だからだと思われる。)

しかし、Perlで使う時に問題が Net::Amazon::S3はURLをカスタマイズできそうになくて、 S3互換とつなげないような気がする。 Amazon::S3モジュールだとhostというキーの値でカスタマイズできそう。

以下のようなソースで無事にさくらBASEストレージに格納されるところまで 確認できました。

  my $s3 = Amazon::S3->new({   
    aws_access_key_id     => $self->config->{aws_access_key_id},
    aws_secret_access_key => $self->config->{aws_secret_access_key},
    host                  => $self->config->{aws_host},
    retry                 => 1,
  });

  my $bucket = $s3->bucket($self->config->{aws_bucket});

  #中略

  $bucket->add_key_filename( $savename, $fname_mp3,
               { content_type => 'audio/mp3', },
  ) or die $s3->err . ": " . $s3->errstr;

Amazon::S3::Bucket - search.cpan.org でいろいろ操作すればいいかんじ。