ラベル AmazonS3 の投稿を表示しています。 すべての投稿を表示
ラベル AmazonS3 の投稿を表示しています。 すべての投稿を表示

perlのs3syncをあきらめた話

AmazonS3へデータをバックアップするツールに、s3syncがある。
ググってみると、ruby版の経験談はたくさんあるけど、perl版がほとんどない。(なぜだろう。。。)と思いつつ、チャレンジ。

やることは多分
(1)サンプルコードをダウンロード
(2)必要なperlモジュールをインストール
(3)サンプルコードをベースに、バックアップスクリプトを作成
(4)テスト(バケットの下にディレクトリ構造を持ったバックアップができたら目的達成)

環境はMacOSXです。

(1)まずはサンプルソースをダウンロード。
AmazonWebServicesのDiscussionForumsにソースらしきファイルがあるので、とりあえずダウンロード。
s3.plとs3sync.plの2ファイルです。

(2)中身を見てみると、

〜
use Getopt::Std;
use XML::Simple;
〜
use S3::AWSAuthConnection;
〜


こんなモジュールがあればよいらしいので、一応、入ってるか見てみる。


$ perl -MGetopt::Std -e 1
$ perl -MXML::Simple -e 1
$ perl -MS3::AWSAuthConnection -e 1
Can't locate S3/AWSAuthConnection.pm in @INC (@INC contains: /Library/Perl/Updates/5.8.8/darwin-thread-multi-2level /Library/Perl/Updates/5.8.8 /System/Library/Perl/5.8.8/darwin-thread-multi-2level /System/Library/Perl/5.8.8 /Library/Perl/5.8.8/darwin-thread-multi-2level /Library/Perl/5.8.8 /Library/Perl /Network/Library/Perl/5.8.8/darwin-thread-multi-2level /Network/Library/Perl/5.8.8 /Network/Library/Perl /System/Library/Perl/Extras/5.8.8/darwin-thread-multi-2level /System/Library/Perl/Extras/5.8.8 /Library/Perl/5.8.6 /Library/Perl/5.8.1 .).
BEGIN failed--compilation aborted.


足らないのは「S3::AWSAuthConnection」だけのようなので、
CPANからインストールしようしたところ、


cpan> install S3::AWSAuthConnection
CPAN: Storable loaded ok
Going to read /var/root/.cpan/Metadata
Database was generated on Sat, 30 May 2009 22:27:00 GMT
CPAN: LWP::UserAgent loaded ok
Fetching with LWP:
ftp://ftp.dti.ad.jp/pub/lang/CPAN/authors/01mailrc.txt.gz
Going to read /var/root/.cpan/sources/authors/01mailrc.txt.gz
CPAN: Compress::Zlib loaded ok
Fetching with LWP:
ftp://ftp.dti.ad.jp/pub/lang/CPAN/modules/02packages.details.txt.gz
Going to read /var/root/.cpan/sources/modules/02packages.details.txt.gz
Database was generated on Sun, 28 Jun 2009 04:27:05 GMT

There's a new CPAN.pm version (v1.9402) available!
[Current version is v1.7602]
You might want to try
install Bundle::CPAN
reload cpan
without quitting the current session. It should be a seamless upgrade
while we are running...

Fetching with LWP:
ftp://ftp.dti.ad.jp/pub/lang/CPAN/modules/03modlist.data.gz
Going to read /var/root/.cpan/sources/modules/03modlist.data.gz
Going to write /var/root/.cpan/Metadata
Warning: Cannot install S3::AWSAuthConnection, don't know what it is.
Try the command

i /S3::AWSAuthConnection/

to find objects with matching identifiers.



CPANにないのかな?と、S3::AWSAuthConnection installでググってみるとS3 Backup - Missing Perl module S3::AWSAuthConnectに、Muck::FS::S3::AWSAuthConnectionという名前のモジュールだという記述あり。

