Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
(2023.08.17 Update)Detecting and stopping recur...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Kenichiro Wada
August 12, 2023
Technology
290
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
(2023.08.17 Update)Detecting and stopping recursive loops in AWS Lambda functionsで AWS Lambdaの無限ループを防ぐ! / jaws-ug-shizuoka
2023.08.12 JAWS-UG静岡支部 AWS勉強会での発表内容です。
2023.08.17 誤りがあったので、その部分をアップデートしました。
Kenichiro Wada
August 12, 2023
More Decks by Kenichiro Wada
See All by Kenichiro Wada
[未発表]GPS + Beacon Edge Unit SORACOM Editionを試す 〜開封編〜 LT Version /discovery-night-2026
kwada
0
21
楽しく学ぼう!サーバーレス入門 /jawsdays2026
kwada
0
100
JAWS-UGとLambdaに感謝を込めて~ AWS と共に歩んだX年 ~/kmj-20260117
kwada
1
83
My First Impression Of Kiro / 20250801-kumoben-lt
kwada
0
130
(全日本人)待望のS3トリガーのLambda無限ループ対応について / chibaraki-1
kwada
0
210
AWS Lambdaに出会って人生が変わった1人の10年間 /awslambda10th
kwada
0
140
GPSデバイスを使った簡易位置案内システムの構築をしてみた話。/jawsfesta2024
kwada
0
1.2k
とある航空会社の飛行機の乗り方をお教えします。/20240913-lt
kwada
3
420
Building a Simple Navigation Guide Service Using GPS Devices/jaws-pankration2024
kwada
0
200
Other Decks in Technology
See All in Technology
AWS環境のセキュリティ不安を解消した企業事例 ~よくある課題と対策を一挙公開~
asanoharuki
0
240
歴史から理解するクラウドインフラのしくみ
kizawa2020
0
190
CloudWatchから始めるAWS監視
butadora
0
290
人依存からAIネイティブの体制へ:バックエンド開発の裏側【SORACOM Discovery 2026】
soracom
PRO
0
130
ここは地獄!つらい朝会を体験することで、チームとしてのより良い振る舞いに気づくワークショップ / The stand-up meeting from hell in the game industry
scrummasudar
0
440
データエンジニアこそ組織のオントロジーに向き合うべき — 問いに答えるAIから、事業を動かすAIへ
gappy50
4
1.7k
データ活用研修 問いの発見と仮説構築【MIXI 26新卒技術研修】
mixi_engineers
PRO
1
660
ウォーターフォール開発案件のPMとしてAI活用を模索している話
hatahata021
2
200
AI駆動開発は個人技からチーム戦へ:組織でAIを使いこなすための実践設計
moongift
PRO
0
180
PLaMo 3.0 Primeの事後学習
pfn
PRO
0
100
A Bag-of-Documents Model for Query Specificity
dtunkelang
0
170
Claude Mythos、Fable...フロンティアAIの最新動向と企業のセキュリティ対策
flatt_security
0
170
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
For a Future-Friendly Web
brad_frost
183
10k
Building Adaptive Systems
keathley
44
3.1k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.3k
Visualization
eitanlees
152
17k
GitHub's CSS Performance
jonrohan
1033
470k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
230
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
500
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Code Review Best Practice
trishagee
74
20k
Context Engineering - Making Every Token Count
addyosmani
9
1k
Transcript
BXT KBXTVH "846TFS(SPVQT BXTDPNNVOJUZ 2023.08.12 JAWS-UG静岡⽀部 AWS勉強会 和⽥健⼀郎@Keni_W %FUFDUJOHBOETUPQQJOHSFDVSTJWFMPPQT JO"84-BNCEBGVODUJPOTͰ
"84-BNCEBͷແݶϧʔϓΛ͙ʂ 6QEBUF7FS
ࠓ͢͜ͱ • ⾃⼰紹介 • AWS Lambdaとは • Detecting and stopping
recursive loops in AWS Lambda functions • まとめ +"846(੩Ԭࢧ෦"84ษڧձ-5
⾃⼰紹介 ⽒名:和⽥ 健⼀郎 所属:アイレット株式会社 エンジニア JAWS-UG 千葉 運営メンバー SORACOM UG東京
運営メンバー Twitter: @Keni_W Facebook : kenichiro.wada.3 好きなAWSサービス : AWS Lambda 実は静岡市⽣まれです! AWS Community Builder(Serverless) SORACOM MVC 2022
KBXTVH +"846(੩Ԭࢧ෦"84ษڧձ-5 ࣗݾհଓ͖ • いわゆる戦国三英傑では、徳川家康が好きです。 • 全員愛知⽣まれだろうは突っ込まないで。 • とある勉強会の影響で、静岡を舞台にした 「ローカル⼥⼦の遠吠え」にハマりました。
• さわやかは2019年に初めて⾷べた⼈です。 • 今回も⾷べたいけど台⾵次第かな・・・。 • 静岡おでんは好き。 • 静岡富⼠⼭空港は写真撮りに⾏っただけの⼈
"84-BNCEBͱ +"846(੩Ԭࢧ෦"84ษڧձ-5 • AWS Lambdaは現状、FaaS(Function as a Service) の代表格とも⾔える AWSのコンピューティングサービス
です。 • マネージメントコンソールやAPIを利⽤して、コードの アップロードするだけで、実⾏することができます。 • つまり、開発者はサーバーの構築、管理は⼀切不要で、 コードの実装のみに集中することができます。 • また、リクエストに応じて、⾃動的にスケーリングを ⾏ってくれます。 • リクエスト毎の課⾦となるため、関数が実⾏されない時 には、⼀切料⾦が発⽣しません。そのため、Amazon EC2を利⽤した場合に⽐べて⼤幅に料⾦が下がるケース もあります。 (弊書基礎から学ぶサーバーレス開発 SECTION-004より)
"84-BNCEBͱ +"846(੩Ԭࢧ෦"84ษڧձ-5 サーバーのことを考えずに コードを実⾏する
"84-BNCEBͱ +"846(੩Ԭࢧ෦"84ษڧձ-5 料⾦は、こんな感じなのです(東京リージョン)が、 趣味(ハンズオンとかちょっとした開発)で 利⽤している限りは、無料利⽤枠があるので、 普通に使っている限りは、課⾦されることはまずないです。
"84-BNCEBͱ +"846(੩Ԭࢧ෦"84ษڧձ-5 料⾦は、こんな感じなのです(東京リージョン)が、 趣味(ハンズオンとかちょっとした開発)で 利⽤している限りは、無料利⽤枠があるので、 普通に使っている限りは、課⾦されることはまずないです。
"84-BNCEBͱ +"846(੩Ԭࢧ෦"84ษڧձ-5 そう、普通に使っている限りは・・・。
"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が起動し、 後続処理を実⾏
"84-BNCEBͱ +"846(੩Ԭࢧ෦"84ษڧձ-5 察しの良い⽅は、 この図を⾒た時点で、 何をしたかお分かりになるかと 思いますが・・・。
"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 にファイルをコピーし、元のファイルを削除 構成(実際)
"84-BNCEBͱ +"846(੩Ԭࢧ෦"84ษڧձ-5
+"846(੩Ԭࢧ෦"84ษڧձ-5
+"846(੩Ԭࢧ෦"84ษڧձ-5 https://aws.amazon.com/jp/about-aws/whats-new/2023/07/aws-lambda-detects-recursive-loops-lambda-functions/
%FUFDUJOHBOETUPQQJOHSFDVSTJWFMPPQTJO"84-BNCEBGVODUJPOT +"846(੩Ԭࢧ෦"84ษڧձ-5 • Lambda関数の再起ループの検出と停⽌を⾏う。 • Amazon SQS、Amazon SNSトリガーでのループ に対応 •
16回のループ実⾏後、停⽌ • AWS Health Dashboardと連絡先に指定された メールに案内が来る • 放置しておくと、毎⽇連絡が来るケースがある。 (DLQなしのSQSでループした場合)
%FUFDUJOHBOETUPQQJOHSFDVSTJWFMPPQTJO"84-BNCEBGVODUJPOT +"846(੩Ԭࢧ෦"84ษڧձ-5 Amazon S3 対応してないじゃん!
%FUFDUJOHBOETUPQQJOHSFDVSTJWFMPPQTJO"84-BNCEBGVODUJPOT +"846(੩Ԭࢧ෦"84ษڧձ-5 とはいえ、いい仕組みだと思うので、 検証もしてみました。
KBXTVH +"846(੩Ԭࢧ෦"84ษڧձ-5 https://zenn.dev/keni_w/articles/acbfd69a2c7dbb 詳細は公開済みなので、 ご覧ください。
%FUFDUJOHBOETUPQQJOHSFDVSTJWFMPPQTJO"84-BNCEBGVODUJPOT +"846(੩Ԭࢧ෦"84ษڧձ-5 Demo
·ͱΊ +"846(੩Ԭࢧ෦"84ษڧձ-5 • Lambda関数の再起ループの検出と停⽌を⾏うもの。 • 現状は、対応しているのは、 • Amazon SQS •
Amazon SNS • Amazon S3は対応していないので、注意! • SQSのキュー⾃体を数珠繋ぎ(ピタゴラスイッチ)に したものについては、おそらく対応していない。 • ごめんなさい。対応していました。
·ͱΊ +"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は無理ですが、次ページのような構成は検知します。)
·ͱΊ +"846(੩Ԭࢧ෦"84ษڧձ-5 この構成は検知してくれます。
·ͱΊ +"846(੩Ԭࢧ෦"84ษڧձ-5 とりあえず、 Amazon S3に 対応してくれることを 願います!
·ͱΊ +"846(੩Ԭࢧ෦"84ษڧձ-5 あ、忘れてましたが・・・
·ͱΊ +"846(੩Ԭࢧ෦"84ษڧձ-5 ループになるような 構成・設定にしないこと!
·ͱΊ +"846(੩Ԭࢧ෦"84ษڧձ-5 そもそもループになるような 構成・設定にしないこと!
KBXTVH ご静聴 ありがとう ございました +"846(੩Ԭࢧ෦"84ษڧձ-5