この記事の要旨
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」でこのメソッドを使うとエラーになる。