年3万ドルを“ドブ捨て”課金 AWS Lambdaのコストを1円でも下げる方法は:”サーバレスは安く済む”の誤解
AWSの年次イベントで、Lambdaの運用を通じて年間3万ドル以上の不要な課金が発生した企業の事例が紹介された。その後同社は利用料金を97%削減できたという。何をしたのか。
「気付いた時には、1つのLambdaが1日86ドルを垂れ流していた」――。2025年12月、米ラスベガスで開催されたAWS(Amazon Web Services)の年次イベント「AWS re:Invent 2025」で、登壇者が語ったものだ。恐ろしいのは、この事象がシステムのバグではなく、AWSの「仕様」を正しく理解していなかったがゆえに発生したという点だ。
本稿は、ある企業がAWSのクラウドコンタクトセンターサービス「Amazon Connect」のデータ処理に「AWS Lambda」(サーバレスコンピューティングツール)を使用した際に起きた、年間3万ドル超の過剰な課金と教訓について紹介する。
年3万ドルの垂れ流し その理由は
併せて読みたいお薦め記事
クラウドコストの関連記事
講演に登壇したのは、南アフリカのFinTech(金融とITの融合)のスタートアップ企業でテックリードを務めるリジョイス氏だ。同氏によると、スタートアップの世界では、スピード、少数精鋭のチームであること、機能の迅速なリリースが重視される。その結果、適切なアーキテクチャ設計が後回しになることがあるという。
リジョイス氏の企業では、Amazon Connectコールセンター機能で取得した通話データの感情分析に単一のLambdaを使用していた。同社では、この運用で1日当たり86.67ドル(約1万円)の費用が発生していた。この費用はどのように発生していたのか。
高額になったコストの背景を30秒で理解する
- このコストを生んでいた原因は“待ち時間”だった。
- AWS Lambdaは従量課金制のサービスだ。従って、サービスを実行中であれば課金される。待ち時間も課金対象となる。
- リジョイス氏の企業では、AWS Lambdaに加えて「Amazon Transcribe」(音声の文字起こしサービス)、「Amazon Comprehend」(自然言語処理サービス)を使っていた。両サービスのデータ処理を待つLambdaの待機中の時間も課金対象になっていた。
3分で分かる要点まとめ
リジョイス氏の企業では、Amazon Connectの通話データを、Amazon Transcribe、Amazon Comprehendを使い、AWSのストレージサービス「Amazon Simple Storage Service」(Amazon S3)に保存するに保存するまでのプロセスを単一のLambdaで処理していた。
コスト増大の主因は、外部サービスの応答を待つ時間もLambdaが実行中扱いとなり課金された点にある。
リジョイス氏は、Lambdaの主要なコスト要因として以下を挙げている。
- Lambdaに割り当てられるメモリの量
- Lambdaのコードのサイズ
- 呼び出し回数(Lambdaは、ミリ秒単位ごとに課金される)
そこでリジョイス氏は、AWSの「Lambda Power Tuning」(Lambdaのメモリ設定を自動的に最適化するためのツール)を使うことにした。同氏はGitHubのリポジトリにあった実際のデータから、メモリのサイズ別の実行時間とコストを算出、最適値を特定した。
何が変わったのか
リジョイス氏は、単一のLambdaで感情分析のデータ保存と通知までを実施する設計を止め、Amazon Transcribe、Amazon Comprehend、Amazon S3用にLambdaを分割することにした。さらに、ログの保持期間を環境別に設定する、ログのサイズとコストを削減するために、ペイロード全体ではなくキー識別子をログに記録するといった施策を実施した。この結果、リジョイス氏のチームは、1日当たり86.67ドル掛かっていた費用を1日当たり2ドル未満に削減することができた。削減率は97.7%だ。
IT部門が取り入れられるアクションは
Lambdaを使用しているユーザーが今すぐ取り入れられるアクションについて、リジョイス氏は以下を紹介した。
- 「AWS Cost Explorer」(AWSのクラウドサービスのコスト削減を支援するツール)でLambdaだけを抽出し、日次、関数単位で異常値を確認する。
- Lambda Power Tuningを実行し、メモリサイズと実行時間を可視化する。
- 単一のLambdaが外部APIの完了待ちをしていないかを確認し、オーケストレーション用途は分割する。
- AWSの利用料のアラートを設定できる「AWS Budgets Alerts」を使って、コストアラートを設定し、「気付いたら数万円」状態を防ぐ。
- AWSの各サービスで発生したログを収集する「CloudWatch Logs」で必要なログのみ保持するように設定する。さらに、Amazon S3へのログアーカイブ機能などを活用して、Lambdaのログ記録を最適化する。
Copyright © ITmedia, Inc. All Rights Reserved.