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_bgnr_c...
Search
Kenichiro Wada
April 16, 2021
Technology
0
47
Lambdaって課金されるの?〜非同期処理でちょっとやらかした話 /jawsug_bgnr_chiba_lt
JAWS-UG 初心者支部&千葉支部 #26 - 新人さん歓迎!ハンズオン<(オンライン) -
Kenichiro Wada
April 16, 2021
Tweet
Share
More Decks by Kenichiro Wada
See All by Kenichiro Wada
My First Impression Of Kiro / 20250801-kumoben-lt
kwada
0
84
(全日本人)待望のS3トリガーのLambda無限ループ対応について / chibaraki-1
kwada
0
150
AWS Lambdaに出会って人生が変わった1人の10年間 /awslambda10th
kwada
0
110
GPSデバイスを使った簡易位置案内システムの構築をしてみた話。/jawsfesta2024
kwada
0
870
とある航空会社の飛行機の乗り方をお教えします。/20240913-lt
kwada
3
330
Building a Simple Navigation Guide Service Using GPS Devices/jaws-pankration2024
kwada
0
130
IaCジェネレーターを使って、昔に作ったLambda関数をCDK管理下においてみた / jaws-ug-josys-30
kwada
0
140
SORACOM UG Explorer 2023ハンズオンの裏側サービスを紹介 / soracom-ug-online-17
kwada
0
340
(2023.08.17 Update)Detecting and stopping recursive loops in AWS Lambda functionsでAWS Lambdaの無限ループを防ぐ! / jaws-ug-shizuoka
kwada
0
260
Other Decks in Technology
See All in Technology
ViteとTypeScriptのProject Referencesで 大規模モノレポのUIカタログのリリースサイクルを高速化する
shuta13
3
250
組織全員で向き合うAI Readyなデータ利活用
gappy50
5
2k
データとAIで明らかになる、私たちの課題 ~Snowflake MCP,Salesforce MCPに触れて~ / Data and AI Insights
kaonavi
0
230
オブザーバビリティが育むシステム理解と好奇心
maruloop
3
2k
AIの個性を理解し、指揮する
shoota
3
610
仕様駆動開発を実現する上流工程におけるAIエージェント活用
sergicalsix
10
5.3k
AWS DMS で SQL Server を移行してみた/aws-dms-sql-server-migration
emiki
0
280
Raycast AI APIを使ってちょっと便利なAI拡張機能を作ってみた
kawamataryo
0
230
OTEPsで知るOpenTelemetryの未来 / Observability Conference Tokyo 2025
arthur1
0
410
今のコンピュータ、AI にも Web にも 向いていないので 作り直そう!!
piacerex
0
370
JAWS UG AI/ML #32 Amazon BedrockモデルのライフサイクルとEOL対応/How Amazon Bedrock Model Lifecycle Works
quiver
1
650
GTC 2025 : 가속되고 있는 미래
inureyes
PRO
0
150
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
Speed Design
sergeychernyshev
32
1.2k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.1k
Practical Orchestrator
shlominoach
190
11k
Writing Fast Ruby
sferik
630
62k
Designing Experiences People Love
moore
142
24k
The Language of Interfaces
destraynor
162
25k
How to Ace a Technical Interview
jacobian
280
24k
Transcript
+"846(ॳ৺ऀࢧ෦ˍઍ༿ࢧ෦ ৽ਓ͞ΜܴʂϋϯζΦϯ-5 ΦϯϥΠϯ -BNCEBͬͯ՝ۚ͞ΕΔͷʁʙඇಉظॲཧͰ ͪΐͬͱΒ͔ͨ͠
ࣗݾհ ・和⽥ 健⼀郎 ・アイレット株式会社所属 ・ JAWS-UG 千葉⽀部運営 ・普段は、社内ツールの開発に従事 ・趣味で開発する(IoTっぽいこと)時はLambdaメイン ・好きなAWSサービスはAWS
Lambda Twitter : @Keni_W Qiita: https://qiita.com/keni_w
Lambdaって課⾦されるの?
-BNCEBͬͯ՝ۚ͞ΕΔͷʁ 趣味(ハンズオンとかちょっとした開発)で 利⽤している限りは、まずないです。 例)2020/03の利⽤料⾦
-BNCEBͬͯ՝ۚ͞ΕΔͷʁ ただし、 「Provisioned Concurrency」という機能を 有効にすると、その利⽤料は無料利⽤枠対象外 になります。 例)検証していた際(12⽉)の利⽤料⾦
ただし、⾮同期処理で、 やらかした場合は、 その限りではありません! -BNCEBͬͯ՝ۚ͞ΕΔͷʁ
ちょっとやらかした⼀例を、 実例を含めてお話しします。 ミスによるものなので、 基本的にはLambda、 サーバーレス怖くないですよ。 -BNCEBͬͯ՝ۚ͞ΕΔͷʁ
構成(想定) ඇಉظॲཧͰΒ͔ͨ͠ 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が起動し、 後続処理を実⾏
察しの良い⽅は、この時点で何を どう間違えたか気づくかと思いますが。。。 ඇಉظॲཧͰΒ͔ͨ͠
構成(実際) ඇಉظॲཧͰΒ͔ͨ͠ AWS Lambda Amazon CloudFront バケットB User ①ユーザーはCFn経由で、 ファイルをS3バケットA
に アップロード ②S3トリガーでLambdaが起動。 Lambda関数内で、バケットBバケットA にファイルをコピーし、元のファイルを削除 ・ ・ ・ ③S3トリガーでLambdaが起動。 Lambda関数内で、バケットBバケットA にファイルをコピーし、元のファイルを削除 ④S3トリガーでLambdaが起動。 Lambda関数内で、バケットBバケットA にファイルをコピーし、元のファイルを削除 ⑤S3トリガーでLambdaが起動。 Lambda関数内で、バケットBバケットA にファイルをコピーし、元のファイルを削除
ඇಉظॲཧͰΒ͔ͨ͠
⽬に⾶び込んできたのは、 Lambdaの実⾏数(Invocations)が 凄まじい勢いで跳ね上り、 Throttlesの値が出現する Cloudwatchのメトリクス。 そして、Slackに通知される監視システムからの アラートメッセージ。。。 ඇಉظॲཧͰΒ͔ͨ͠
ඇಉظॲཧͰΒ͔ͨ͠
いや、挫折してる暇はないんです。 ⽌めないと。。。 ඇಉظॲཧͰΒ͔ͨ͠
Lambda関数消しました ※もっといい⽌め⽅があるので後述します。 ඇಉظॲཧͰΒ͔ͨ͠
S3バケットの指定は、Lambdaの環境変数に定義して あったので、それを変えればいいんじゃ・・・? ඇಉظॲཧͰΒ͔ͨ͠
ඇಉظॲཧͰΒ͔ͨ͠
Lambdaに限らずですが、 まあ、まずは落ち着きましょう。 ඇಉظॲཧͰΒ͔ͨ͠
救いだったのは。。。 新規開発のもので、実装終わって、 さあーってLambdaデプロイして、 テストするかー。の時点だったこと (メトリクスも⾒てたので、すぐに気づけた) そういう存在だったので容赦なく捨てられたこと。 ඇಉظॲཧͰΒ͔ͨ͠
暴⾛Lambdaの⽌め⽅ですが、 コンソール上部にある「スロットリング」ボタンを押す と⽌められるそうです。 ඇಉظॲཧͰΒ͔ͨ͠
どう対策するべきか。 ※ダメなケースもあるので最適解ではないです。 ・同時実⾏数の予約を1にする。 ・Invocationsの異常値、もしくは Throttlesが発⽣時に、Clouwatch Alerm もしくはサードパーティーの監視システム で通知をあげる。 ඇಉظॲཧͰΒ͔ͨ͠
ちょっと聞いた話なんですが、 こんなケースもあるそうです。 ඇಉظॲཧͰΒ͔ͨ͠
構成(⼀部想像) ඇಉظॲཧͰΒ͔ͨ͠ 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にファイルをコピー ⑤②と同様
1Lambdaの実⾏が淡々と繰り返される。。。 スロットリングにもならないので、エラーも起こらない。 ඇಉظॲཧͰΒ͔ͨ͠
どう対策するべきか。 聞いた時ちょっと悩みましたね。でも、以下かな? ※これまたダメなケースもあるので最適解ではないです。 ・関数のInvocationsのsum(合計)が異常値検知 して、アラートを⾶ばす。 ・BillingAlertを設定し、課⾦発⽣/想定外時 に、アラートを⾶ばす。 ඇಉظॲཧͰΒ͔ͨ͠
いずれにしろ、確かなことは、 ⼈はミスする⽣物なので、 オンプレ・EC2上で動作するアプリでも、 サーバーレスのアプリでも監視は重要ってことです。 ·ͱΊ
とはいえ、いきなり監視(しかも個⼈の場合は特に)は 難しいので、テスト実⾏して、ログ・メトリクスを⾒ま しょう! ·ͱΊ
素敵なサーバーレス開発ライフを! ·ͱΊ