Google Cloud Storage JSON API Client for JavaScript を試す

GCSにjavascriptを用いてアクセスできるライブラリを試した。

サンプルコード
https://github.com/GoogleCloudPlatform/storage-getting-started-javascript
参考ページ
http://qiita.com/noazoh/items/f893e5197f8ef56876a9

注意事項は参考ページに書いてある通り。

サンプルを実行するとこんな画面が出てくる。

まず、"Authorize" ボタンを押して、認証を行う。
認証はOAuth2で行われ、Googleアカウントが必要。
ブラウザ上でまだGoogleアカウントにログイン中でなければ、次のようなログイン画面が出てくる。

ログインすると、次の画面が出る。

これは、GAEのプロジェクトの管理コンソールの"APIと認証"配下にある"同意画面"で設定したものである。この例で出ている「strage-test」というのは、同意画面に設定した"サービス名"である。
認証ボタン押すと、制御が元のページに戻され、"Authorize"ボタンが消える。
ためしに、プルダウンから、"list Buckets"を選択してみると、数秒待たされた後、こんな感じで結果が出てくる。

未認証の状態で、プルダウンを選択しても、何も表示されない。(エラーにもならないのでちょっとわかりづらい)

では、認証ボタンによって何が行われるか見てみる。
認証したGoogleアカウントの、マイアカウントページを開く。
https://myaccount.google.com/
ページの下の方に「接続されたアプリとサービス」という欄があるので、そこの「アカウント権限」をクリックする。
すると、このようになっている。

「アクセス権を取り消す」ボタンをクリックすると、未認証の状態に戻るので、サンプル画面をリロードすると、再び Autorizeボタンが出現するようになる。

権限

Authorizeボタン押下後、アクセス対象のバケットに権限がないGoogleアカウントでログインし、認証してみる。すると、認証は通常と同様に行われるが、たとえば list Buckets を選択してみると、次のように Forbidden という結果がAPIから返されていることがわかる。

Google Cloud Storegeのローカル開発サーバ

問い:GAEのローカル開発サーバは、devserver.py ですが、GCSのローカル開発サーバに相当するものはあるのか?

こたえ:ある(SDK 1.8.1以上であれば)

使い方

通常のローカル実行時と同様、ローカル開発サーバを起動。GAELauncherから実行するとか。
起動したら、ブラウザから

http://localhost:ポート番号/_ah/gcs/バケット名/

を開く。これがGCSのローカル開発サーバ。
ポート番号はAdmin PortじゃなくてアプリケーションのほうのPort。
バケット名は、デフォルトバケットの場合は次のPythonコードで取得できる。

from google.appengine.api import app_identity
bucket_name = app_identity.get_default_gcs_bucket_name()

レスポンスはXMLなので見栄えはこんな感じになる。

ちなみに、これは、ファイルが1件も登録されてない状態。ファイルが登録できたらキャプチャ貼ります。

PySideインストール on Windows

PySideのインストール手順

1.Pythonのインストール(割愛)
今回はPython2.7を入れてある環境でやってる。

2.pipのインストール
このファイルをダウンロードする。
コマンドラインから、pythonインタープリタでダウンロードしたpyを実行する。

python get-pip.py


pipは、Pythonインストールディレクトリ配下のScriptsフォルダに配置される。今後のために、この場所を環境変数PATHに追加しておく。

3.pip経由でPySideをインストール
コマンドラインから次を実行

pip install -U PySide

Pythonインタープリタ

import PySide

とやってエラーにならなければOK。

4.パッチ当てる
http://textmagic.dip.jp/trac/pyside/wiki/WikiStart/intro03
のページの、「7.パッチを当てる。(PySide1.2.xxの場合、py2exeで作成した実行形式が起動時にエラーで落ちるので、それを回避する。」にあるようにやる。
(実際エラーで落ちるのかどうか試してはいない)

      • -

IDEのインストール

ここまでの手順で、QtDesignerとQtLinguistはインストールされるが英語版だった。
場所はここ

C:\Python27\Lib\site-packages\PySide\designer.exe
C:\Python27\Lib\site-packages\PySide\linguist.exe

これでもいいんだけど、QtCreatorを入れて日本語化することにした。
http://www.qt.io/download-open-source/#section-6
ここからインストーラをダウンロードして実行。日本語化されたものがインストールされる。

ここで、自分の環境が仮想デスクトップだからだと思うが、ディスプレイドライバがOpenGLに対応していない旨のエラーメッセージが出る。全体的に挙動不審なので使用を断念。制約の少ない環境で別途試す時が来たら試してみようと思う。

QtDesignerに戻る。これを単体で日本語化する方法がわからず。いつも、こういう事に長時間時間を食ってしまうタチなので、今はあきらめることにする。
結局、PyQt4に同梱されているQtDesignerが日本語化されていたので、PyQt4も入れて、そちらでインストールされたexeを使っている。

gcloudにおけるアカウント管理

gcloud auth login

アカウント認証を行うのと同時に、そのアカウントがアクティブアカウントに設定される。ターミナル内でそのアカウントでログインしている的な状態となり、以降のgcloudやgsutilコマンドでの操作がそのアカウントによる操作となる。

新たに別のGoogleアカウントで gcloud auth login をやると、新しいアカウントがアクティブとなる。
元のアカウントをアクティブに戻したい時は、

gcloud config set account アカウント名

とすると切り替わる。

現在、どのアカウントがアクティブかを見たい時は、

gcloud auth list

とやると、認証済みのすべてのアカウントがリストされ、アクティブなアカウントには active という印がついて表示される。

gcloud auth revoke アカウント名

とすると、そのアカウントの認証情報が削除されるため、再びそのアカウントを使いたくなったら、再度 gcloud auth login を行う必要がある。

ログアウトに相当するコマンドは無い。revokeをやらない限り、必ず誰かしらアクティブなアカウントが存在する状態となる。

デフォルトバケットを削除したら再作成する方法が無い(たぶん・2015/01現在)

たわむれに、作成したデフォルトバケットを削除してみたところ、削除は出来たのだが、再作成しようと思い、GAE管理コンソールのApplication Settingsを開いてみると、例のcreateボタンが無く、「作成されましたよ」的なメッセージが表示されている。

バケット名をデフォルトバケット名と同じものにして新規作成を試みるも、作成できず。

現在のところ、デフォルトバケットを再作成する方法は無いものと思う。
ご注意ください。

Google Cloud Storageのデフォルトバケットを作る

Google App Engineのプロジェクト毎に、Google Cloud Storageのデフォルトバケットを作成することができる。

やり方:
AppEngine管理コンソールより
Application Settings -> Cloud Integration -> createボタンをクリック

Google Developers Console(以後、開発コンソール)のほうには、作成する機能が無い。
作成されると、開発コンソールの
計算処理 -> AppEngine -> 設定 -> アプリケーションの設定タブ
に、「1日の予算」という項目が現れる。なお、5Gまでは無料で使えるとのこと。

また、開発コンソールの
ストレージ -> クラウドストレージ -> ストレージブラウザ
バケットの一覧に、「プロジェクトID.appspot.com」という名前のバケットが現れる。

管理コンソールと、開発コンソールはだんたんと統合が進んでいるようだが(開発コンソールが後発)、まだ統合は完了しておらず、管理コンソールにしか存在しない機能がちょくちょくあるので注意が必要。