[アップデート] AWS Glue で ETL ジョブやノートブックセッションのプロビジョニングサイズなどを制限できる「Usage Profiles」機能が使えるようになりました

2024.06.19

いわさです。

今朝のアップデートで、AWS Glue に Usage Profiles という機能が登場しました。

アナウンス内容を確認してみると、どうやら Glue の利用者に対してワーカーサイズやタイムアウト値など、特にコストに影響する部分に使用制限を加えることが出来る機能のようです。

なるほどと思いつつ、設定方法など確認するためにプロファイルを作成して ETL ジョブ周りの挙動を確認してみましたのでその様子を紹介します。

使い方の流れなのですが、プロファイルを作成し IAM ユーザー(あるいは IAM ロール)に割り当てを行うことで後は ETL ジョブなどの作成や実行を行う際に勝手に適用されるという形になっています。

Usage Profile の作成

ということでまずはプロファイルを作成しましょう。
AWS Glue コンソールにアクセスすると新たに次の「Cost management」というメニューが追加されています。

こちらにアクセスしてみると Usage Profiles コンソールに遷移します。
メニューの内容からすると、もしかすると今後 Glue のコスト管理系サービスが他にも追加されていくのかもしれません。

この画面では作成済み Usage Profile の一覧を確認することが出来ます。
最初は当然ながら1件もないので、新規作成を行いましょうか。

プロファイル名の他に次のパラメータを設定します。
対象としては2つあって、ひとつめはジョブに対するパラメータです。

ワーカー数や、ワーカータイプ、あとはタイムアウト値をプロファイルで設定することが出来ます。
それぞれデフォルトと、選択可能なもの(あるいは範囲)を指定することが出来ます。

デフォルトワーカータイプだと次のようにリストからひとつ選択します。

許可するワーカータイプは次のように複数選択が可能です。
大規模インスタンスタイプの G.4X や G.8X などはコスト管理の都合上、開発環境などでは制限したい場合があるかもしれないのでこれは良いですね。

参考:[アップデート] AWS Glue 大規模インスタンスタイプG.4X および G.8Xが一般提供されました | DevelopersIO

ジョブの他にはインタラクティブセッション向けの設定も別で行うことが出来ます。
設定可能な値はほぼ同じですが、アイドルタイムアウトの上限やデフォルトが設定出来まして、これもコントロール出来るのは結構良いのではないでしょうか。

今回はジョブに対して適当に設定したプロファイルをひとつ用意しました。

IAM ロールに割り当てる

プロファイルは作成しただけでは使われなくて、ユーザーあるいはロールに割り当てるという概念があります。
作成直後は次のように「Not assigned」となっていますね。プロファイルの詳細画面を確認してみましょう。

プロファイル詳細画面ではどの IAM ロールあるいは IAM ユーザーに割り当てられているかを確認することが出来ます。
ただし、この画面から割り当てボタンなどは見当たりません。どうしたら良いのか。

ステータスラベルの注意書きに記載されているのですが、プロファイルはタグベースで割り当てを行う形になります。なるほどね。
glue:UsageProfileというキーで、値をプロファイル名にするとそのプロファイルが割り当てられるみたいです。

やってみましょう。
マネジメントコンソールにはスイッチロールしたユーザーでアクセスしていますので、IAM ロールに対してタグを設定してみます。
こんな感じだろうか。

プロファイル画面に戻って画面を更新してみましょう。
すると次のように割り当てがされました。良さそうです。

ジョブ触ってみる

検証ユーザーにプロファイルが割り当てられたのでジョブの操作を行ってみましょう。
まずは既存ジョブのジョブ詳細を編集してみます。
ワーカータイプを設定しようとすると、次のようにプロファイルで許可されていないワーカータイプが指定できなくなっています。

「Restricted by the usage profile」と表示されていますね。

プロファイルが設定されたユーザーで、他のユーザーが作成済みのジョブを実行してみる

ここでプロファイル側で許可するワーカータイプを G.025X のみにして、G1X で作成済みのジョブを手動実行してみます。どうなるのかな。

実行したところエラーが発生しましたね。
G.025X しか許可されていないぞ。と怒られています。

ジョブにもプロファイルが割り当てられる

先ほどは事前に作成済みのジョブに対してプロファイル割り当てをしたユーザーで操作してみました。
プロファイル割り当てされたユーザーでジョブを作成すると、ジョブに次のようにプロファイルが割り当てられます。

これは、先程のようにユーザーが手動実行した場合、要は StartJobRun API などで実行される場合はそのロールやユーザーに割り当てられているプロファイルで制限されるのですが、スケジュール実行などの直接呼び出しがされない場合はジョブに割り当てられているプロファイルで制限がかかる形となります。

ユーザー(ロール)に割り当てられたプロファイルと、ジョブに割り当てられたプロファイルがあって、呼び出し元によって変わるということを覚えておきましょう。

さいごに

本日は AWS Glue で ETL ジョブやノートブックセッションのプロビジョニングサイズなどを制限できる「Usage Profiles」機能が使えるようになったので使ってみました。

制限を行う形なので、ジョブの作成・実行の失敗や利便性が下がる点に注意しつつ、開発環境などでユーザーのワーカータイプやアイドルタイムアウトなどの制限を行うことで、不要なコストが発生するリスクを抑えるとか細かい管理が必要な場合に使えそうです。