はじめに
AWS LambdaのトリガーにSQSを設定されている方も多いと思います。
SQSのキューにメッセージが送られると、トリガーに設定されたLambdaが呼び出されます。
一度の起動で複数のメッセージを処理することも可能で、このメッセージの数はバッチサイズで指定できます。最大は10です。
Lambdaの用途によっては、バッチサイズを1にして運用する場合もあります。
マネージメントコンソールでトリガーを設定する主な導線は、
- SQSからLambdaを設定する
- LambdaからSQSを設定する
の2通りがありますが、これが運命の分かれ道です。
実際にトリガーを設定してみるので、どのような画面遷移なのかご覧ください。
状況
sqs_sample
というLambdaとlambda_trigger
というSQSのキューがあります。
lambda_trigger
がメッセージを受信するとlambda_trigger
が発火するようにトリガーを設定します。
Lambdaからトリガーを設定する場合
マネージメントコンソールからLambda > 関数 > sqs_sampleを選択します。
この画面で「トリガーを追加」をクリックします。
プルダウンからlambda_trigger
を選択します。
ここで注目してもらいたいのは、バッチサイズが画面に表示されている点です。
これにより、トリガーのバッチサイズが10であることをユーザーは認識できます。
今回は10で設定しました。
トリガーが設定されるまで1分ほど待ちます。
これで設定完了です。
SQSからトリガーを設定する場合
マネージメントコンソールからSQSを選択します。すでにキューが存在する場合は作成済みキューの一覧が表示されます。
lambda_trigger
を選択して「キュー操作」をクリックします。
表示されたメニューから「Lambda関数のトリガーの設定」を選択します。
プルダウンメニューからsqs_sample
を選択して「保存」をクリックします。
ご覧いただいたように、SQSからトリガーを設定する場合はバッチサイズなんてワードは一切出てきません。
ちなみに、バッチサイズは10で設定されます。
まとめ
バッチサイズが1に設定されていることを前提としたLambdaをデプロイするときは気をつけましょう
設定済みのトリガーのバッチサイズを変更する方法はみつからなかったので、一度削除してからLambdaからトリガーを設定しましょう。
ハンズラボ Advent Calendar 2019 17日目は@bakupenさんです🎉