Azure Functions で SQL Data Warehouse の価格レベルを変更する

今回の投稿は、Azure Functions で SQL Data Warehouse の価格レベルを変更する方法です。
SQL Data Warehouse の価格レベルは、Azure PortalPowerShellT-SQLREST API などいくつかの変更方法があります。
今回は、Azure Functions から REST API を使用して、SQL Data Warehouse の価格レベルをスケジュール変更する方法をご紹介します。
Azure Functions はサーバーレスでアプリケーションを構築するための Azure の SaaS サービスです。

 

■ テンプレートから作成できます!

Function App を1から作るのは大変だなぁ・・・と思う方も大丈夫です!
価格レベルをスケジュール変更するための Function App 向けのテンプレートがあります。

 

タイトル : Azure SQL Data Warehouse で Azure Functions を使用してコンピューティング リソースを管理します。
アドレス : https://docs.microsoft.com/ja-jp/azure/sql-data-warehouse/manage-compute-with-azure-functions

 

前述の通り、Function App で作成したは、サーバーレスの API として実行することが可能です。
本 Post では、指定したスケジュールで自動的に価格レベルを変更するように設定をしていますが、
工夫次第ではほかにも色々な形でシステムに取り入れることが可能になります。

 

■ テンプレートを使用する前に

Function App をテンプレートから作成する前に、事前に準備を行います。
まず共同作成者のアクセス権を持ったサービス プリンシパル アカウントを作成する必要があります。
具体的な手順はこちらのページに記載がありますので、
必要なアクセス許可Azure Active Directory アプリケーションを作成する
アプリケーション ID と認証キーを取得するテナント ID を取得するアプリケーションをロールに割り当てる
の手順でサービス プリンシパル アカウントを作成し、必要な値を控えます。

 

※※※ ポイント ※※※

アプリケーション ID と認証キーを取得する の 認証キーは生成後しか確認できません。
そのため、生成後に必ずコピーを控えてください。⑨ Service Principal Secret Key で入力する必要があります。
アプリケーションをロールに割り当てる の [5. アプリケーションに割り当てるロールを選択します。] では、共同作成者を選択します。

 

■ テンプレートを使ってみましょう!

ページ内の       を押すと、Function App のカスタム デプロイ画面に遷移します。
以下のカスタム デプロイの画面で必要な項目を入力すれば、アプリケーションの作成は完了です。

入力項目は以下のとおりです。
▶ サブスクリプション :  プルダウンのメニューからご利用のサブスクリプションを選びます。
▶ リソースグループ :  Function App で使用するリソースグループを選択します。
▶ SQL DW Resource Group :  SQL Data Warehouseのリソースグループを入力します。
▶ SQL DW Logical Server Name :  SQL Data Warehouseのサーバー名を入力します。
(Server.database.windows.net であれば、Server 部分のみでよい)
▶ SQL DW Name : SQL Data Warehouse のデータベース名を入力します。
▶ Active Directory ID : テナント ID を取得するの手順で取得します。
(3.ディレクトリ ID をコピーします。 この値がテナント ID です。の箇所)
▶ Subscription ID : ご利用のサブスクリプション ID を入力します。
▶ Service Principal Application ID : アプリケーション ID と認証キーを取得する の手順で取得します。
(2.アプリケーション ID コピーし、・・・の箇所)
▶ Service Principal Secret Key : アプリケーション ID と認証キーを取得する の手順で取得します。
(5.キーの説明を入力し、・・・の箇所)
※キーを保存すると、キーの値が表示されます。 キーは後で取得できないため、必ずコピーを控えてください。
▶ WEBSITE_TIME_ZONE : スケジュールを設定するためのタイムゾーンです。
日本時間 (JST) の場合には、Tokyo Standard Time を指定します。
▶ Scale Up Time / Scale Down Time : 任意の時間を設定します。

 

入力後、使用条件に同意の上、[購入] ボタンを押下します。
作成後、Azure Portal の [Function App] から作成した Function App を確認できます。

 

■ 変更する価格プランの指定

価格プランの変更は javascript を使用して実行します。

index.js の ServiceLevelObjective にて変更後の価格プランを指定します。

Ex) "ServiceLevelObjective": "DW100"

 

■ スケジュールの変更

コンピューティングレベルを変更する時間は、CRON 式 を使用して設定します。

※タイムゾーンは WEBSITE_TIME_ZONE で設定したタイムゾーンに準じます。

(今回の例は Tokyo Standard Time です。Tokyo Standard Time は UTC+9 時間の JST 時刻です。)

 

以下はスケールダウンをする時間を毎日 09:30 (Tokyo Standard Time) に設定する場合の入力例です。

Ex) 0 30 9 * * *

 

■ 実行ログの確認方法

作成した Function App のログは Storage アカウントに出力されます。

パス : File Shares > [App Service Name] > LogFile > application > functions > function > DWOperationQueue

出力されたログからは以下のような内容を確認できます。

 

2018-06-**T00:30:00.315 [Info] Function started (Id=****************************)

2018-06-**T00:30:06.772 [Info] JavaScript queue trigger function processed work item { operationType: 'ScaleDw', ServiceLevelObjective: 'DW100' }

2018-06-**T00:30:06.772 [Info] Operation request for: ScaleDw with scale value: DW100

2018-06-**T00:30:06.772 [Info] Retrieving authorization token for REST command

2018-06-**T00:30:06.804 [Info] Function completed (Success, Id=****************************), Duration=6489ms)

 

いかがでしたでしょうか。

ぜひサーバーレスの Azure Functions を使用して、価格プランの変更を試してみてください。

 


本情報の内容 (添付文書、リンク先などを含む) は、作成日時点でのものであり、予告なく変更される場合があります。