さらにそんな記載がないか、AWSのDisscussionForumsを改めて読んでみると、なんと、perlは大変だからrubyで書き直してるとの記述が。。。

バグ修正や機能追加はもうないようなので、あきらめ、です。

NET::Amazon::S3でbucketを作成

perlモジュールNET::Amazon::S3を使ってbucketを作成する方法。

#!/usr/bin/perl

use strict;
use warnings;
use Net::Amazon::S3;

my $s3 = Net::Amazon::S3->new(
{ aws_access_key_id => 'ACCESSKEYID',
aws_secret_access_key => 'SECRETACCESSKEY',
}
);

my $bucketname = 'BUCKETNAME';
my $bucket = $s3->add_bucket( { bucket => $bucketname } )
or die $s3->err . ": " . $s3->errstr;

bucketnameはAmazonS3の中で一意になる必要があります。
自分で作ったbucketのサブbucketとして作成する方法は、
今のところ分かりません。。。

■MACにCPANをインストール
■MACにNET::Amazon::S3をインストール
■NET::Amazon::S3を使ってAmazonS3へファイルをアップロードしてみた
■NET::Amazon::S3でbucketを作成


参考:(Perl) LinuxサーバからAmazon S3を用いる (1/2)
参考:刺身☆ブーメランのはてなダイアリー
参考:CPAN

NET::Amazon::S3を使ってAmazonS3へファイルをアップロードしてみた

いよいよ、perlスクリプトを使って、AmazonS3へファイルをアップロードしてみます。

適当なディレクトリに以下のスクリプトを作成(file_to_s3.pl)して、
実行権限をつけて保存します。


#!/usr/bin/perl

use strict;
use warnings;
use Net::Amazon::S3;

my $s3 = Net::Amazon::S3->new(
{ aws_access_key_id => 'ACCESSKEYID',
aws_secret_access_key => 'SECRETACCESSKEY',
}
);

my $bucket = $s3->bucket('BUCKETNAME');

$bucket->add_key_filename( 'FILENAME_TO', 'FILENAME_FROM',
{ content_type => 'CONTENTTYPE',
acl_short => 'public-read',},
);


ACCESSKEYID は、AmazonS3のアクセスキーIDを入れてください。
SECRETACCESSKEY は、AmazonS3のシークレットアクセスキーを入れてください。
BUCKETNAME は、AmazonS3に作成したバケット名を入れてください。
FILENAME_TO は、AmazonS3内に保存する際のファイル名を入れてください。
FILENAME_FROM は、AmazonS3へ転送したいファイル名を入れてください。
CONTENTTYPE は、転送するファイルのタイプです。'text/html'を指定したら、ブラウザでアクセスした際にhtmlファイルとして表示できました。

perlスクリプトでAmazonS3へファイルをアップロードする際に、ACLを同時に変更するには、acl_short で public-read を指定します。
こうすると、Public属性が付与された(Everyone Read)状態でアップロードできます。


実行権限の付け方は、ターミナルを起動して、このスクリプトを保存したディレクトリに移動して、chmodで行います。

cd /スクリプトを保存したディレクトリ/
chmod 700 file_to_s3.pl(※スクリプト名)

試しに転送するファイルをtest.htmlとしてアップロードしてみました。

perlスクリプトの実行方法は、ターミナルで、

./file_to_s3.pl

でOK。
無事AmazonS3へtest.htmlが転送されました。

http://バケット名.s3.amazonaws.com/test.html

でブラウザで表示されました。

■MACにCPANをインストール
■MACにNET::Amazon::S3をインストール
■NET::Amazon::S3を使ってAmazonS3へファイルをアップロードしてみた

参考:(Perl) LinuxサーバからAmazon S3を用いる (1/2)
参考:刺身☆ブーメランのはてなダイアリー

MACにNET::Amazon::S3をインストール

続いて、CPANから、NET::Amazon::S3をインストール。

ターミナルを起動して、


sudo perl -MCPAN -e shell
Password:
Terminal does not support AddHistory.

