AWS Lambda ZIPアーカイブのINITフェーズが2025年8月から課金されます

AWS Lambda ZIPアーカイブのINITフェーズが2025年8月から課金されます

.zipファイルアーカイブのLambda関数をオンデマンド実行する場合、2025年8月からINITフェーズの時間も課金されるようになります。
Clock Icon2025.05.08

AWS Lambdaの利用費が環境によっては2025年8月1日から増えるかもしれません。

.zipファイルアーカイブでオンデマンドのLambda関数を利用している場合、2025年8月からLambda関数の初期化(INIT)フェーズの時間も課金されるようになります。

この実行形態はLambdaの最初期から存在するため、多くの人が影響を受けるかもしれませんが、過度な心配は不要です。
このINIT処理は多くの本番環境ではLambda関数呼び出しの1%未満でしか発生しません。今回の仕様変更が単一の明細の単位で増加することはあっても、AWS Lambda、さらにはAWS利用費全体にインパクトを与えるような環境はレアでしょう。

https://aws.amazon.com/blogs/compute/aws-lambda-standardizes-billing-for-init-phase/

仕様変更についての解説資料

2025年5月10日の Serverless Meetup Fukuoka #5 でこの仕様変更について発表した資料を共有します

Lambda実行のINITフェーズと新課金ルールの関係

話を単純化するために、ZIP形式でSnapStartを利用しないLambda関数をオンデマンド実行する場合を考えます。

Lambda関数が呼び出されると、初期化(INIT/コールドスタート)→呼び出し(INVOKE)→シャットダウン(SHUTDOWN)というライフサイクルをたどります。

Overview-Successful-Invokes

引用元

以下は初めて呼ばれたLambda関数のログです

REPORT RequestId: 0c57cbc0-c360-42d6-bc90-9c8973347bb9
Duration: 13.51 ms
Billed Duration: 14 ms
Memory Size: 128 MB
Max Memory Used: 33 MB
Init Duration: 91.76 ms

※改行を付与

Duration(13.51 ms) はLambda関数のINVOKEフェーズの時間であり、現在の仕様ではこの数字を切り上げた Billed Duration(14 ms) を基準にLambdaの実行費用(Lambda-GB-Second)が算出されます。

2025年8月からは、Lambda関数の初期化に要した Init Duration(INITフェーズ) もBilled Duration に含まれるようになります。

lambda-init-change-overview

Lambdaの利用費が増加する可能性はありますが、過度の心配は不要です。

Lambda関数を呼び出すときに、毎回初期化するとオーバーヘッドが大きいため、INIT済みの関数を使い回すことがあります。このおかげで、INIT処理はLambda関数呼び出し全体の1%未満に収まっています。[1]

以下は連続して呼ばれた2回目のLambda関数の実行ログです

REPORT RequestId: 0a9e5fc7-daee-4a6f-b3a2-d0aea608dd2a
Duration: 4.85 ms
Billed Duration: 5 ms
Memory Size: 128 MB
Max Memory Used: 34 MB	

※ 改行を付与

初期化済みのLambda関数を使いまわしているため、INIT フェーズが含まれておらず、このような99%のLambda関数呼び出しは今回の仕様変更の影響を受けません。

INITフェーズノーバーヘッドを伴うLambda関数の呼び出しは「コールドスタート」とも呼ばれます。

2025年5月時点のドキュメントでは、このINITフェーズは課金されないと明記されています[2]

利用費へのインパクトを試算

Lambdaの実行では直接・間接的に以下のような利用費が伴います

  • CPUアーキテクチャごとの単価 X 1GB-秒時間
  • 呼び出し数
  • CloudWatch Logsへのログ出力
  • 通信(NAT、VPCエンドポイント、インターネット通信)
  • その他

今回は仕様変更は1つ目に関するものであり、利用明細では AWS Lambda APN1-Lambda-GB-Second のように出力されているものです。

AWS Lambdaの特定の明細に対する仕様変更であり、そもそも、AWS Lambdaサービスの利用費が支配的なAWSアカウントはそれほど多くないはずです。
多くの環境で、AWS利用費全体でみると、仕様変更の影響は軽微なはずです。

新しい利用費の算出に必要なデータはCloudWatch Logsに出力されています。

CloudWatch Logs Insights(ログのインサイト)を用いると、複数のログ・関数をまたいで試算できます。

