AWS
ECS
Fargate

Fargateの料金は月に何円ぐらいかかるのか

先週にFargateの大胆な料金改定が発表されたので、趣味で作っているAWSの概算を出すサイトにFargateを追加しようと思い立ち、その準備として計算方法を整理しました。インフラには詳しくないので、Fargateの詳しい内容は他を当たっていただくとして、お金の計算に集中します。

AWS Fargate Price Reduction – Up to 50%


Fargateとはいったい

インフラの管理が不要なコンテナの実行環境です。

ECSの起動タイプとして選択できます。


ざっくり料金のまとめ

vCPU
メモリ(GB)
料金

0.25
0.5
1,240円

0.5
1
2,480円

1
2
4,961円

2
4
9,923円

4
16
23,408円

4
30
29,642円

※ 東京リージョン - 110円/ドル - 30.5日 × 24時間


手軽に料金を知りたいときに

demo.gif

Fargate | ざっくりAWS

細かい計算方法はいいから料金を知りたいという方は、Webサイトで手軽に算出できるようにしたので使ってみてください。東京リージョン限定ですが、サクッと料金を算出できます。


計算するときに考慮すべき変数

タスクに割り当てたリソースと、タスク数、稼働時間と外部へのデータ転送量で料金が決まります。

他のサービスと連携した場合はそちらでも課金されますが、本筋から外れるので無視します。


vCPU/メモリ


Pricing is based on requested vCPU and memory resources for the Task


割り当てるvCPU/メモリのリソースによって料金が変わります。ひとつ注意が必要なのが、vCPUに対するメモリの選択肢が決まっているので、1vCPUでメモリが30GBのようなアンバランスな組み合わせは指定できません。


タスク数

タスクの数だけお金がかかります。


稼働時間


For Amazon ECS, AWS Fargate pricing is calculated based on the vCPU and memory resources used from the time you start to download your container image (docker pull) until the Amazon ECS Task* terminates, rounded up to the nearest second. A minimum charge of 1 minute applies.


コンテナをプルし始めた時からタスクが終了するまでの時間に対して料金が発生するようです。概算を出す際には、秒で考えるのが面倒くさかったので、細かいことは気にせずに時間単位にしました。


データ転送量


Data Transfer: You are billed at standard AWS data transfer rates.


忘れられがちですが、外部へデータを転送する場合にはお金がかかります。考え方はEC2と同じです。


計算方法

vCPU = タスク数 * vCPU数 * 料金単価 * 稼働時間

メモリ = タスク数 * メモリ(GB) * 料金単価 * 稼働時間
合計 = vCPU + メモリ

データの転送がある場合は、上記の合計にデータ転送料金が加算されます。


具体例

個人的に、ドル円の脳内変換に500msぐらいかかるので、最終的にはすべて日本円で出しました。


計算の前提


  • ドル円 : 110円

  • ひと月 : 30.5日

  • 東京リージョン

  • 2019年1月12日時点の料金

vCPU : $0.05056/hour

メモリ : $0.00553/hour

AWS Fargate Price Reduction – Up to 50%のニュース後の料金です。


最小限のリソース - 0.25vCPU/0.5GB - 1,240円

とりあえず最安でFargateを使いたいときの料金です。

vCPU = 0.25 * 0.05056 * (30.5 * 24) = $9.25248

メモリ = 0.5 * 0.00553 * (30.5 * 24) = $2.02398
合計 = 9.25248 + 2.02398 = $11.27646 // 1,240円


現実的なリソース - 2vCPU/4GB - 9,923円

最小限のリソースでは心もとないので、現実的に使いそうなリソースで計算してみます。

vCPU = 2 * 0.05056 * (30.5 * 24) = $74.01984

メモリ = 4 * 0.00553 * (30.5 * 24) = $16.19184
合計 = $74.01984 + $16.19184 = $90.21168 // 9,923円


潤沢なリソース - 4vCPU/30GB - 29,642円

ここまでのリソースを使うことは少ないと思いますが、現状できる最大の組み合わせで計算してみました。

vCPU = 4 * 0.05056 * (30.5 * 24) = $148.03968

メモリ = 30 * 0.00553 * (30.5 * 24) = $121.4388
合計 = 148.03968 + 121.4388 = $269.47848 // 29,642円


タスクが複数ある場合

複数のタスクを稼働させる場合は、上記の料金にタスク数を掛けます。


  • リソース : 2vCPU/4GB

  • タスク数 : 4

合計 = 90.21168 * 4 = $360.84672 // 39,693円


バッチ処理に使う場合

毎日1時間のバッチ処理に使うような場合には、かなり安くなります。


  • リソース : 2vCPU/4GB

  • タスク数 : 1

  • 稼働時間 : 毎日1時間

vCPU = 2 * 0.05056 * (30.5 * 1) = $3.08416

メモリ = 4 * 0.00553 * (30.5 * 1) = $0.67466
合計 = 3.08416 + 0.67466 = $3.75882 // 413円


データ転送がある場合

APIでJSONを返すような場合には、外部へのデータ転送が発生するので、転送量に応じた料金が発生します。毎月 100GB のデータ転送がある場合はこんな感じです。(最初の1GBは無料)

データ転送料金 = (100 - 1) * 0.114 = 11.286 // 1,241円

データ転送の料金表


Webサイトで手軽に計算できるように

あとは、上記の計算をWebサイトで手軽にできるように、バックエンドとフロントエンドの実装をしていきます。


Price List APIで料金を取得

AWS Price List APIという、料金を取得するAPIが用意されているので、FargateのvCPU/メモリの単価を、東京リージョンに絞って取得しました。vCPUに対して割り当てられるメモリが決まっているので、そのリストもあったら欲しかったのですが、見当たらなかったので手動で指定しています。(更新が辛いけど、スクレイピングしてもWebサイトの構成が変わったりしたら結局辛い)

データはLambdaCloudWatchのイベントを使用して毎日更新しています。

取得方法やデータの整形は長くなるので省略しますが、最終的にはこんな感じのJSONになります。

{

"fargate": {
"cpu": {
"price": 0.05056
},
"memory": {
"price": 0.00553
},
"pair": {
"0.25": [0.5, 1, 2],
"0.5": [1, 2, 3, 4],
"1": [2, 3, 4, 5, 6, 7, 8],
"2": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16],
"4": [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
}
}
}

https://github.com/noplan1989/aws-rough-functions/blob/master/functions/batch/price/services/fargate.js


フロントエンドの実装

あとは価格のJSONをもとにフロントエンドで計算できるようにしたら完成です。

基本的に足し算と掛け算だけなので、ここも省略します。

https://github.com/noplan1989/aws-rough/blob/master/lib/calc/fargate.js

https://github.com/noplan1989/aws-rough/blob/master/test/unit/lib/calc/fargate.spec.js


できました

demo.gif

Fargate | ざっくりAWS

こんな感じで手軽に計算できるので、料金が気になる方は使ってみてください。

料金は東京リージョンのものになるので、他のリージョンの料金が知りたい方の役には立たないです、すみません。

計算とは関係ないですが、公式で提供しているアイコンに、FargateのSVGが見当たらなかったので、ECSのアイコンを使っています。(適当)

2vCPU/4GBの計算例

https://aws.noplan.cc/fargate/?z=8643574868cf532bcfce


ソース

フロントエンド

https://github.com/noplan1989/aws-rough

バックエンド

https://github.com/noplan1989/aws-rough-functions


参考

AWS Fargateの料金

https://aws.amazon.com/jp/fargate/pricing/