Google App Engine / Python Standard Environment の Runtimeバージョン


この記事の要旨

Google App Engine / Pythonで・・・

  • 「Standard Environment」のPythonバージョンは2.7.5
  • 「Flexible Environment」のPythonバージョンは2.7.9 (と3.5.2)

(2017年1月9日現在)

解説

ちょっとハマったので個人メモ。

Google App Engineには「Standard Environment」と「Flexible Environment」の2種類がある。詳細は省くが、「Standard Environment」には1日28時間分のインスタンス起動について無料枠があり、ちょっとぐらいの使用であれば無料で「Standard Environment」を使用していられる。

で、各環境のRuntimeで使用できるPythonのバージョンは何か?を調べると、「Flexible Environment」はドキュメントに書かれているものの・・・

「Standard Environment」についてはドキュメントが無かったので、「sys.version_info」をログで吐き出させて調べてみた。

sys.version_info(major=2, minor=7, micro=5, releaselevel='final', serial=0)

Pythonのバージョンは2.7.5でした。

(2018/03/24 追記)

sys.version_info(major=2, minor=7, micro=12, releaselevel='final', serial=0)

ということで今は2.7.12に更新されている模様。


ここからは個人的なハマったポイントなのだが。

hmacを使用する際・・・

digest() の出力結果と外部から供給されたダイジェストを検証ルーチン内で比較しようとするのであれば、タイミング攻撃への脆弱性を減らすために、 == 演算子ではなく compare_digest() を使うことをお奨めします。

というのだが、このcompare_digest()が使用できるのは2.7.7以降だったりする。当然、「Standard Environment」でこのメソッドを使うとエラーになる。