Lambdaの勉強をしようと、トリガーにS3へのアップロードを設定し、ハンドラーでそのファイルを読み、何らかの処理を経て再びS3へアップロードするサンプルを作っていた。
ラムダ、なかなか使いやすそうだな・・・なんて思いながらサクサク進めていたら、トリガーの設定のところで何やら英語で警告文がある。
同じバケットに書き込むと再帰処理が行われてコストとかえらいことになるよ
こんなことが書いてあるのだが、まあ日本人ユーザーの半数くらいは適当に流して進んでしまうに違いない。
何しろ英文であり、結構本格的な単語が使われてるので、「まあ初心者には関係ないんじゃね」みたいな気持ちで軽く考えてしまうと思う。
ところが、ちょっとしたコーディング・ミスをしでかしただけで、軽い気持ちでラムダに挑んだ初心者さん(=自分)が破産に追い込まれる危険があるのだ。
この悲惨な状況は、トリガーとなるS3の場所と同じところにファイルをアップロードしてしまうというミスを犯した時に必ず起こる。
そしてそのミスは割と普通に起こりうる。例えば出力先につけるべきプレフィックスが何かの間違いで付かなかったりした時、結果的に入力先と同じところに保存されてしまう。
もし万一、無限ループに至ったまま1ヶ月放置するとどのくらいの請求になるだろうか?計算はしていないが、海外の事例で1時間で$600!!というのがあったから、それにx24x30すると、
43万2千ドル(約6000万円!!!!)
さすがにここまで来ると一生が終わってしまうので、何らかの示談の余地はあると思う。
ただ、ググってみると2日間放置して泣く泣く何万円か払ったという体験記もあった。ひと月放置したら給料が吹っ飛ぶだろう。
それにしても、こういうトラブルはその仕組みを提供しているAWSにも問題があると思う。
プログラミングミスは「誤操作」というレベルのものではなく、たいがいの人間はプロアマを問わずミスをしながらコーディングを行う。その過程で発生した「ミス」によって一生を棒に振らないといけないとはどういうことか。一人の怪我人も出ていないし、生命を奪われたりしているわけじゃないのに・・・
予防措置として警告を出しているが、英語で書かれており非英語圏ユーザーにとっては圧倒的に不利だ。翻訳文さえ用意出来ないのはAWS側の不備であるとしか思えない。
おまけにコスト関連のサービスが分散しすぎていて、異常なコストが発生した時に気づきにくい作りになっているのも非常に困る。
実は、こうした再帰処理を防ぐリミッターがつい最近実装されたというニュースも入って来たが、S3には対応していないそうだ。
つまり現時点では初心者が破産するリスクがあるという状況は依然として続いているということだ。
こういった事故は、お試しでラムダに触ってみようとか認定試験の対策として練習していたユーザーが特に陥りやすいと思っていて、ネットに上がっていないだけで割とあちこちで発生しているインシデントなのではないかと思う。
それなのに何の技術的対策が行われていないのは、腑に落ちない思いがするし恐怖感さえ感じる。
AWSに限らずクラウドモノに通じる潜在的な恐怖といったら良いのか。
少なくともローカルだけの処理だったら破産までは行かない。
クラウドサービスはもう定着したトレンドなのだけど、何でもかんでもクラウドに絡めなくても良いんじゃないか、と思い始めた。
コメント