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
Kenichiro Wada
February 22, 2022
Technology
670
0
Share
Lambdaトリガーでピタゴラスイッチしてみた / jawsug_bgnr46lt
2022.02.22 JAWS-UG 初心者支部#46 AWS Builders Online Series recap4 LT資料です。
Kenichiro Wada
February 22, 2022
More Decks by Kenichiro Wada
See All by Kenichiro Wada
楽しく学ぼう!サーバーレス入門 /jawsdays2026
kwada
0
56
JAWS-UGとLambdaに感謝を込めて~ AWS と共に歩んだX年 ~/kmj-20260117
kwada
1
67
My First Impression Of Kiro / 20250801-kumoben-lt
kwada
0
110
(全日本人)待望のS3トリガーのLambda無限ループ対応について / chibaraki-1
kwada
0
190
AWS Lambdaに出会って人生が変わった1人の10年間 /awslambda10th
kwada
0
130
GPSデバイスを使った簡易位置案内システムの構築をしてみた話。/jawsfesta2024
kwada
0
1.1k
とある航空会社の飛行機の乗り方をお教えします。/20240913-lt
kwada
3
370
Building a Simple Navigation Guide Service Using GPS Devices/jaws-pankration2024
kwada
0
180
IaCジェネレーターを使って、昔に作ったLambda関数をCDK管理下においてみた / jaws-ug-josys-30
kwada
0
170
Other Decks in Technology
See All in Technology
不確実性と戦いながら見積もりを作成するプロセス/mitsumori-process
hirodragon112
1
200
"まず試す"ためのDatabricks Apps活用法 / Databricks Apps for Early Experiments and Validation
nttcom
1
210
Network Firewall Proxyで 自前プロキシを消し去ることができるのか
gusandayo
0
210
機能・非機能の学びを一つに!Agent Skillsで月間レポート作成始めてみた / Unifying Bug & Infra Insights — Building Monthly Quality Reports with Agent Skills
bun913
5
3.7k
ZOZOTOWNリプレイスでのSkills導入までの流れとこれから
zozotech
PRO
4
3.1k
第26回FA設備技術勉強会 - Claude/Claude_codeでデータ分析 -
happysamurai294
0
390
【関西電力KOI×VOLTMIND 生成AIハッカソン】空間AIブレイン ~⼤阪おばちゃんフィジカルAIに続く道~
tanakaseiya
0
180
🀄️ on swiftc
giginet
PRO
0
130
OpenClaw初心者向けセミナー / OpenClaw Beginner Seminar
cmhiranofumio
0
360
AIドリブン開発の実践知 ― AI-DLC Unicorn Gym実施から見えた可能性と課題
mixi_engineers
PRO
0
120
スクラムを支える内部品質の話
iij_pr
0
320
Databricks Appsで実現する社内向けAIアプリ開発の効率化
r_miura
0
340
Featured
See All Featured
A Soul's Torment
seathinner
5
2.6k
4 Signs Your Business is Dying
shpigford
187
22k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
99
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
710
The agentic SEO stack - context over prompts
schlessera
0
730
Docker and Python
trallard
47
3.8k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
340
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
320
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.1k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.9k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1k
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τϦΨʔͰϐλΰϥεΠονͯ͠Έͨ ご静聴 ありがとう ございました