はじめに
Azure Portal の Synapse ワークスペースの画面にオートメーションのタスクが追加されていました。アイコンを見る限り、Logic Apps のリソースが動作するものと思われます。
デフォルトでテンプレートも用意されており、どうやら毎月のコストを通知してくれるようです。
今回はこの機能を試してみた結果と、一部カスタマイズした内容についてご紹介します。
リソース作成
テンプレートを元にリソース作成を進めていきます。サービス接続用のログイン資格情報を聞かれるので、それぞれ入力します。Azure Resource Manager に関しては対象のサブスクリプションに対して適切な権限を持っているアカウントでないと実行時にエラーになりますので、ご注意ください。
画面を進め、タスク名と通知先の E メールアドレスを入力します。
これで作業は完了です。以下のようにタスクが作成されていることが、確認できます。
デザイナーに表示される処理フローは以下の通りです。大まかな流れとしては、「Invoke resource operation in provider」で対象サブスクリプション内の全リソースの課金情報を取得し「Filter array」で Resource ID による絞り込みを行い、「Send an email (V2)」でその金額をメール通知する、といったものになります。
実行、内容解析、修正
出来上がったタスクを手動実行すると正常に動作し、メールが届きました。しかし、Synapse の割には妙に金額が少ないです。よくよく見てみると、 取得しているリソースが今動かしている Logic Apps 自身になっていました。 これは、期待していた動きとは異なります。
原因特定のため、自動生成された部分も含めて設定内容を精査していきます。まず「Filter array」の設定から、「ResourceId」というパラメーターを絞り込み条件に指定していることがわかります。
次にコードビューで ResourceId パラメーターの内容を見てみると、メールに記載されていた Logic Apps のリソース ID が指定されていることが確認できました。そこで、このパラメーターの値を Synapse の Dedicated SQL pool のリソース ID に上書きします。
上書き後に再度タスクを実行することで、Synapse Analytics の Dedicated SQL pool の利用料金がメール通知されることが確認できました。
まとめ
Logic Apps ベースで作成されるタスクを微修正することで、Synapse Analytics の利用料を通知する仕組みが簡単に構築できることをご紹介しました。Synapse Analytics をプロダクト環境で使用する場合は扱うデータ量も膨大なものとなり、コスト管理にも注意を払う必要が出てきますので、こういった仕組みが Azure 側で提供されているのはありがたいですね。
この仕組みに関してはSpark pool 等の課金情報も併せて取得したり通知先を Teams にするなど色々と応用が利きそうなので、時間のあるときにまた試してみたいと思います。