Slide 1

Slide 1 text

BXT KBXTVH "846TFS(SPVQT BXTDPNNVOJUZ 2023.08.12 JAWS-UG静岡⽀部 AWS勉強会 和⽥健⼀郎@Keni_W %FUFDUJOHBOETUPQQJOHSFDVSTJWFMPPQT JO"84-BNCEBGVODUJPOTͰ "84-BNCEBͷແݶϧʔϓΛ๷͙ʂ 6QEBUF7FS

Slide 2

Slide 2 text

ࠓ೔࿩͢͜ͱ • ⾃⼰紹介 • AWS Lambdaとは • Detecting and stopping recursive loops in AWS Lambda functions • まとめ +"846(੩Ԭࢧ෦"84ษڧձ-5

Slide 3

Slide 3 text

⾃⼰紹介 ⽒名:和⽥ 健⼀郎 所属:アイレット株式会社 エンジニア JAWS-UG 千葉 運営メンバー SORACOM UG東京 運営メンバー Twitter: @Keni_W Facebook : kenichiro.wada.3 好きなAWSサービス : AWS Lambda 実は静岡市⽣まれです! AWS Community Builder(Serverless) SORACOM MVC 2022

Slide 4

Slide 4 text

KBXTVH +"846(੩Ԭࢧ෦"84ษڧձ-5 ࣗݾ঺հଓ͖ • いわゆる戦国三英傑では、徳川家康が好きです。 • 全員愛知⽣まれだろうは突っ込まないで。 • とある勉強会の影響で、静岡を舞台にした 「ローカル⼥⼦の遠吠え」にハマりました。 • さわやかは2019年に初めて⾷べた⼈です。 • 今回も⾷べたいけど台⾵次第かな・・・。 • 静岡おでんは好き。 • 静岡富⼠⼭空港は写真撮りに⾏っただけの⼈

Slide 5

Slide 5 text

