google storageがきてたので

ためしてみました。なんか寝付けないのと、あれやこれやで無職なのに徹夜です。なんなんでしょうね。

なんかBigQueryは使え無さげでちょい残念ですが、まあそれはそれでしょう。
とはいえ、

During the preview period, you will receive up to 100GB of data storage and 300GB monthly bandwidth at no charge

とのことなので、なにげにすごいです。本サービスになったときにいくらかかるかはわかりませんが、S3とかよりいいんじゃないかとか思ってしまいます。あと、jsonengineがピンチ!

それはさておき、まずはgoogle storageへのアクセス方法を整理しておきます。
Google Storage Manager
・GSUtil Tool
Python Library

のみっつ。

Google Storage Manager
なんか管理ツールみたいのがあります。buketをつくったり消したり、フォルダをつくったり消したり、ファイルをアップロードしたり消したり。

googleアカウントで認証されてくれます。

・GSUtil Tool
GSってどこの投資銀行がコミットしてるのかと思いましたが、冷静になってみるとたぶんgoogle storageの略ですね。まあそんなもんです。これに従ってインストールすればいいだけで、割と簡単でした。pythonで書かれたコマンドラインツールで、多分できるってことはGoogle Storage Managerとさほど変わらないはずです。

このツールから何かするには、Manage Keysが必要です。これもAWSっぽいですが、Access KeyとSecret Keyが必要です。invitationが来てる人は、ここから見ればいいです。下にGoogle IDとでてますが、これじゃないので気をつけてください。これつかってあれやこれやしてみます。

Python Library
使ってないけどpythonからはアクセスできるようになってるようです。まあgsutilがpythonで書かれているようなので。。なんかこの辺のappengineとかクラウドっぽいのはpythonが優先的に来てますね。RESTなはずなので、きっと本気出せば使えるようにできるはずとは思います。




では、getting startedのGetting Started with Google Storageに従いあれやこれやします。gsutilsを使います。

gsutil mb gs://thisistest

とかすると、bucketが作成できます。bucketはグローバルでユニークじゃないといけないっぽいので、thisistestの部分は各自で書き換えてください。

gsutil cp README gs://thisistest

でアップロード(とりあえずgsutilのREADMEをアップロードしてみた)。

ちゃんとあがってますし、ダウンロードも普通にできます。


中身をみるのはこんなかんじ。

marblejenka:gsutil marblejenka$ gsutil ls
gs://marblejenka/
gs://thisistest/
marblejenka:gsutil marblejenka$ gsutil ls -l
gs://marblejenka/:
ACL: : u'FULL_CONTROL'>>
gs://thisistest/:
ACL: : u'FULL_CONTROL'>>

ACLはAccess Control Listのようで、たぶんいろんなひととファイルを共有したりするのに使われるはずです。値はバイト列で出ているのですが、復号したりできるかもしれないのでカットしてます。


ファイルの移動はこんなん。

gsutil mv gs://marblejenka/*.txt gs://thisistest/

Google Storage Managerで見るときはブラウザリロードしないと反映されないっぽいので気をつけてください。あと、もとのbucketのフォルダ階層は移動後も引き継がれるようです。

ダウンロード。

gsutil cp gs://thisistest/*.txt file://result/

これ複数ファイル落とせるっぽいけどその辺の扱いがどうなのかよくわからん系。ディレクトリつくったりするっぽいけどエラーになったりとかしました。

そろそろ飽きてきた。


アクセス権まわり。みるほう。

marblejenka:results marblejenka$ gsutil getacl gs://thisistest/





















FULL_CONTROL



書き換えてgoogle groupやgoogle accountの単位でファイルを共有したりできるみたいです。google groupのほうは便利そうですね。


最後、ファイル消すの。

marblejenka:results marblejenka$ gsutil rm gs://marblejenka/*
marblejenka:results marblejenka$ gsutil rb gs://marblejenka/
marblejenka:results marblejenka$ gsutil rm gs://thisistest/*
Removing gs://thisistest/README...
Removing gs://thisistest/mine/ref.txt...
marblejenka:results marblejenka$ gsutil rb gs://thisistest/

こんなかんじできれいさっぱりです。rbはbucketの削除ですが、中身があると消せないので先にrmで消します。あと、フォルダがあっても削除できないですが、フォルダの削除はRemovingに出てくれないみたいです。



とりあえずこんな雰囲気ですね。感想。
・BigQueryと分けないでよー的な。ぬかよろこび。
・とはいえ、ただで使えるデータ量が多いのは結構な魅力では。jsonengineピンチか!と思ったけど、トランザクションは多分ないし、純粋にデータ蓄積用って感じですかね。
・まあ業務で使うことはなさげという感じですが、解析したいログなんかをTQでappengineからgsになげこんで、bigqueryで解析、とかは良さげ。データを捨てないコストについては、hadoopより更に敷居が低くなる可能性も。
・個人的には、業務システムが乗っかってるから外につなぐことが許されるのであれば、それほど機密性の高くないデータをgsに飛ばして分析、というのはありな気はする。
・何となくS3っぽい雰囲気を感じたり感じなかったり。