こんにちは、エンタープライズクラウド課の加藤ゆです。
AthenaとGlueの料金ページを解読するのがつらかったので、まとめてみました。
なお当記事に記載する情報は、2023年3月1日現在のものです。
最新料金体系は記載の公式ドキュメントをご確認ください。
公式ドキュメントの料金体系を少し読みやすくまとめたものなので、内容はドキュメントと変わりはありません。
また、本記事記載の料金はすべて「アジアパシフィック(東京)」で試算しています。
Athenaの料金体系
基本的にその月に使用した分のみを、月末に支払います。
では、何に対していくらかかるのかをみてみましょう。
課金対象
課金対象は以下の2つのみです
- 1.クエリを実行し、スキャンしたバイト数に応じて課金
- 2.Apache Spark Python コードを実行し、コードの実行に対して時間給で課金
SQLクエリの実行 | Apache Spark のコード実行 |
---|---|
スキャンされたデータ 1 TB あたり 5.00USD | 1 DPU ごとに0.50USD/h が1 秒あたりで課金 |
①スキャンされたデータ 1 TB あたりの課金
Athenaはスキャンされるデータの量に基づいた課金です。
上表記載の通り、スキャンデータ 1 TB あたり 5.00USDが課金されます。
ただし、以下のクエリについては課金が発生しません。
- 課金が発生しない対象
- DDLステートメント
- パーティション管理のためのステートメント
- 正常実行していないクエリ
■スキャン量を小さくする方法
スキャンされるデータの量に基づいて課金されるため、スキャンする量を小さくすることでコスト削減につながります。
クエリ毎のスキャンされたデータ量はAthenaのコンソール上で確認可能です
- 1.データの圧縮
- 2.データを分割(パーティション化)
- 3.ソースデータを列形式へ変換
- 処理に必要な列のみが選択的に読み込むことが出来るため
■料金削減イメージ
例えば、サイズが同じ 5 つの列があり圧縮されていないデータが6TBあるとします。
この場合の利用料金は、6 * 5 USD/TB = 30USD
- データの圧縮をした場合
- データが3/1に圧縮された場合、ファイルサイズ2TB
- 2*5 USD/TB = 10USD
- 圧縮されたソースデータを列形式へ変換した場合
- 読み取りたい1列のみを読み取る事が出来るため、さらに1/5に削減が可能
- ファイルサイズ2TB /5 = 0.4 TB
- 0.4*5 USD/TB = 2 USD
②DPU (Data Processing Unit) 時間ごとの課金
ノートブックや AWS CLI を使った Apache Spark Python のコードを実行した利用をする方が対象となります。
Apache Spark アプリケーションの実行にかかる時間に対して発生する課金です。
課金対象 | ジョブの請求単位 | 1DPUあたりの料金/h |
---|---|---|
Apache Spark のコード実行 | 1 秒単位で課金 | 0.50USD |
1 秒単位で課金されるので、最も近い秒単位に切り上げられます。
- ノートブックノード
- ノートブックユーザーインターフェースのサーバーとして機能する
- ドライバノード
- Spark アプリケーションを調整してすべての Spark ワーカーノードと通信する
- ワーカーノード
- Sparkアプリケーションタスクの実行を担う
Athenaコンソール上でノートブックを起動(or APIでSparlセッションを開始)すると、アプリケーションを使用するために2つのノード(ドライバノードとワーカーノード)が準備されます。
Athena は、起動(or セッション開始) 期間中、この2つのノード(ドライバノードとワーカーノード)に課金が発生します。ノートブックノードは課金対象外だそうです。
Glueの料金体系
課金対象
機能によりますが、どれも利用時間当たりで課金が発生します。
GlueDataBrewの課金もありますが本記事では触れません、上記公式ドキュメントをご確認ください。
課金対象のうち以下をピックアップします。
- 1.抽出、変換、ロード (ETL) ジョブ
- 2.Glue データカタログ
- メタデータの保存
- メタデータのアクセス
- 3.Glueクローラ (データの検出)
ETLジョブ | Glue データカタログ | クローラ |
---|---|---|
ジョブの実行に費やしたDPUに基づいて時間あたりで課金 | ・100,000 個のオブジェクトごとに課金 ・100 万回のリクエストごとに課金 |
クローラの実行に使用された DPU数に基づいたて時間あたりで課金 |
よく分からないので詳しく見ていきます。
■データ処理ユニット (DPU)とは?
「DPU」が以降記載する課金単位によく使われるので、抑えておきましょう。
DPU は処理能力を相対的に測定するものです。
タイプにより異なりますが、1つあたり以下の性能で構成されています。
- DPU(標準)
- 4 つの vCPU と 16 GB のメモリ
- M-DPU(ハイメモリ)
- 4 つの vCPU と 32 GB のメモリ
なので、複数DPUを利用するほど性能が上がります。 1DPUよりも4DPUにすることで、シンプルに4倍のスペックに上がるからです。
DPUの数は利用するジョブや/データ量によって変わってきます。
基本的にGlueは、「1DPU」あたり「1時間」でどれくらい課金が発生するかで表現されています。
①ETLジョブの課金
ETL ジョブの実行に使用されたデータ処理ユニット (DPU) の数に基づいて時間あたりの料金が発生します。
AWS Glue のジョブタイプ | デフォルト | 最低限必要なDPU | ジョブの請求単位 | 1DPUあたりの料金/h |
---|---|---|---|---|
Apache Spark | 10 DPU | 2 DPU必要 | Glue バージョン 0.9or1.0 の場合:最低 10 分 Glue バージョン 2.0 以降 の場合:最低 1 分 |
0.44USD |
Apache Spark Streaming | 2 DPU | 2 DPU必要 | Glue バージョン 0.9or1.0 の場合:最低 10 分 Glue バージョン 2.0 以降 の場合:最低 1 分 |
0.29USD |
Ray (Preview) | 6 M-DPU | 2 M-DPU必要 | 最低 1 分 1秒単位の追加課金 |
ー |
Python シェル | 0.0625 DPU | ー | 最低 1 分 | 0.44USD |
■ "最低限必要なDPU” とは
"「最低限必要なDPU」=最低 XX DPUないと動かすことが出来ない"という事ですので、
例えば上表のApache Sparkの場合、2DPU = 2 * 0.44 USD = 0.88USD/h は1時間あたりの最低料金としてかかります。
■ "ジョブの請求単位"とは
最低 XX 分からの試算になる、という記載なので
例えばApache Spark(Glue バージョン 0.9)の場合、最低 10 分からの課金であるため1~9分の利用であった場合も10分として換算されます。
利用料金は以下の計算です。
{利用時間(h)} × {最低限必要なDPU} × {1DPUあたりの料金/h} = 10分実行時の料金
10(分) / 60 × 2(DPU) × 0.44 USD = 0.15USD
オプション機能の料金
以下のオプション機能を利用する場合は、それぞれ課金が発生します。
- 開発エンドポイント
- インタラクティブセッション
- AWS Glue Studio
オプション機能 | デフォルト | 最低限必要なDPU | ジョブの請求単位 | 1DPUあたりの料金/h |
---|---|---|---|---|
インタラクティブセッション | 5 DPU | 2 DPU必要 | 最低 1 分 | 0.44USD |
開発エンドポイント | 5 DPU | 2 DPU必要 | 最低 10 分 | 0.44USD |
AWS Glue Studio | ー | 2 DPU必要 | 30 分間実行され、自動停止 | 0.44USD |
②Glueデータカタログの課金
データカタログは、ストレージと保存されているオブジェクトに対して課金が発生します。
ただし、毎月一定の値までは無料で利用可能です。
課金対象 | 無料対象範囲 | 料金 |
---|---|---|
ストレージ | 最初の100 万オブジェクトの保存 /月 | (100 万オブジェクト超過後)10 万個のオブジェクトの保存あたり 1.00USD |
リクエスト | 最初の 100 万回リクエスト /月 | (100 万リクエスト超過後)100 万回のリクエストあたり 1.00USD |
■Glueデータカタログの”オブジェクト”とは?
カタログに保存されているメタデータ情報のこと
具体的にはテーブル、テーブルバージョン、パーティション、データベースを示します。
■課金イメージ
課金のイメージとして、ユースケースを記載します。
利用条件
- 毎月100 万個のテーブルをGlueデータカタログへ保存
- テーブルのアクセスで、200 万回のリクエストが発生
料金計算
- ストレージコスト
- 0.00 USD (はじめの100 万オブジェクトは無料)
- リクエスト
- 1.00USD
- 無料利用枠を超えた100 万回のリクエストに課金発生
- 1.00USD
- ストレージコスト
上記より、記載条件の場合のGlueデータカタログの利用料金は、0.00 USD + 1.00USD =「1.00USD」となります。
③Glueクローラの課金
クローラの実行に使用された DPU (Data Processing Unit) の数に基づいて時間あたりの課金が発生します。
ただし、クローラーではDPU数はユーザーが設定できません、クロール対象のデータ量によって自動的に決められます。
課金対象 | ジョブの請求単位 | 1DPUあたりの料金/h |
---|---|---|
クローラ | 最低 10 分 1 秒単位で課金 |
0.44USD |
一応、Glueのコンソールのクローラでは「DPU hours」という項目に使用したDPU/hが表示されるので、実行後に確認は可能です。
おわり
以上、AthenaとGlueの利用料金まとめでした。
DPUの概念が肝ですね、それさえ押さえればあとは分かってくるように思います。
なんでか分からないが料金が爆誕している、、!!とならないよう、是非利用前に料金をご確認ください。
最後までご覧いただきありがとうございました。