たそらぼ

日頃思ったこととかメモとか。

Lambda無限ループでクラウド破産しないために

Lambda無限ループでクラウド破産しないためにどうしたらいいか考えました。

Lambda無限ループ

AWSのFaaSであるLambdaはサービスへのなんらかのアクションをトリガーにサーバーレスで稼働してくれます。
...が、一定の条件を満たすと「無限ループ」になってしまい、ものの数日でクラウド破産します。この現象を「Lambda無限ループ」と呼びましょう...!

Lambda無限ループになるパターン

Lambdaが他のサービスを介してループになっていないことに注意することが最も重要です。
例えば、下図のような構成を考えている人は、lambdaを実行する前に無限ループにならないか、よく考えとよいでしょう。

f:id:tasotasoso:20190806233352p:plain
Lambda無限ループが起こりうる状況の例

Lambda無限ループと私

今年の2月にこんな記事を書き、ありがたいことに、割とたくさんの方に見ていただいていています。
tasotasoso.hatenablog.com
ところで、この構成をなんですが、Lambdaで生成したHTMLを元のS3に戻したとき、もし戻り先のバケットをLambdaのトリガーの対象にしておくと、無限ループが発生してしまいます。

f:id:tasotasoso:20190210003951p:plain
LambdaとS3連携の例

回避方法

自分は怖がりなので以下の対策をしています。

クラウドサービス徹底比較・徹底解説 (2019年版)(クラウド破産について | クラウドサービス徹底比較・徹底解説 (2019年版))の対策に上げられているように、slackに請求金額を飛ばすのも、すごくよさそうです。

ほかのクラウド破産事例について

ほかの事例についてもすごく細かく載っているので、使い始める人はもちろん、慣れてきてそろそろやらかしそうな人はぜひ一読してください。
cloud-textbook.com