ロググループのプリフィックスでLambda関数全体に絞ったり(/aws/lambda)、特定のLambda関数のロググループに絞ったり、期間で絞り込みましょう。

log-insights

INIT フェーズの発生割合を確認

AWSの公式ブログではInitの発生割合は1%未満とありました。

当然ながら、実際のInitの発生頻度はワークロードによります。

次のクエリのRatioからInitの割合を確認しましょう

filter @type = "REPORT"
| stats 
  count(*) as totalInvocation,
  count(@initDuration) as coldInvocation,
  coldInvocation/totalInvocation as Ratio

Ratio が0.1の場合、10%、0.01の場合、1%の頻度でInitが発生していることを意味します。

当然ながら、このInit発生率が小さいほど影響も小さいと予測できます。

利用費の増加率

繰り返しとなりますが、現在は INVOCATIONフェーズの Duration をベースに課金時間(Billed Duration)を算出しているのが、INITフェーズ(Init Duration)+INVOCATIONフェーズ(Duration) をベースとするように仕様変更されます。
さらに、Lambda関数ごとに個別にメモリを割り当てることができるため、複数のLambda関数をまたいでLambdaの利用費を試算する必要があります。

利用費の根拠となるメモリ割り当て量は Memory Size: 128 MB のようにログ出力されています。

以上から、ログを元に LambdaのGB-Second を次のようにして計算できます

  • 旧仕様 : GB-s = (Memory Size MB/ 1024 MB) * (Billded Duration ms/ 1000 ms)
  • 新仕様 : GB-s = (Memory Size MB/ 1024 MB) * ceil(Duration ms + Init Duration)/ 1000 ms)

以上を元に、Lambda利用費の増加率(billedRatio = 新仕様 / 旧仕様)を求めるクエリが次のものです。

filter @type = "REPORT" 
| stats 
  sum((@memorySize/1000000/1024) * (@billedDuration/1000)) as oldBilledGBs, 
  sum((@memorySize/1000000/1024) * (@initDuration/1000)) as newBilledGBs, 
  (oldBilledGBs + newBilledGBs)/oldBilledGBs as billedRatio

billedRatio は1以上を取るはずで1に近いほど影響度が少なく、例えば1.1 の場合は現在の課金額から10%の増加を意味します。

改善方法

仕様変更の影響が無視できないほど大きいと判明した場合、コールドスタート時間を短縮することで、Initフェーズ課金時間の削減や、ひいては高速なレスポンスによってユーザー体験を向上させることが期待できます。

  • 初期化済みの状態をスナップショットとして保存する SnapStart機能
  • Lambda の初期化処理のコード改善
  • あらかじめプロビジニングする同時実行数の制御

などが考えられます。

Lambdaのほかの実行形式のINIT課金について

コンテナイメージでデプロイしていたり、プロビジョニングされた同時実行数の設定を利用している場合は関係あありません。

デプロイ形式 \ 実行方式 オンデマンド実行 プロビジョニング済み同時実行
ZIP 2025年8月から新規に課金予定 既に課金対象
カスタムランタイム 既に課金対象 既に課金対象
コンテナ 既に課金対象 既に課金対象

コンテナLambdaやプロビジョンド・コンカレンシーを利用している場合、従来からINITフェーズも課金されていました。
今回の仕様変更により、仕様の足並みが揃います。

最後に

ZipファイルアーカイブのLambda関数をオンデマンド実行する場合、2025年8月からINITフェーズの時間も課金されるようになります。

単一明細でみると仕様変更の影響はあるかもしれませんが、AWS Lambdaサービス、更には、AWSアカウント単位の利用費としてみると、多くの環境で影響は無視できるほど軽微なはずです。計算の根拠となるデータはCloudWatch Logsから取得可能なため、気になる場合はCloudWatch Insightsで念のため影響を評価しましょう。影響を無視できない場合は、コールドスタート問題と同様のアプローチでINITフェーズの最適化が可能です。

参考

脚注
  1. "According to an analysis of production Lambda workloads, INITs (cold starts) typically occur in under 1% of invocations—meaning code in the INIT phase may execute just once per hundred invocations." https://aws.amazon.com/blogs/compute/aws-lambda-standardizes-billing-for-init-phase/ ↩︎

  2. "the first two steps of downloading the code and setting up the environment are frequently referred to as a “cold start”. You are not charged for this time" https://aws.amazon.com/blogs/compute/aws-lambda-standardizes-billing-for-init-phase/ ↩︎

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.