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
Lambdaトリガーでピタゴラスイッチしてみた / jawsug_bgnr46lt
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Kenichiro Wada
February 22, 2022
Technology
0
670
Lambdaトリガーでピタゴラスイッチしてみた / jawsug_bgnr46lt
2022.02.22 JAWS-UG 初心者支部#46 AWS Builders Online Series recap4 LT資料です。
Kenichiro Wada
February 22, 2022
Tweet
Share
More Decks by Kenichiro Wada
See All by Kenichiro Wada
楽しく学ぼう!サーバーレス入門 /jawsdays2026
kwada
0
33
JAWS-UGとLambdaに感謝を込めて~ AWS と共に歩んだX年 ~/kmj-20260117
kwada
1
64
My First Impression Of Kiro / 20250801-kumoben-lt
kwada
0
110
(全日本人)待望のS3トリガーのLambda無限ループ対応について / chibaraki-1
kwada
0
180
AWS Lambdaに出会って人生が変わった1人の10年間 /awslambda10th
kwada
0
130
GPSデバイスを使った簡易位置案内システムの構築をしてみた話。/jawsfesta2024
kwada
0
1k
とある航空会社の飛行機の乗り方をお教えします。/20240913-lt
kwada
3
370
Building a Simple Navigation Guide Service Using GPS Devices/jaws-pankration2024
kwada
0
170
IaCジェネレーターを使って、昔に作ったLambda関数をCDK管理下においてみた / jaws-ug-josys-30
kwada
0
170
Other Decks in Technology
See All in Technology
OCHaCafe S11 #2 コンテナ時代の次の一手:Wasm 最前線
oracle4engineer
PRO
2
150
Everything Claude Code を眺める
oikon48
11
7k
Go 1.26 Genericsにおける再帰的型制約 / Recursive Type Constraints in Go 1.26 Generics
ryokotmng
0
110
Lambda Web AdapterでLambdaをWEBフレームワーク利用する
sahou909
0
160
OSC仙台プレ勉強会 AlmaLinuxとは
koedoyoshida
0
190
決済サービスを支えるElastic Cloud - Elastic Cloudの導入と推進、決済サービスのObservability
suzukij
2
660
エンジニアリングマネージャーの仕事
yuheinakasaka
0
100
Yahoo!ショッピングのレコメンデーション・システムにおけるML実践の一例
lycorptech_jp
PRO
1
220
最強のAIエージェントを諦めたら品質が上がった話 / how quality improved after giving up on the strongest AI agent
kt2mikan
0
190
WebアクセシビリティをCI/CDで担保する ― axe DevTools × Playwright C#実践ガイド
tomokusaba
2
130
2026-03-11 JAWS-UG 茨城 #12 改めてALBを便利に使う
masasuzu
2
400
Agent ServerはWeb Serverではない。ADKで考えるAgentOps
akiratameto
0
110
Featured
See All Featured
BBQ
matthewcrist
89
10k
Git: the NoSQL Database
bkeepers
PRO
432
66k
Claude Code のすすめ
schroneko
67
220k
Embracing the Ebb and Flow
colly
88
5k
Color Theory Basics | Prateek | Gurzu
gurzu
0
250
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.9k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
410
Music & Morning Musume
bryan
47
7.1k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
170
Are puppies a ranking factor?
jonoalderson
1
3.1k
Everyday Curiosity
cassininazir
0
160
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Transcript
-BNCEBτϦΨʔͰ ϐλΰϥεΠονͯ͠Έͨ BXT KBXTVH KBXTVH@CHOS 2022.02.22 JAWS-UG 初⼼者⽀部#46 AWS Builders
Online Series recap4 和⽥健⼀郎@Keni_W
ࠓ͢͜ͱ KBXTVHDIJCB KBXTVH@CHOS • ⾃⼰紹介 • きっかけ • Lambdaのトリガー •
ピタゴラスイッチしてみた • トリガーのEventなど解説 • 終わり -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ
⾃⼰紹介 ⽒名:和⽥ 健⼀郎 所属:アイレット株式会社 エンジニア JAWS-UG 千葉 運営メンバー SORACOM UG
東京 運営メンバー Twitter: @Keni_W Facebook : kenichiro.wada.3 好きなAWSサービス : AWS Lambda 2021 APN AWS Top Engineers 2020年共著でサーバーレスの本書きました
͖͔͚ͬ KBXTVHDIJCB KBXTVH@CHOS -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ • この話は元ネタは、運営の織⽥さんとのこんな やりとりから始まりました。
-BNCEBͷτϦΨʔ KBXTVHDIJCB KBXTVH@CHOS -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ • AWS Lambdaは現状、FaaS(Function as a Service)
の代表格とも⾔える AWSのコンピューティングサービス です。 • マネージメントコンソールやAPIを利⽤して、コードの アップロードするだけで、実⾏することができます。 • つまり、開発者はサーバーの構築、管理は⼀切不要で、 コードの実装のみに集中することができます。 • また、リクエストに応じて、⾃動的にスケーリングを ⾏ってくれます。 • リクエスト毎の課⾦となるため、関数が実⾏されない時 には、⼀切料⾦が発⽣しません。そのため、Amazon EC2を利⽤した場合に⽐べて⼤幅に料⾦が下がるケース もあります。 (基礎から学ぶサーバーレス開発 SECTION-004より)
-BNCEBͷτϦΨʔ KBXTVHDIJCB KBXTVH@CHOS -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ サーバーのことを考えずに コードを実⾏する
-BNCEBͷτϦΨʔ KBXTVHDIJCB KBXTVH@CHOS Lambdaのコンソールで、関数左側にあるのが、 トリガーですね。 -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ
-BNCEBͷτϦΨʔ KBXTVHDIJCB KBXTVH@CHOS ⼀⽅、右に出てくるのが、Destinationsです。 ごめんなさい。こっち使うの忘れました。 -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ
-BNCEBͷτϦΨʔ KBXTVHDIJCB KBXTVH@CHOS -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ スーパー猫の⽇現在、 トリガーの種類はこんな感じ。
-BNCEBͷτϦΨʔ KBXTVHDIJCB KBXTVH@CHOS -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ トリガー⾃体は、以下の2つ。 ・同期呼び出し この呼び出し⽅法では、Lambdaは関数を実⾏し、レスポンスを待ちます。 関数の実⾏が完了したら、呼び出し元にそのレスポンスを返却します。 関数内でエラーになった、タイムアウト時間に達した場合などで関数からエラーが返った場合、 エラーのレスポンスを確認し、呼び出し元で、再度処理を⾏うかを判断するようにします。
・⾮同期呼び出し この呼び出し⽅法では、Lambdaは⼀旦イベントを内部のキューに送信し、別のプロセスがそのキューから、 イベントを読み込み、関数が実⾏されます。 呼び出し元では、キューに追加の可否のみ受け取ることができます。 この呼び出し⽅法で注意が必要なのは、 ⾮同期実⾏の場合、最低 1回は実⾏されることが保証されますが、1回しか実⾏することを保証していませ ん。つまり、1回以上実⾏されることあるということです。 そのため、1回実⾏でも、複数回実⾏でも結果を同⼀になるような考慮をしておく必要があります、これを べき等性の確保と⾔います。 また、同期実⾏と異なり、関数内でエラーになった場合、Lambdaは関数を標準では2回リトライします。 合計 3回のリトライで失敗した場合は、Amazon SQSのキューやAmazon SNSのトピックにイベントを送 信することで、エラー状況を知ることが可能です。 (基礎から学ぶサーバーレス開発 SECTION-004より)
-BNCEBͷτϦΨʔ KBXTVHDIJCB KBXTVH@CHOS 突然ですが、ここでアンケートです。 以下のURLにアクセスするか、 QRコードを読み取ってください。 https://bit.ly/3sWy9Eo もしくは 「Mentimeter」 (https://www.menti.com/)に
アクセスし、以下のコードを⼊⼒ 7844 7371 -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ すみません。 現在はアンケート募集してません
-BNCEBͷτϦΨʔ KBXTVHDIJCB KBXTVH@CHOS Lambdaトリガー利⽤したことあるものを選んで Submitをクリックしてください。 ------- https://bit.ly/3sWy9Eo もしくは 「Mentimeter」 (https://www.menti.com/)に
アクセスし、以下のコードを⼊⼒ 7844 7371 -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ すみません。 現在はアンケート募集してません
ϐλΰϥεΠονͯ͠Έͨ KBXTVHDIJCB KBXTVH@CHOS -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ アンケート結果 〜アンケート結果〜
ϐλΰϥεΠονͯ͠Έͨ KBXTVHDIJCB KBXTVH@CHOS -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ 〜アンケート結果〜 1. API Gateway 1. S3
3. EventBridge 4. SQS 5. Cloudwatch Logs 5. DynamoDB
ϐλΰϥεΠονͯ͠Έͨ KBXTVHDIJCB KBXTVH@CHOS -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ よく使われるであろうトリガーを使って、こんな 感じのピタゴラスイッチ的にLambdaを数珠つな ぎに実⾏してみました。
ϐλΰϥεΠονͯ͠Έͨ KBXTVHDIJCB KBXTVH@CHOS -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ なお、今回も最近よく使っているAWS CDK v2に て構築しています。 トリガーを設定するには、 aws_lambda_event_sourcesに
いくつか⽤意されているので、 結構簡単に設定可能です。
ϐλΰϥεΠονͯ͠Έͨ KBXTVHDIJCB KBXTVH@CHOS -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ
ϐλΰϥεΠονͯ͠Έͨ KBXTVHDIJCB KBXTVH@CHOS -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ 今回、Lambdaのコードで次のトリガーとなる サービスを呼んでいるので、ちゃんと権限与えな いとダメですが、それもCDKなら簡単ですね。
ϐλΰϥεΠονͯ͠Έͨ KBXTVHDIJCB KBXTVH@CHOS -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ 今回、注意すべきは、S3トリガーで起動する Lambda関数をS3に保存するLambda関数に絶対 にしないこと。
ϐλΰϥεΠονͯ͠Έͨ KBXTVHDIJCB KBXTVH@CHOS -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ 多重実⾏で 死にます。
ϐλΰϥεΠονͯ͠Έͨ KBXTVHDIJCB KBXTVH@CHOS -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ S3トリガーを設定しようとすると、以下の案内が あるので、⾒直すとともに、チェックを忘れずに (チェックしないと登録できないですが。)
τϦΨʔͷ&WFOUͳͲղઆ KBXTVHDIJCB KBXTVH@CHOS -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ EventBridge
τϦΨʔͷ&WFOUͳͲղઆ KBXTVHDIJCB KBXTVH@CHOS -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ S3
τϦΨʔͷ&WFOUͳͲղઆ KBXTVHDIJCB KBXTVH@CHOS -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ SQS
τϦΨʔͷ&WFOUͳͲղઆ KBXTVHDIJCB KBXTVH@CHOS -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ SNS
τϦΨʔͷ&WFOUͳͲղઆ KBXTVHDIJCB KBXTVH@CHOS -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ DynamoDB
τϦΨʔͷ&WFOUͳͲղઆ KBXTVHDIJCB KBXTVH@CHOS -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ 他に⾊々とありますが、 詳しくは、 「他のサービスで AWS Lambda を使⽤する」
(https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-services.html) もしくは、 Lambdaのテストイベントのテンプレート にも⽤意されているので、 そちらも参考にしてください。
ऴΘΓ KBXTVHDIJCB KBXTVH@CHOS -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ • Lambdaトリガーは便利 • API Gatewayからの呼び出しも同期呼び出しと いうことで、トリガー分類される
• ⾮同期呼び出しの場合、1回以上実⾏されるの が保証されているので、冪等性の確保を忘れず に • S3トリガーが発砲されなかったという話を聞き ますが、⾃分は遭遇したことがない。 • 今度はDestinationsも使ってあげたい
ऴΘΓ KBXTVHDIJCB KBXTVH@CHOS -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ https://jawsug-chiba.connpass.com/event/239655/ JAWS-UG千葉⽀部オンライン#15 re:Invent Tech Re:Cap &
ハンズオン 開催します!
ऴΘΓ KBXTVHDIJCB KBXTVH@CHOS -BNCEBτϦΨʔͰϐλΰϥεΠονͯ͠Έͨ ご静聴 ありがとう ございました