スキップしてメイン コンテンツに移動

投稿

5月, 2014の投稿を表示しています

Managed Virtual Machine に望むこと

先日2014年4月22日に行われた、Google Cloud Platformセッションの模様がYoutubeに公開されてた。 地方民はこういうイベントになかなか参加できないので、動画配信はほんとに助かる。ありがたや。。。 動画の中で語られている Managed VM は地味だけど、なにげにすごい機能だと思う。GAEでできなかったほとんどの事がこれで解決できるかもしれない。 ただ、個人的に Managed VMでは、(スケールアウトしなくていいので)固定IPも使えるようになってほしい。なぜなら、Google App Engineで外部のシステムと連携するとき、相手側でIPアドレス制限されている事がある。だから、連携前にあらかじめこちらのIPアドレスを教えておくのだけど、GAEはPaaSなのでその範囲も広いし、いつ変わるかわからない。まぁ、IPアドレス制限という方法自体がすでに時代遅れな感じではあるけど。 ともかく、GAEではそういうシステムと連携する時は、間にGAEでないサーバーを中継させておく必要がある。なので、このためだけにOSやApacheのメンテが発生する。これは、ほんとにアホらしいことだ。もし、Managed VMで固定IPが使えれば、対外部システムとの処理だけそのインスタンスで行えばいいし、中継サーバーも不要になるので、だいぶ楽になるのだ。 Googleさん、よろしくおねがいします。

Google Cloud Storage上の非公開動画を特定の人にだけ公開する

Google App Engine単体では(Blobstoreを使う以外)ファイルの読み書きはできないが、GCPのクラウドストレージ製品Google Cloud Storageを使えば、簡単にファイルを取り扱うことができる。今回は、ある特定の人にだけ動画を見せたい場合を想定して、Google Cloud Storageに置いた非公開な動画ファイルを、OpenIDでログインしている人にだけ見せる方法をメモしておく。 動画ファイルの配置 GCPのコンソール からGoogle Cloud Storageにファイルをアップロードする。(アップロード方法はまたの機会に。)ちなみに、動画ファイルは NHKクリエイティブ・ライブラリー から拝借した。 今回保存したファイルパス(非公開) /gcp-memo.appspot.com/movies/meteorite.mp4 動画再生ページの作成 videoタグを配置するページ(/member/movie)を作成。こちらもログイン必須のページにしておく。app.yamlでログイン必須指定する。 - url: /member/(.*) script: controllers.front.member.application secure: optional login: required 今回も認証まわりの制御はGoogle App Engineの Usersライブラリ を使う。 過去記事参照 。また、videoタグのsrcには、動画ダウンロードを行うスクリプト(/member/play_movie)を指定する。 <video autoplay="" controls="" src="/member/play_movie"> </video> 動画ダウンロードスクリプトの作成 /member/play_movie を実装する。上のapp.yamlで、/member配下は認証必須指定しているので、必ず認証された状態でアクセスされる。あとはダウンロード処理を実装すればいいだけ。 from google.appengine.ext import blobstore from google.appengin...

Moduleをdispach.yamlで振り分ける方法

Google App Engineには、アプリケーション内の機能をグループ化できる Modules というしくみがある。Moduleごとに、インスタンスのスペックやスケールのルールが設定できるため、フロントエンドとバックオフィス、バックグラウンドジョブといった用途別にModuleを作成すると良さそうだ。また、どのModuleが使われるかは、URL(パス)で振り分けることができる。今回はその方法のメモ。 Moduleのyamlファイルの作成 今回は、以下の3つのModuleを作ってみる。 ・フロントエンド用(app.yaml) default ・バックオフィス用(back.yaml) ・JOB用(job.yaml) まずは各Moduleのyamlファイルを作成する。 app.yaml application: gcp-memo module: default version: 1 runtime: python27 api_version: 1 threadsafe: true instance_class: F1 (以下省略) admin.yaml application: gcp-memo module: admin version: 1 runtime: python27 api_version: 1 threadsafe: true instance_class: F1 (以下省略) job.yaml application: gcp-memo module: job version: 1 runtime: python27 api_version: 1 threadsafe: true instance_class: B1 basic_scaling: max_instances: 2 idle_timeout: 10m (以下省略) dispatch.yamlファイルの作成 続いて、これらのModuleを振り分けるdispatch.yamlを作成する。今回は、パスが/admin/に一致すればadminモジュールへ、/job/に一致すればjobモジュールが使用されるようにする。dispatch.yamlは、アプリケーションのルートディレクトリに配置する必要がある。Moduleのyamlファイルについては、ルート...