🕵️‍♂️

続・AWS CDKでLambdaのループ検知検証環境を作った上で検証してみた

2023/08/29に公開

前回の記事はこちら

https://zenn.dev/keni_w/articles/acbfd69a2c7dbb

パターンが足りなかったのと、
一部思い込みで記事を投稿してしまいました(そちらについては訂正済みですが、本当に申し訳ございません。

追加検証に関してまとめさせていただきます。

追加検証パターン

  • Amazon SNSとAmazon SQSを組み合わせたパターン
  • Amazon SQSとAWS Lambdaを組み合わせたパターン
  • Amazon SQSとAWS Lambdaを数珠繋ぎにしたパターンでのループ

上2つは、公式ドキュメントの「サポートされている AWS のサービス」に記載のパターンの下2つですね。(こちらを完全に見逃していました。)
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/invocation-recursion.html

数珠繋ぎ(ピタゴラスイッチ)パターンは検知しないパターンと思い込んでいたんですが、
あれ、複数サービスでも検知するってことは・・・ということで、
試してみたものです。

結果

3パターンいずれも検知・停止しました。
上2つは公式記載されているものなので、検知・停止してくれないと困るんですが、
数珠繋ぎ(ピタゴラスイッチ)パターンはもしかしたら検知しないんじゃないかと思っていたんですが、
見事に検知してくれました。本当にすみません。そし素晴らしい!!!

数珠繋ぎ(ピタゴラスイッチ)パターンで実行されるLambda関数のInvocationsのメトリクスになります。
こちらも16回で止まっています。(本当にドキドキしました。)

複数サービスを使った場合でも検知・停止するっていうのは大きいかなと思います。

試したい方向け

前回も書きましたが、こちらです。
https://github.com/Kenichiro-Wada/aws-lambda-recursion-detection

注意事項

githubに公開したサンプルで、S3トリガーのケース、
もし、試してみる方は、起動したら、絶対に即止めてくださいね!
それで課金発生したと言われても、止めないのが悪いので、当方は責任置いかねます!!!
README.md(README_jp.md)にも散々書いてます!

【再掲】忘れてはならないこと

最後に、前回も記載しましたが、忘れてはならないことを1つ。

ループ実行の検知および停止の機能はあくまで補助的な機能(最後の砦)だと思います。
忘れないようにしたいのは、
ループにならないように気をつける
です。

検証パターンでは、あれ、ループになってないな?って見直すこともありましたが、
本来は、(意図的ではない限り)ループにならないように処理を組み立てないとダメだと思います。


この機能になるべくお世話にならないように、今後もEvent処理を実装していきたいと思います。

Discussion