私のスクリプトの次の呼び出しの値を保存する必要があります。
これは、環境変数がどのように動作するか、ラムダの動作方法ではありません。環境変数は、親の子プロセスに設定することはできません。プロセスは、独自のプロセス環境と子プロセス環境でしか環境変数を設定できません。
これは、シェルで環境変数を設定すると混乱するかもしれませんが、その場合、シェルは長時間実行されているプロセス設定であり、環境変数を取得するプログラムではありません。
は、この例を考えてみましょう:
from os import environ
print environ['A']
environ['A'] = "Set from python"
print environ['A']
これは自分自身のためにENV A
のみを設定します。何回か実行すると、A
の初期値は常にシェルの値になります。決してpythonが設定する値ではありません。
$ export A="set from bash"
$ python t.py
set from bash
Set from python
$ python t.py
set from bash
Set from python
さらに、そうでない場合でも、aws lambdaでは確実に動作しません。 Lambdaは、その時点で利用可能な計算リソースがあれば、あなたのコードを実行します。通常は頻繁に実行される関数のランタイムをキャッシュするため、データを保存するためにファイルシステムにデータを書き込むことができます。しかし、そのランタイムで次の呼び出しが実行されなかった場合、データは失われます。
お客様のニーズに合わせて、の外側には、ラムダを保存します。明らかなオプションは、s3への書き込み、ダイナモへの書き込み、またはsqへの書き込みです。次の呼び出しはその場所から読み取り、望ましい結果を達成します。