LoginSignup
36
13

More than 3 years have passed since last update.

LambdaのProvisioned Concurrencyの価格を調べてみた

Last updated at Posted at 2019-12-11

この記事は、ハンズラボ Advent Calendar 2019 12日目の記事です :snowman:

はじめに

ハンズラボのPOSチームでテックリードをしている @zizi4n5 です :snowboarder:
ようやく消費税の増税・軽減税率対応なども落ち着いて、先週はラスベガスで開催された AWS re:Invent 2019 :airplane:に参加してきたのですが、その会場で発表された Lambdaの新機能 Provisioned Concurrency が非常に気になっています。

今まではLambdaの起動時間を早くする(コールドスタートさせない)対策として、定期的にLambdaの実行を行なっているサービスありますよね。
私が担当しているサービスでも、serverless-plugin-warmup を導入してLambdaのwarmupを行なっています。

それが今後は、自前での定期実行やpluginを導せずに素早くLambdaを実行できるようになる便利機能の登場です。
その分、やっぱりお高いんでしょう?ってあたりが気になっていたので、Provisioned Concurrencyの価格について調べた内容を以下にまとめました。
なお、設定の仕方はすでに色々なサイトでまとめられていましたので、そちらを参考にしてみてください。

Provisioned Concurrencyの価格

価格については、公式サイトで確認することができます。
なお、日本語のページにはまだProvisioned Concurrencyに関する記述が載っていないので、英語のページで確認する必要があります。

Screen Shot 2019-12-11 at 22.55.34.png

料金体系としては、今までのProvisioned Concurrency設定なしのLambdaと比較すると以下のような違いがありました。

  • プロビジョニングされた同時実行料金が発生する1
  • 計算料金が少し安い(25%OFFぐらい) 2
  • 無料利用枠が適用されない
AWS Lambda価格3 プロビジョニングされた同時実行価格3
プロビジョニングされた同時実行性 GB-sごとに0.000005384ドル
リクエスト 100万リクエストあたり0.20ドル 100万リクエストあたり0.20ドル
リクエスト(無料枠) 100万リクエスト
期間 GB-sごとに0.000016667ドル GB-sごとに0.000012562ドル
期間(無料枠) 400,000 GB-s

1ヶ月(31日)あたりの料金試算

私が開発しているサービスの概算値を利用して、1ヶ月(31日)あたりの料金について試算してみます。

  • Provisioned Concurrencyを設定した場合の1ヶ月(31日)の料金
  • 通常のAWS Lambdaを利用した場合の1ヶ月(31日)の料金

サービスの概算値(31日あたり)

概算値
メモリサイズ(MB) 256
同時実行性 10
リクエスト数 200万回
1リクエストあたりの平均実行時間(秒) 2.0

Provisioned Concurrencyを設定した場合の1ヶ月あたりの料金

プロビジョニングされた同時実行料金

プロビジョニングされた同時実行価格は、GB-sあたり0.000005384 ドルです。

 - プロビジョニングされた同時実行が有効になっている合計期間(秒)= 31 * 24 * 3,600 秒 = 2,678,400 秒
 - 構成された同時実行の合計(GB)= 10 * 256 MB / 1,024 MB = 2.5 GB
 - プロビジョニングされた同時実行の合計量(GB-s)= 2.5 GB * 2,678,400 秒 = 6,696,000 GB-s

プロビジョニングされた同時実行料金 = 6,696,000 * 0.000005384 ドル = 36.051264 ドル

リクエスト料金

リクエスト価格は、100万リクエストあたり0.20ドルです。
リクエスト料金 = 200万リクエスト * 0.20 ドル / 100万リクエスト = 0.40 ドル

計算料金

計算価格はGB-sあたり0.000012562ドルです。

 - 合計計算期間(秒)= 2,000,000 リクエスト * 2 秒 = 400万秒
 - 合計コンピューティング(GB-s)= 4,000,000 秒 * 256 MB / 1024 = 1,000,000 GB-s

計算料金 = 1,000,000 GB-s * 0.000012562 ドル = 12.562 ドル

合計料金

合計料金=プロビジョニングされた同時実行料金+リクエスト料金+計算料金
合計料金 = 36.051264 ドル + 0.40 ドル + 12.562 ドル = 49.013264 ドル

通常のAWS Lambdaを利用した場合の1ヶ月(31日)の料金

リクエスト料金

リクエスト価格は、1,000,000リクエストあたり0.20ドルです。

 - リクエストの合計 - 100万件の無料利用枠リクエスト = 毎月の請求対象リクエスト
  2,000,000 リクエスト - 1,000,000 リクエスト(無料枠) = 1,000,000 リクエスト

リクエスト料金 = 1,000,000 リクエスト * 0.20 ドル / 1,000,000 リクエスト = 0.20 ドル

計算料金

計算価格はGB-sあたり0.000016667ドルです。

 - 合計計算期間(秒)= 2,000,000 リクエスト * 2 秒 = 4,000,000 秒
 - 合計コンピューティング(GB-s)= 4,000,000 秒 * 256 MB / 1024 = 1,000,000 GB-s
 - 合計コンピューティング - 無料利用枠コンピューティング = 毎月の請求対象コンピューティング(GB-s)
  1,000,000 GB-s - 400,000 GB-s(無料枠) = 600,000 GB-s

計算料金 = 600,000 GB-s * 0.000016667 ドル = 10.0002 ドル

合計料金

合計料金=プロビジョニングされた同時実行料金+リクエスト料金+計算料金
合計料金 = 0.20 ドル + 10.0002 ドル = 10.2002 ドル4

料金比較

通常のAWS Lambdaを利用した場合 Provisioned Concurrencyを設定した場合
1ヶ月あたりの料金 10.2002 ドル 49.013264 ドル

私が開発しているサービスの規模では、無料利用枠を大きく超えるほどの利用がなかったため、Provisioned Concurrencyを利用すると料金が5倍ぐらいになってしまいました。

とはいっても、差だけに注目すると40ドルほどなので許容範囲内とするかどうかについては、今後検討しようと思います。

最後に

  • 現時点ではAWS Consoleを利用して、Provisioned Concurrencyを有効にする時間帯(ex. 9:00-23:00)の指定といった細かい設定の仕方がわかりませんでした。
    Provisioned Concurrencyを有効にする時間帯を限定できれば、プロビジョニングされた同時実行料金を減らすことができてより適切なコストコントールが可能になるので、もしやり方知ってる方いれば是非教えてください :pray:

  • Provisioned ConcurrencyではLambdaの同時実行性を担保するためにコンピューティングリソースを常時確保しているので、今後はFargateのSavings Plansのように大幅な利用費削減を見込める仕組みが出てきたりしないのかな?と期待しています。


  1. Lambda関数に割り当てるメモリサイズとProvisioned Concurrencyに設定された数によって変動します。 

  2. Lambda関数に割り当てるメモリサイズによって変動します。 

  3. 2019/12/11時点でのAsia Pacific(Tokyo)AWS Lambda PricingProvisioned Concurrency Pricingの値となります。 

  4. 無料利用枠がなかった場合の合計金額は17.067ドルでした。 

36
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
13