4

ラムダ関数は構成を共有するため、ラムダ関数の構成を環境変数から DynamoDb に移動することを計画しています。また、構成が変更されるたびにラムダ関数を再デプロイしたくありません (私の構成は頻繁に変更され、一度変更する必要があります)。非常に多くのラムダ関数を再デプロイします)。

ただし、ラムダ関数のパフォーマンスを向上させ、コストを削減するために、実行ごとに構成をロードするつもりはありません。代わりに、構成をグローバル変数にロードします。グローバル変数は実行間で保持されるため (ラムダ関数がウォームアップされている限り)、DynamoDb にアクセスせずに同じ構成を再利用できます。サンプルコードは次のとおりです。

let config = null;
function getConfig() {
    if (config)
        return Promise.resolve(config);
    else {
        //Load config from DynamoDb and return it in form of a promise
    }
}

exports.handler = function(event, context, callback) {   
    getConfig()
        .then(config => {
            //Your code that makes use of config
        })
}

これまでのところ、すべて問題ありません。ここで、DynamoDb が新しい設定で更新される時間を考えてみましょう。ウォームアップされたラムダ関数は、AWS によって停止され、コールド スタートに直面する前に、古い構成を使用し続けます。

私がやりたいことは、ラムダ関数にシグナルを送って、ウォームアップされたラムダ関数を強制的にフラッシュし、構成が変更されるたびに最初からやり直すことです。私は、私が望んでいたことを正確に行うそれらを再デプロイできることを知っています。しかし、それはまさに私が最初に逃げていたものです。それで、私のオプションは何ですか?

4

1 に答える 1