cpan shell -- CPAN exploration and modules installation (v1.7602)
ReadLine support available (try 'install Bundle::CPAN')

cpan> install Net::Amazon::S3
CPAN: Storable loaded ok

〜中略〜

Appending installation info to /Library/Perl/Updates/5.8.8/darwin-thread-multi-2level/perllocal.pod
/usr/bin/make install -- OK

cpan>


途中、いくつもモジュールを(enter enterで)インストールすることになりました。
(インストール完了まで17692行。。。)

インストールされたか確認してみると、
cpan> i /モジュール名/

参考:Mac OSXでPerlの環境を整える。- CPANモジュールのインストールまで


cpan> i /Net::Amazon::S3/
Module Net::Amazon::S3 (L/LB/LBROCARD/Net-Amazon-S3-0.51.tar.gz)
Module Net::Amazon::S3::ACL (P/PO/POLETTIX/Net-Amazon-S3-ACL-0.1.0.tar.gz)
Module Net::Amazon::S3::ACL::Grant (P/PO/POLETTIX/Net-Amazon-S3-ACL-0.1.0.tar.gz)
Module Net::Amazon::S3::ACL::Grant::Email (P/PO/POLETTIX/Net-Amazon-S3-ACL-0.1.0.tar.gz)
Module Net::Amazon::S3::ACL::Grant::ID (P/PO/POLETTIX/Net-Amazon-S3-ACL-0.1.0.tar.gz)
Module Net::Amazon::S3::ACL::Grant::URI (P/PO/POLETTIX/Net-Amazon-S3-ACL-0.1.0.tar.gz)
Module Net::Amazon::S3::ACL::XMLHelper (P/PO/POLETTIX/Net-Amazon-S3-ACL-0.1.0.tar.gz)
Module Net::Amazon::S3::Bucket (L/LB/LBROCARD/Net-Amazon-S3-0.51.tar.gz)
Module Net::Amazon::S3::Client (L/LB/LBROCARD/Net-Amazon-S3-0.51.tar.gz)
Module Net::Amazon::S3::Client::Bucket (L/LB/LBROCARD/Net-Amazon-S3-0.51.tar.gz)
Module Net::Amazon::S3::Client::Object (L/LB/LBROCARD/Net-Amazon-S3-0.51.tar.gz)
Module Net::Amazon::S3::HTTPRequest (L/LB/LBROCARD/Net-Amazon-S3-0.51.tar.gz)
Module Net::Amazon::S3::Policy (P/PO/POLETTIX/Net-Amazon-S3-Policy-0.1.2.tar.gz)
Module Net::Amazon::S3::Request (L/LB/LBROCARD/Net-Amazon-S3-0.51.tar.gz)
Module Net::Amazon::S3::Request::CreateBucket (L/LB/LBROCARD/Net-Amazon-S3-0.51.tar.gz)
Module Net::Amazon::S3::Request::DeleteBucket (L/LB/LBROCARD/Net-Amazon-S3-0.51.tar.gz)
Module Net::Amazon::S3::Request::DeleteObject (L/LB/LBROCARD/Net-Amazon-S3-0.51.tar.gz)
Module Net::Amazon::S3::Request::GetBucketAccessControl (L/LB/LBROCARD/Net-Amazon-S3-0.51.tar.gz)
Module Net::Amazon::S3::Request::GetBucketLocationConstraint (L/LB/LBROCARD/Net-Amazon-S3-0.51.tar.gz)
Module Net::Amazon::S3::Request::GetObject (L/LB/LBROCARD/Net-Amazon-S3-0.51.tar.gz)
Module Net::Amazon::S3::Request::GetObjectAccessControl (L/LB/LBROCARD/Net-Amazon-S3-0.51.tar.gz)
Module Net::Amazon::S3::Request::ListAllMyBuckets (L/LB/LBROCARD/Net-Amazon-S3-0.51.tar.gz)
Module Net::Amazon::S3::Request::ListBucket (L/LB/LBROCARD/Net-Amazon-S3-0.51.tar.gz)
Module Net::Amazon::S3::Request::PutObject (L/LB/LBROCARD/Net-Amazon-S3-0.51.tar.gz)
Module Net::Amazon::S3::Request::SetBucketAccessControl (L/LB/LBROCARD/Net-Amazon-S3-0.51.tar.gz)
Module Net::Amazon::S3::Request::SetObjectAccessControl (L/LB/LBROCARD/Net-Amazon-S3-0.51.tar.gz)
Module Net::Amazon::S3::Tools (M/MR/MRA/Net-Amazon-S3-Tools-0.08.tar.gz)
27 items found

