AWS
CloudFormation
lambda
CloudWatchEvents

Lambdaを暖気するやつを作るやつを作った

何をするものか

5分おきに任意のLambdaFunctionを起動するCloudWatch Events RuleとLambdaFunction、及びそれを作成するためのCloudFormationのTemplateです。

既にあるLambdaFunctionに対して、prewarmというTagを値trueとともに設定すると、この仕掛けから呼び出されます。

Untitled.png

起動するLambdaFunctionの範囲は、同じアカウントの同じRegion内です。

作り方

こちら からlambda-prewarm-executor.yamlを入手し、CloudFormationでStackを作成してください。

Parameterはデフォルトの設定のままで構いません。
以下の2点はStackのParameterになっているので、一部の振る舞いを変えられます。

  • ExecutionSchedule:実行間隔。CloudWatchEvents Ruleのrate式を使えます。
  • TargetLambdaTagName:ここで指定したTagの値がtrueであるLambdaを暖気します。

Stackを作成すると、以下のリソースが作成されます。

  • 対象を起動するためのLambdaFunction
  • 上記LambdaFunctionを定期的に起動するためのCloudWatch Events
  • 必要なIAM Role、Permissionなど

使い方

暖気したいLambdaFunctionにTag prewarmを値 trueで設定してください。

起動するときに、以下の値を引数で渡します。

{ "isPrewarm": true }

呼ばれたLambdaFunction側で、通常の呼び出しか、暖気による呼び出しかの判定に使用してください。

暖気するLambdaFunctionは非同期で起動し、エラーの判定を行いません(投げっぱなしです)。