amazon s3 と google cloud storage

クラウドにデータをバックアップしようと思い,s3 を使おうとしていたのですが,どうも今ひとつです。FreeBSD (8.2を使ってます) で s3fs を使って s3 のバケットをマウントして,例えば,dump コマンドでダンプしようとすると,カーネルがパニックってしまうような。。。

今日,少し謎が解けたような気がしました。

boto という python のライブラリを使って,以下のようなことをしていました。
import boto
from boto.s3.connection import S3Connection

conn = S3Connection(‘access_key’, ‘secret_key’)

bucket = conn.create_bucket(‘bucket_name’)

from boto.s3.key import Key
k = Key(bucket)

k.key = ‘key_name’
k.set_contents_from_filename(‘filename’)

set_contents_from_なんちゃらという関数がいくつかあります。set_contents_from_stream なんかを使えば,標準入力から s3 に書けるのかな,と思い試してみたところ,どうも,サポートされていなさそうなエラーメッセージが。
あらかじめサイズの決まっているファイルしか置けないように思えました。想像ですが,巨大なファイルを置こうとすると,メモリか,テンポラリーファイルに置かざるを得ないので,処理しきれないのかもしれません。

で,以下が本題かもしれません。

set_contents_from_stream が使えそうなサービスは何だろうと思い,検索してみると,google cloud storage なんかは対応しているのかもしれません。google のドキュメントを読むのがだるい方,以下ご参考まで。
1. google apis console にアクセス。
services の google cloud storage を on
billing を enable にする (checkoutで)
2.  https://developers.google.com/storage/docs/gsutil_install に書いてあるとおりなんですが,

  • gsutil.tar.gz をダウンロード
  • ホームディレクトリに展開 (ホームディレクトリ/gsutil ができる)
  • export PATH=${HOME}:$HOME/gsutil する。(要は PATH に追加する。)
  • gsutil config
  • 認証コード待ちになりますが,その上あたりに URL が表示されているので,ブラウザにコピペして開く。gsutil がほにゃららと表示されるので許可。認証コードが表示されるので,それを認証コードとしてコピペ。
  • project-id? になるので,apis console に行って google cloud storage を表示させ,x-goog-project-id: の右にあるコードをコピペ。

あとは,
gsutil ls  とか
echo ‘hogehoge’ | gsutil cp – gs://mybackup/test.bin だとかして使えます。

boto を使ってプログラムを作ればいいか,と思っていたのですが,コマンドラインを愛用する人々には gsutil のようなツールは便利でしょうね。 パイプが使えるなんて嬉しすぎます。 使いものになるのかどうか,十分試してないんでわかりませんが,後日,失望したブログを書いていたらごめんなさい。