検索
特集/連載

年3万ドルを“ドブ捨て”課金 AWS Lambdaのコストを1円でも下げる方法は”サーバレスは安く済む”の誤解

AWSの年次イベントで、Lambdaの運用を通じて年間3万ドル以上の不要な課金が発生した企業の事例が紹介された。その後同社は利用料金を97%削減できたという。何をしたのか。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

 「気付いた時には、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.

ページトップに戻る