Slide 1

Slide 1 text

最近アップデートされたLambdaの 再帰ループ検出機能使ってみた フレッシュメンLT #0 夏祭り 2023.8.25 苑⽥朝彰 1

Slide 2

Slide 2 text

⾃⼰紹介 苑⽥ 朝彰(28) Sonoda Tomotada - ID - Github︓tomomj - Twitter︓@sonoda_mj - Work at - 株式会社 Fusic (フュージック) 技術開発第⼆部⾨所属 - ソフトウェアエンジニアリング - 新卒3年⽬ - Skill - AWS/React(Native)/Ruby on Rails 2

Slide 3

Slide 3 text

アジェンダ 3 l 背景 l Lambdaの再帰ループ検出機能使ってみた l まとめ

Slide 4

Slide 4 text

01 背景

Slide 5

Slide 5 text

非エンジニアの同期M君 S3にcsvをアップロードしたら、 いい感じに処理してS3に格納し てほしい!!!

Slide 6

Slide 6 text

我エンジニアぞ〜〜〜 余裕なり

Slide 7

Slide 7 text

Lambda S3 CSVを取りに行く CSVをアップロード CSVを処理 CSVを格納 S3にCSVがアップロードされたらLambdaで処理してS3に格納

Slide 8

Slide 8 text

Lambda S3 CSVをアップロード おっCSVきたな

Slide 9

Slide 9 text

Lambda S3 CSVを処理 CSV処理してな〜

Slide 10

Slide 10 text

Lambda S3 CSVを格納 処理したで〜

Slide 11

Slide 11 text

Lambda S3 おっなんかまたCSVきたな

Slide 12

Slide 12 text

Lambda S3 CSVを処理 CSV処理してな〜

Slide 13

Slide 13 text

Lambda S3 CSVを格納 処理したで〜

Slide 14

Slide 14 text

Lambda S3 めっちゃCSV来るやん

Slide 15

Slide 15 text

Lambda S3 CSVを処理 CSV処理してな〜

Slide 16

Slide 16 text

Lambda S3 CSVを格納 処理したで〜

Slide 17

Slide 17 text

Lambda S3 頑張るで〜〜〜 ❓

Slide 18

Slide 18 text

Lambda S3 CSVを取りに行く CSVをアップロード CSVを処理 CSVを格納 「S3に入った時」というトリガーにしていたので、Lambdaによって送 られてきたCSVも処理されていた

Slide 19

Slide 19 text

その結果

Slide 20

Slide 20 text

無限に通知が来る ※当時のイメージ

Slide 21

Slide 21 text

無限円請求します ちゃんと払ってな

Slide 22

Slide 22 text

ですが

Slide 23

Slide 23 text

参考:https://aws.amazon.com/jp/about-aws/whats-new/2023/07/aws-lambda-detects-recursive-loops-lambda-functions/

Slide 24

Slide 24 text

02 Lambdaの再帰ループ 検出機能使ってみた

Slide 25

Slide 25 text

AWS Lambdaとは 25 サーバーレスでイベント駆動型のコンピューティングサービスであり、サーバーのプ ロビジョニングや管理をすることなく、事実上あらゆるタイプのアプリケーションや バックエンドサービスのコードを実行することができる。 参考:https://aws.amazon.com/jp/lambda/

Slide 26

Slide 26 text

再帰ループ検出機能とは 26 Lambda Amazon SQS 同じリクエストチェーンで関数が 16 回を超えて呼び出された場合、Lambda はそのリ クエストチェーン内の次の関数呼び出しを自動的に停止する 16回呼び出されてる から、関数の呼び出し を停止 参考:https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/invocation-recursion.html

Slide 27

Slide 27 text

サポートされているAWSサービス 27 引用:https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/invocation-recursion.html 【注意】S3とDynamoDBはまだ対応していない

Slide 28

Slide 28 text

構成図 28 ユーザーがS3に画像をアップロードし、SQSとLambdaで無理やり再帰ルー プを発生

Slide 29

Slide 29 text

03 実際にやってみた

Slide 30

Slide 30 text

検証⽅法 30 Lambda Amazon SQS 関数が 16 回を超えて停止したかどうかをCloudWatchで確認する。 16回呼び出されてる から、関数の呼び出し を停止

Slide 31

Slide 31 text

CloudWatch(Invocations) 31 関数コードが呼び出された回数 (成功した呼び出しや関数エラーが発生した呼び出しを 含む)。 これ

Slide 32

Slide 32 text

CloudWatch(Recursive invocations dropped) 32 関数が無限再帰ループの一部であることが検出されたために Lambda が関数の呼び出 しを停止した回数。

Slide 33

Slide 33 text

今までの⽐較(再帰ループした場合) 33 従来のLambda アップデートされたLambda 呼び出し回数 無限回 呼び出し回数 16回

Slide 34

Slide 34 text

今までの⽐較(再帰ループした場合) 34 従来のLambda アップデートされたLambda 呼び出し回数 無限回 呼び出し回数 16回 実 質 無 限 円 お 得 ! ! !

Slide 35

Slide 35 text

04 まとめ

Slide 36

Slide 36 text

まとめ Lambdaの再帰ループ検出はかなり便利 Point 2 S3とDynamoDBは対応されていないので、注意が必要 36 Point 1

Slide 37

Slide 37 text

ご清聴いただきありがとうございました Thank You We are Hiring ! https://recruit.fusic.co.jp/