Amazon AthenaとAWS Glueの料金体系をまとめてみた

記事タイトルとURLをコピーする

こんにちは、エンタープライズクラウド課の加藤ゆです。

AthenaとGlueの料金ページを解読するのがつらかったので、まとめてみました。

なお当記事に記載する情報は、2023年3月1日現在のものです。
最新料金体系は記載の公式ドキュメントをご確認ください。

公式ドキュメントの料金体系を少し読みやすくまとめたものなので、内容はドキュメントと変わりはありません。
また、本記事記載の料金はすべて「アジアパシフィック(東京)」で試算しています。

Athenaの料金体系

aws.amazon.com

基本的にその月に使用した分のみを、月末に支払います。
では、何に対していくらかかるのかをみてみましょう。

課金対象

課金対象は以下の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) 時間ごとの課金

ノートブックの使用 - Amazon Athena

ノートブックや 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の料金体系

aws.amazon.com

課金対象

機能によりますが、どれも利用時間当たりで課金が発生します。

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 万回のリクエストに課金発生

上記より、記載条件の場合の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の概念が肝ですね、それさえ押さえればあとは分かってくるように思います。

なんでか分からないが料金が爆誕している、、!!とならないよう、是非利用前に料金をご確認ください。

最後までご覧いただきありがとうございました。

加藤 由有希 エンジニアブログの記事一覧はコチラ

エンタープライズクラウド部 所属

2020年4月に新卒入社