こんにちは、アプリケーションサービス部 ディベロップメントサービス2課の森田です。
当記事では Glue Studio Jupyter Notebook の料金について書いていきます。
ちょっと試しただけのつもりだったのですが、蓋を開けてみるととんでもない料金になっていました。
結論
- Glue Studio Jupyter Notebook のジョブは、セッションがアクティブである時間とDPUの数に基づいて料金が発生します。
- ジョブの実行時間に対して課金されるのではありません。
- ジョブを削除しただけではインタラクティブセッションは削除されません。別途インタラクティブセッションも削除しましょう。
- ジョブを作成する際は、インタラクティブセッションの DPU を調節するなど、必要最低限のスペックに調節しましょう。
何があった?
とある案件で Glue Studio Jupyter Notebook を検証する必要があったので、試しに1つジョブを作りました。
すると、数日で料金が大変なことになっていました。
紫の部分が Glue です。
他の日に比べて、グラフがとんでもない突き出し方をしていることが分かりますね。
5日間で、Glue だけで $296 かかってしまいました。
原因を探る
私の作成したジョブは数秒で処理が終了するもので、しかも数回しか実行していません。
そんなに多額な使用量になるとは思っていなかったので、Glue Studio Jupyter Notebook の料金の仕様について調べてみました。
料金の仕様
「Glue Studio Jupyter Notebook のジョブは、セッションがアクティブである時間とDPUの数に基づいて料金が発生する」
ということが分かりました。
(参照)
AWS は、セッションがアクティブである時間と DPU の数に基づいてインタラクティブセッションの料金を請求します。インタラクティブセッションには、設定可能なアイドルタイムアウトがあります。
それでは、セッションと DPU について詳しく見ていきます。
インタラクティブセッション
ジョブを削除しただけではインタラクティブセッションを終了しません。
インタラクティブセッションは別途削除する必要があります。
インタラクティブセッションを削除し忘れると、48時間経過するまで自動終了しません。
ノートブックを開きセルを実行するとインタラクティブセッションが開始されます。
このインタラクティブセッションはデフォルトで48時間のタイムアウトが設定されているので、セッション開始し48時間経過後にセッションが終了します。
(ちなみに、ノートブック起動後にセルが実行されない場合、ノートブックは 12 時間でタイムアウトし終了します。)
私はジョブを削除さえすれば、インタラクティブセッションなどもまとめて終了されるかと思っていましたが、そうではありませんでした。
存在するインタラクティブセッションは、以下の画面から消してあげる必要があります。
この画面からインタラクティブセッションを消さないと、48時間アクティブになりっぱなしで課金対象になります…
DPU
インタラクティブセッションのデフォルトDPUは 5DPU
です。
また、1 DPU = 0.44 USD/時間
です。
(参照)
AWS Glue Studio Job Notebooks とインタラクティブセッション: AWS Glue Studio のノートブックを使って、インタラクティブに ETL コードを開発するとします。インタラクティブセッションは、デフォルトで 5 DPU です。セッションを 24 分 (5 分の 2 時間) 実行すると、DPU 時間あたり 0.44 USD で 5 DPU × 2/5 時間、つまり 0.88 USD が請求されます。
※ ジョブのデフォルトDPUは10DPU
になります。(ワーカー数が10)
インタラクティブセッションとジョブでデフォルトDPUが違うので注意です。
実際の料金
1つのインタラクティブセッションがアクティブになりっ放しだった場合、計算は以下のようになります。
5(DPU) × 48(時間) × 0.44(USD/時間) = 105.6 USD
私の場合、セッションが3つほどあったと記憶しているので、その3倍ほどの料金がかかっていたと思われます。
この課金体系は Glue 開発エンドポイントとよく似ているそうです。
対策
ちょっとした検証で使用する場合は、検証が終わったらインタラクティブセッションをすみやかに削除するのが良いでしょう。
「次の日も使いたい」という場合は新規にインタラクティブセッションを立ち上げましょう。
あとは、DPU などを調節して必要最低限のスペックにし、費用を抑えることもできます。
まとめ
新しいサービスを使うときは、まずは料金を確認しようと思いました。