Posts match “ google-cloud-platform ” tag:

在 App Engine 中設定 "Trusted" HTTPS Intermediate Certificate

在 Google App Engine 中,如果要讓 App Engine 支援 HTTPS 連線,必須要到 Google Apps 的 Admin Panel 裏面設定你的 PEM encoded X.509 certificate 和 Unencrypted PEM encoded RSA private key

大概長得像上面這樣,上面那個通常是直接傳網域代管商交給你的 .crt 檔案,下面則是傳你自己做好的的 Private Key(不過還需要用 PEM 來 encode),總之,這個步驟本來是相當簡單的。

不過在 App Engine 中,因爲 Google 沒有讓你上傳 Intermediate Certificate 的地方,所以要用一個特殊的 Workaround 來解決。否則,在對 HTTPS Certification 要求比較嚴格的環境中,像是 Firefox 或是網域代管商的 Verifier,都會顯示你的網站是有 SSL 加密但是是「不可信任的(Untrusted)」。

Read on

在 virtualenv 中使用 Google App Engine(Python 的 Path Configuration File)

Sandboxed App Engine

如果你使用 virtualenv 來管理你在 App Engine 上面安裝的套件,會發現在 local 的環境中無法載入部分 Library 的問題,因爲 Google App Engine 其實在載入 Library 這部分使用了有點 tricky 技巧,之前我是直接修改 virtualenv/bin/activate,在裏面加上 PTYHONPATH 的置換與還原來達成相同目的,今天突然發現一篇文章講了一個神技巧,就把它翻譯出來希望可以幫助臺灣更多 Google App Engine 的 developer。

原文章:Using Google App Engine's SDK along with virtualenv

Read on

Endpoints API 使用 OAuth 會遇到的 RuntimeError: UnicodeDecodeError

前陣子在做 BigData Lab 時使用到 Cloud Endpoints API 來串接 server 上的 API 來省去自己開發 JavaScript SDK 的時間,原本在 local 端測試也都測試的好好的,突然某一天早上睡覺起來打開電腦開始寫 code 就發現 local 不能用了,後來測試發現只有在帶有 OAuth Authentication 時才會噴出這個錯誤。

因此我到 Google Code 的 googleappengine 上面去發了個 issue:

Issue 10285: RuntimeError: UnicodeDecodeError('utf8', "id_token verification failed: Can't parse header: \xc9\xad\xbd", 52, 53, 'invalid start byte')

並且跑到 Google+ Community 去廣邀大家幫我 Star 這個 issue,所以 Google 真的很快看到並且解決了呢,現在 Endpoints API 又可以在 local 測了好爽,比脫掉外套撿到兩百塊還爽。

Read on

Build a pure Google App Engine environment on your Mac (virtualenv+PIL)

Update: this is unavailable for the current app engine SDK, will occur the cgi import error, the suggestion from experts is "do not use virtual environment with Google App Engine."

  1. Install Google App Engine at first (details at http://code.google.com/appengine)
  2. sudo port install py25-pil (this will install python2.5 and PIL)
  3. virtualenv --python=$(which python2.5) --no-site-packages appengine
  4. enable your virtual environment
  5. pip install PIL

that's all.

判斷 App Engine 的 Session 是在 Online 或是 Development Server

(這個方法後來有變動,我之後寫一篇)

有時候我們可能因為在線上和 dev server 上面環境的不同,所以造成部分設定值有些差異,舉個例子好了:我用 App Engine 寫個 Facebook 應用程式,大家都知道 Facebook 應用程式的開發是鎖 domain URL 的,如果每次都要一直去改 domain 的設定,豈不是很麻煩?我原本是用這招:申請兩個 Facebook 應用程式,一個當做正式上線用,另一個則作為開發實驗用的 testbed,所以我就有兩組 app id, api key, app secret,只要切換這兩組我就不需要一直去改 Facebook 那邊的設定,不過每次 deploy 之前還必須要把這兩組變數的註解 toggle,也是有點麻煩。(而且要是不小心忘記就又要重新 deploy 一次,真麻煩!)

後來發現其實 Google 有提供一個 method 去檢視現在執行的程式是在 App Engine 上面還是 dev server 上,這隻 method 的位置在 google.appengine.api.conf 裡面,叫做 _inspect_environment(),這支函式的 spec 是這樣:(摘錄 Source 中的註解)

Return relevant information from the cgi environment.
This is mostly split out to simplify testing.
Returns:           
    A tuple: (app_version, conf_version, development)
    app_version: the major version of the current application.
    conf_version: the current configuration version.
    development: a boolean, True if we're running under devappserver.
Read on

Right way to download App Engine data and deploy it to development server

Basically the documentation on this part is outdated, just figure it out how to download data and upload it to local development server this morning.

Download data:

appcfg.py download_data --url=http://testappengine.appspot.com/_ah/remote_api --filename=production_data.sql3

Upload it to your local development server:

appcfg.py upload_data --url=http://localhost:8080/_ah/remote_api --filename=production_data.sql3 --application=dev~testappengine

You will have to set --application flag to change signature to dev~ prefixed, or you can't upload data to local development server because of signature not matching.