cpan> quit


(たぶん)無事、インストール完了。

■MACにCPANをインストール
■MACにNET::Amazon::S3をインストール
■NET::Amazon::S3を使ってAmazonS3へファイルをアップロードしてみた

MACにCPANをインストール

AmazonS3へperlでバックアップを取りたいと思い、
MACにNET::Amazon:S3をインストールするために、
まずは、MACへCPANのインストール。

MACのターミナルを起動して、

sudo -H cpan

参考:Mac OSXでPerlの環境を整える。- CPANモジュールのインストールまで

passowordはログインしているMACユーザーのパスワードでOK。
ftpサーバーを指定する以外は、enter enterです。
ノートンインターネットセキュリティを使ってるのでftpサーバーからの通信を許可するか、聞かれます。OKで。


$ sudo -H cpan

WARNING: Improper use of the sudo command could lead to data loss
or the deletion of important system files. Please double-check your
typing when using sudo. Type "man sudo" for more information.

To proceed, enter your password, or type Ctrl-C to abort.

Password:

〜中略〜

(1) Africa
(2) Asia
(3) Central America
(4) Europe
(5) North America
(6) Oceania
(7) South America
Select your continent (or several nearby continents) [] 2 ※地域を選択(Asia)
Sorry! since you don't have any existing picks, you must make a
geographic selection.

(1) China
(2) Hong Kong
(3) Indonesia
(4) Israel
(5) Japan
(6) Republic of Korea
(7) Russia
(8) Singapore
(9) Taiwan
(10) Thailand
(11) Turkey
(12) Viet Nam
Select your country (or several nearby countries) [] 5 ※国を選択(Japan)
Sorry! since you don't have any existing picks, you must make a
geographic selection.

(1) ftp://ftp.dti.ad.jp/pub/lang/CPAN/
(2) ftp://ftp.jaist.ac.jp/pub/CPAN/
(3) ftp://ftp.kddilabs.jp/CPAN/
(4) ftp://ftp.nara.wide.ad.jp/pub/CPAN/
(5) ftp://ftp.riken.jp/lang/CPAN/
(6) ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/
(7) ftp://ftp.u-aizu.ac.jp/pub/CPAN
(8) ftp://ftp.yz.yamagata-u.ac.jp/pub/lang/cpan/
Select as many URLs as you like (by number),
put them on one line, separated by blanks, e.g. '1 4 5' [] 1 3 5 7 8 ※ftpサーバーを選択(半角スペース区切りで、適当に)

〜中略〜

commit: wrote /System/Library/Perl/5.8.8/CPAN/Config.pm
Terminal does not support AddHistory.

cpan shell -- CPAN exploration and modules installation (v1.7602)
ReadLine support available (try 'install Bundle::CPAN')

cpan>



cpan>となったら終了です。

quit

でCPANからログアウトして終了。

■MACにCPANをインストール
■MACにNET::Amazon::S3をインストール
■NET::Amazon::S3を使ってAmazonS3へファイルをアップロードしてみた

AmazonS3を使ってみる

Firefoxを起動し、ツール --> S3 Organizer でS3Foxを起動します。

Javascriptアプリケーションという警告ウィンドウが表示されて
「Manager Accountsをクリックしてアクセスキーとシークレットコードを追加しなさい」
とメッセージが表示されますが、気にせずOK。

左上にあるManage Accounts をクリックして、
Account Name
Access Key
Secret Key
を入力して、add をクリック。

Account Nameは何でもよいです。

Access Key と Secret Key は、
AmazonAWSページの右上にあるYourAccountの
AccessIdentifiersページに記載されています。

Your Access Key ID:
Your Secret Access Key:
です。

SecretAccessKeyのほうは、+ボタンをクリックすると表示されます。

Manage Accounts へ登録(add)したら、closeをクリックして閉じます。

S3を使うには、まず、Bucket(Directory)を作る必要があります。

右側の上部にある「青色のフォルダが光っているアイコン」
(マウスポインタを当てると「Create Bucket/Directoy」と表示されるアイコン)
をクリックします。
もしくは、右側で右クリックし、Create Directory でも作成できます。

Folder Name に任意の名前を入力しましょう。
これがBucket(Directory)名になります。
S3の全体で一意となる名称をつけないといけません。

ディレクトリを作成したら、
左側(PC内)のファイルを選択して、
右側(S3側)へアップロード(右向きの矢印アイコン)。

アップロードしたファイルを右クリックし、EditACLを開き
Everyone の右にあるRead下の赤い×をクリックします。
緑のチェックマークに変わったら、OKをクリック。
これでファイルが、誰でも読める、権限になります。

http://s3.amazonaws.com/ディレクトリ名/ファイル名
http://ディレクトリ名.s3.amazonaws.com/ファイル名
というURLで、ブラウザで表示できます。

Amazon S3 Firefox Organizer(S3Fox) インストール

Firefoxのアドオンを使うと、簡単にS3の操作ができるそうです。

Firefoxは一応インストールしてあるので、
早速S3Foxをインストールしてみようと、
普段使っているSafariでS3FOXページにアクセスすると
「今すぐダウンロード」ボタンがある。

エンドユーザライセンス契約に同意してダウンロードしてはみましたが、
インストールの方法が分かりません。。。
(ダブルクリックしても反応なし)

というわけで、Firefoxを起動して、
https://addons.mozilla.org/ja/firefox/addon/3247
へアクセス。

すると、「Firefoxへインストール」ボタンになってました。
あとは、クリッククリックでインストール無事完了。

AmazonS3の料金

料金は使った分だけ支払う形になります。

ディスクに保存しているデータ量(ストレージ)+データ転送料(OUT+IN)が費用になります。

<アメリカ>
○ストレージ(月額)
$0.150/GB(〜50TB)
$0.140/GB(50〜100TB)
$0.130/GB(100〜500TB)
$0.120/GB(500TB〜)

○データ転送料(月額)
・OUT
$0.170/GB(〜10TB)
$0.130/GB(10〜50TB)
$0.110/GB(50〜150TB)
$0.100/GB(150TB〜)

・IN(リクエスト)
$0.001/1,000requests(PUT,COPY,POST,LIST)
$0.001/10,000requests(GET,その他)

※削除リクエスト(delete request)は無料
※2009/4/1〜6/30は期間限定でデータ転送料は一律$0.030/GB


月額料金シミュレーターがあるので、
どれくらいの容量を使うか、トラフィックが発生するかがわかれば、
いくらかかるかざっくり計算できますね。

AmazonS3の登録

前々から気になっていたAmazonEC2/S3に挑戦。

AmazonAWSのアカウントはすでに取得済みなので、
まずは、S3のサインアップから。

Amazon AWSの上部にあるProductsにマウスポインタを当てると、
サービス一覧が表示されるので、

Infrastructure Services
>> Amazon Simple Storage Service(Amazon S3)

AmazonS3をクリック。

右上にある Sing Up For Amazon S3 をクリックして、利用登録を行います。

クレジットカードや、住所情報等を入力し、登録完了。
アカウントのメールアドレスに登録完了通知メールが届きます。