Serverless Framework を使用して Lambda コールド スタートを防ぐ方法は?
5988 ワード
AWS Lambda コールド スタートとは何ですか?
ラムダ関数を呼び出すたびに、最近呼び出していない場合、すぐには開始されません.コードの実行を開始するまでに時間がかかります.これは、AWS がラムダ関数内のコードを実行するコンテナをシャットダウンするために発生します.しばらくの間呼び出されないため、ラムダ関数内のコードを実行する前に新しいコンテナーを起動するのにかかる時間は、コールド スタートと呼ばれます.または、ラムダ関数内で実際のコード実行が開始されるまでの遅延であると言えます.
コールドスタートにどう対処するか?
AWS サーバーレス フレームワークを使用している場合、
serverless-plugin-warmup
というプラグインがあります.これは、選択したラムダ関数をポーリングするサード パーティの NPM (ノード パッケージ モジュール) です.このようにして、ラムダ関数はウォームな状態を保ち、AWS はコンテナからドロップオフしません.コードを実行する場所.プラグインの設定
ラムダ関数用にこのウォームアップ プラグインをセットアップするために必要な各ステップを見ていきましょう.
インストール
npm install --save-dev serverless-plugin-warmup
最初に、このプラグインをプロジェクトのルート ディレクトリにインストールします.このパッケージを開発依存関係として追加します.
serverless.yml ファイルにプラグインをインポートする
plugins:
- serverless-plugin-warmup
ウォームアップ プラグイン構成の追加
custom:
warmup:
default:
enabled: true
folderName: '.warmup'
memorySize: 256
name: warmer-default
events:
- schedule: rate(2 minutes)
package:
individually: true
patterns:
- '!../**'
- '!../../**'
- ./**
timeout: 20
concurrency: 1
custom
- serverless.yml ファイルの custom
セクションですべてのウォーマーを定義する必要があります.ここでは、デフォルトのウォーマー構成を設定しています.folderName
- これは、AWS にデプロイするための Warmer 一時ファイルが保存されるフォルダーの名前です.memorySize
- Warmer 関数に与えたいメモリサイズ.name
- 暖かいラムダ関数の名前.events
- これは、ラムダ関数をいつ呼び出すか、どの間隔で呼び出すかを決定する設定であり、より暖かいラムダを通してそれらをウォームにするため、ここでは 2 分ごとにスケジュールしています.package
- これは単にパッケージを除外して含めるためのものです.timeout
- ウォーム ラムダが他の Lambda 関数を呼び出してウォームにするたびに、これは関数を終了する前に待機する秒数です.concurrency
- ウォームアップのためにラムダ関数に対して行われた並列呼び出しの数.ラムダ関数のウォームアップを有効にする
これで、ラムダ関数のウォームアップ設定を有効にする準備ができました.これを行う方法は次のとおりです.
warmup:
default:
enabled: true
このセクションを、ウォーマーを使用してウォームしたい任意のラムダ関数に追加するだけです.
ラムダ関数を更新してウォームアップ コールを処理する
次に、ウォームアップ プラグインを使用してウォームアップしているラムダ関数を更新する必要があります.
exports.identifyImg = async (event, callback) => {
if (event.source === 'serverless-plugin-warmup') {
console.log('WarmUP - Lambda is warm!')
return 'Lambda is warm!';
}
//rest of the code
ここでは、このラムダがウォームアップ ラムダによって呼び出されたかどうかを確認しているだけです.その場合は、そこから戻ってラムダの実行を終了しています.
取り除く
これは、ラムダ コールド スタートに対処または防止する方法の 1 つですが、コードを最適化する、ラムダ関数内で http/https 呼び出しを回避する、暫定的な同時実行を使用するなど、他にも多くの方法があります. .
このウォームアップ プラグイン Serverless WarmUp Plugin の公式ドキュメントは次のとおりです.
詳細をご覧ください:
Learn about AWS Artifact
AWS Textract and Step Functions
AWS Cognito Pricing, Features
Understand Math functions in Javascript
Reference
この問題について(Serverless Framework を使用して Lambda コールド スタートを防ぐ方法は?), 我々は、より多くの情報をここで見つけました https://dev.to/shivangchauhan7/how-to-prevent-lambda-cold-starts-using-serverless-framework-m44テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol