web-dev-qa-db-ja.com

/ tmpが再利用されるときにLambdaをスケーリングする方法は?

DynamoDBから読み取り、/ tmpに大きなファイル(〜500M)を作成し、最終的にs3にアップロードするラムダ関数があります。アップロードされると、ラムダは/ tmpからファイルをクリアします(インスタンスが再利用される可能性が高いため)

この関数は、待ち時間を無視しても、実行に約1分かかります。

このシナリオでは、1m未満で関数を再度呼び出そうとすると、/ tmpに書き込むのに十分なスペースがあるかどうかを制御できません。関数が失敗します。

質問:1。この種のシナリオでの既知の回避策は何ですか? (/ tmpのスペースを増やすか、新しい実行ごとにクリーンな/ tmpが与えられるようにする可能性があります)2。Lambdaでのファイルの作成と管理に関するベストプラクティスは何ですか? 3.実行のために別のEBSまたは他のストレージをLambdaに接続できますか? 4./tmpを使用する代わりに私の関数がs3に直接書き込むことができるように、s3へのアクセスのようなファイルシステムを持つ方法はありますか?

14
sandeepzgk

AWS Lambdaの2つの同時に実行されているインスタンスは、完全に分離して実行する必要があるため、/ tmpまたはその他のローカルリソースを共有することはないと思います。エラーには別の説明が必要です。つまり、AWS Lambdaの後続の呼び出しで同じインスタンスが再利用される場合は、自分で/ tmpをクリアする必要があります。

一般に、Lambdaがリソースを大量に消費する場合は、ECSコンテナーワーカーでその作業を行い、説明されているようにLambdaを使用してECSタスクを起動することをお勧めします ここ

7
Leon

AWS Lambdaの 512 MB/tmp制限 に遭遇している可能性があります。

Lambda関数のメモリ制限は 1.5 GB に達する可能性があるため、ファイルをメモリに保存することで、パフォーマンスを向上させ、問題に対処できます。

2
Mark Stosberg