"84-BNCEBͱ͸ +"846(੩Ԭࢧ෦"84ษڧձ-5 • AWS Lambdaは現状、FaaS(Function as a Service) の代表格とも⾔える AWSのコンピューティングサービス です。 • マネージメントコンソールやAPIを利⽤して、コードの アップロードするだけで、実⾏することができます。 • つまり、開発者はサーバーの構築、管理は⼀切不要で、 コードの実装のみに集中することができます。 • また、リクエストに応じて、⾃動的にスケーリングを ⾏ってくれます。 • リクエスト毎の課⾦となるため、関数が実⾏されない時 には、⼀切料⾦が発⽣しません。そのため、Amazon EC2を利⽤した場合に⽐べて⼤幅に料⾦が下がるケース もあります。 (弊書基礎から学ぶサーバーレス開発 SECTION-004より)

Slide 6

Slide 6 text

"84-BNCEBͱ͸ +"846(੩Ԭࢧ෦"84ษڧձ-5 サーバーのことを考えずに コードを実⾏する

Slide 7

Slide 7 text

"84-BNCEBͱ͸ +"846(੩Ԭࢧ෦"84ษڧձ-5 料⾦は、こんな感じなのです(東京リージョン)が、 趣味(ハンズオンとかちょっとした開発)で 利⽤している限りは、無料利⽤枠があるので、 普通に使っている限りは、課⾦されることはまずないです。

Slide 8

Slide 8 text

"84-BNCEBͱ͸ +"846(੩Ԭࢧ෦"84ษڧձ-5 料⾦は、こんな感じなのです(東京リージョン)が、 趣味(ハンズオンとかちょっとした開発)で 利⽤している限りは、無料利⽤枠があるので、 普通に使っている限りは、課⾦されることはまずないです。

Slide 9

Slide 9 text

"84-BNCEBͱ͸ +"846(੩Ԭࢧ෦"84ษڧձ-5 そう、普通に使っている限りは・・・。

Slide 10

Slide 10 text

"84-BNCEBͱ͸ +"846(੩Ԭࢧ෦"84ษڧձ-5 構成(想定) AWS Lambda Amazon CloudFront Amazon Simple Storage Service バケットA AWS Lambda Amazon Simple Storage Service バケットB User ①ユーザーはCFn経由で、 ファイルをS3バケットA にアップロード ②S3トリガーでLambda が起動。Lambda関数内 で、バケットBにファイ ルをコピーし、元のファ イルを削除 ③バケットBでもS3トリ ガーでLambdaが起動し、 後続処理を実⾏

Slide 11

Slide 11 text

"84-BNCEBͱ͸ +"846(੩Ԭࢧ෦"84ษڧձ-5 察しの良い⽅は、 この図を⾒た時点で、 何をしたかお分かりになるかと 思いますが・・・。

Slide 12

Slide 12 text

"84-BNCEBͱ͸ +"846(੩Ԭࢧ෦"84ษڧձ-5 AWS Lambda Amazon CloudFront バケットA User ①ユーザーはCFn経由で、 ファイルをS3バケットA に アップロード ②S3トリガーでLambdaが起動。 Lambda関数内で、バケットBバケットA にファイルをコピーし、元のファイルを削除 ・ ・ ・ ③S3トリガーでLambdaが起動。 Lambda関数内で、バケットBバケットA にファイルをコピーし、元のファイルを削除 ④S3トリガーでLambdaが起動。 Lambda関数内で、バケットBバケットA にファイルをコピーし、元のファイルを削除 ⑤S3トリガーでLambdaが起動。 Lambda関数内で、バケットBバケットA にファイルをコピーし、元のファイルを削除 構成(実際)

Slide 13

Slide 13 text

"84-BNCEBͱ͸ +"846(੩Ԭࢧ෦"84ษڧձ-5

Slide 14

Slide 14 text

+"846(੩Ԭࢧ෦"84ษڧձ-5

Slide 15

Slide 15 text

+"846(੩Ԭࢧ෦"84ษڧձ-5 https://aws.amazon.com/jp/about-aws/whats-new/2023/07/aws-lambda-detects-recursive-loops-lambda-functions/

Slide 16

Slide 16 text

%FUFDUJOHBOETUPQQJOHSFDVSTJWFMPPQTJO"84-BNCEBGVODUJPOT +"846(੩Ԭࢧ෦"84ษڧձ-5 • Lambda関数の再起ループの検出と停⽌を⾏う。 • Amazon SQS、Amazon SNSトリガーでのループ に対応 • 16回のループ実⾏後、停⽌ • AWS Health Dashboardと連絡先に指定された メールに案内が来る • 放置しておくと、毎⽇連絡が来るケースがある。 (DLQなしのSQSでループした場合)

Slide 17

Slide 17 text

%FUFDUJOHBOETUPQQJOHSFDVSTJWFMPPQTJO"84-BNCEBGVODUJPOT +"846(੩Ԭࢧ෦"84ษڧձ-5 Amazon S3 対応してないじゃん!

Slide 18

Slide 18 text

%FUFDUJOHBOETUPQQJOHSFDVSTJWFMPPQTJO"84-BNCEBGVODUJPOT +"846(੩Ԭࢧ෦"84ษڧձ-5 とはいえ、いい仕組みだと思うので、 検証もしてみました。

Slide 19

Slide 19 text

KBXTVH +"846(੩Ԭࢧ෦"84ษڧձ-5 https://zenn.dev/keni_w/articles/acbfd69a2c7dbb 詳細は公開済みなので、 ご覧ください。

Slide 20

Slide 20 text

%FUFDUJOHBOETUPQQJOHSFDVSTJWFMPPQTJO"84-BNCEBGVODUJPOT +"846(੩Ԭࢧ෦"84ษڧձ-5 Demo

Slide 21

Slide 21 text

·ͱΊ +"846(੩Ԭࢧ෦"84ษڧձ-5 • Lambda関数の再起ループの検出と停⽌を⾏うもの。 • 現状は、対応しているのは、 • Amazon SQS • Amazon SNS • Amazon S3は対応していないので、注意! • SQSのキュー⾃体を数珠繋ぎ(ピタゴラスイッチ)に したものについては、おそらく対応していない。 • ごめんなさい。対応していました。

Slide 22

Slide 22 text

·ͱΊ +"846(੩Ԭࢧ෦"84ษڧձ-5 AWS Lambda Amazon Simple Storage Service Bucket with objects AWS Lambda Amazon Simple Storage Service Bucket with objects User ①ユーザーは S3バケットAに アップロード ②S3トリガーでLambda が起動。Lambda関数内 で、ファイル内のデータ を使って処理後、バケッ トBにファイルをコピー ③S3トリガーでLambda が起動。Lambda関数内 で、ファイル内のデータ を使って処理後、バケッ トCにファイルをコピー Amazon Simple Storage Service Bucket with objects AWS Lambda ④S3トリガーでLambda が起動。Lambda関数内 で、ファイル内のデータ を使って処理後、バケッ トAにファイルをコピー ⑤②と同様 こういうやつ (S3は無理ですが、次ページのような構成は検知します。)

Slide 23

Slide 23 text

·ͱΊ +"846(੩Ԭࢧ෦"84ษڧձ-5 この構成は検知してくれます。

Slide 24

Slide 24 text

·ͱΊ +"846(੩Ԭࢧ෦"84ษڧձ-5 とりあえず、 Amazon S3に 対応してくれることを 願います!

Slide 25

Slide 25 text

·ͱΊ +"846(੩Ԭࢧ෦"84ษڧձ-5 あ、忘れてましたが・・・

Slide 26

Slide 26 text

·ͱΊ +"846(੩Ԭࢧ෦"84ษڧձ-5 ループになるような 構成・設定にしないこと!

Slide 27

Slide 27 text

·ͱΊ +"846(੩Ԭࢧ෦"84ษڧձ-5 そもそもループになるような 構成・設定にしないこと!

Slide 28

Slide 28 text

KBXTVH ご静聴 ありがとう ございました +"846(੩Ԭࢧ෦"84ษڧձ-5