Python
AWS
初心者向け
lambda

Lambdaの環境変数を用いた、条件分岐の注意点

はじめに

「Python、、、。あぁ、あまり型気にしないでかけるやつでしょ!」位の認識しかないPython初学の私が、Lambdaの環境変数を使用して条件分岐をする関数を作成した時にハマったところについてです。

検証環境

Lambda関数の、ランタイムはPython2.7を使用しています。
(3.6でも同じだとは思いますが、未検証です。)

つまずいたポイント

Lambda関数内での、環境変数の取り出し方についてはネット等で検索してみて下さい。

私が今回実装しようとしたのは、次の要件のものです。

  • Lambda環境変数(キー名:number)より、数値を取得する
  • 環境変数より取得した値に応じて、if文を用いて処理を分岐させる

ひとまず、ネット等々で調べつつ次のように実装。

lambda_function.py
import os

def lambda_handler(event, context):
    if os.environ['number'] > 20:
        return 'OK, Your Number is over 20.'
    else:
        return 'NG, Youe Number is under 20.'

実行結果(number=30の時)

スクリーンショット 2017-12-26 23.43.52.png

さて、このような状態でLambda環境変数の値を、20⇨10としてみたいと思います。

実行結果(number=10の時)

スクリーンショット 2017-12-26 23.49.59.png

なんということでしょう、、、実行結果がうまく変わりません。以後、どんな値を入れ続けても'OK, Your Number is over 20.'を返し続けます。

解決

「ん?環境変数から取得した値って、本当に“数値”として認識しているのかな?」と思った私は、次のようにコードを改変しました。

lambda_function.py
import os

def lambda_handler(event, context):
    if int(os.environ['number']) > 20:
        return 'OK, Your Number is over 20.'
    else:
        return 'NG, Youe Number is under 20.'

改変後に、先ほどと同じテストをしてみると。。。

実行結果(number=30の時)

スクリーンショット 2017-12-26 23.57.03.png

実行結果(number=10の時)

スクリーンショット 2017-12-26 23.57.53.png

なんと!!予想していた通りの実行結果になりました!!

まとめ

【環境変数を取得して使用する場合には、“型”をしっかりと明記する!】

間違いやアップデートがあり次第、追記していきたいと思います。
以上、お付き合いいただきありがとうございました!!また!!!