[0] 備忘:GAEからのGoogle Cloud Storage書込について-[Id of Radiance ver.5]





■ 備忘:GAEからのGoogle Cloud Storage書込について

 最近Google Application Engine(GAE)のテストをしている中で、ファイルを書き込む場合はローカルストレージには書けないので「Google Cloud Storage」(GS)に書き込めという話を知ったというか色々試した。なお例によってPHP。

 ローカルストレージではないどころか汎用的なプロトコルで行われるものでもない(※中身は知らないが)のでPHPからGSの”バケット”にアクセスするためにはいくつか約束事を経由する必要があったが(php.iniに「google_app_engine.allow_include_gs_buckets」の設定が必要、アクセス先は「gs://[GAEアクセスURL]/[対象バケット]」にする、等)、それさえやればフツーに読み書きできた。

 ・・・のだがよく見たらあんまりフツーではなかった。
 改めてGAEのファイルアクセスに関する記述を見ると、「一度クローズしたファイルに”追記”することはできないよ。その場合完全上書きになるよ」的なことが書いてある。
 試しにfopenを色々なモードで試したところ、とりあえず以下っぽいことが判明。
  • 追記モードである「a」はfopenでfalseとなる。
  • というか読み書きモードである「r+、w+、a+」も軒並みfalseとなる。ロックの兼ね合いか?
  • 実質的に使えるのは「r、w」のみ

 なのでログファイルのようにデータを貯めていくファイルについては「一度全読み込み→全書き」という手段を取らねばならないため、量次第ではあるが実質的にはナンセンスだろう。書き込む度にファイルを新規に作成していくのを許すようなデータか、一時ファイルといった利用がメインだろうか。どっちにしろ無料枠は5GBだしね。

追記:
 とゆか別のページに使えるファイル系関数の情報が載っててfopenのパラメータ指定もされてるわ。

関連タグ:Googleクラウド
2016-05-20 [技術]

関連記事: