SPN + Azure Runbook + Webhook = Power BIリフレッシュ(pt。1)

Perico Riccardo)(2020年8月17日)

最近、ividによる素晴らしいアークティクルを読みました= “f7c3c30753″>

Nicky Van Vroenhoven 。

彼のシナリオでは、Nickyは特定の後にPowerBIデータセットを更新する必要があります。 SQL ServerAgentのジョブでステップを実行します。これは、実際のユーザーの資格情報を使用せずに実行する必要があります

彼は、ログインしてSPNを介してデータセットの更新を起動するPowerShellスクリプトを作成しました。

これを読んだ後、これをカプセル化できるかどうかを考え始めました。さまざまな種類のさまざまなアプリケーションのエントリポイントになる可能性のあるさまざまなアーキテクチャ。

このアイデアは、PowerShellスクリプトを Azure AutomationRunbookにパックすることです

次に、URIへのPOSTリクエストを実行するだけのすべてのアプリケーションで利用できるようにします。

利点:

1。 スクリプトの1つの集中バージョンのみ

2。 PowerBI管理モジュールはアプリケーションマシンにインストールされていませんが、がインストールされていますクラウドで、実行開始時にオンデマンドでプロビジョニングされた一連のVMで実行されます

3。 Runbookをスケジュールすることができます(Power BIの更新を既にスケジュールできるため、これは利点ではなく、単なる追加機能です)

4。 暗号化された認証情報はSPNシークレットを知らなくても機能させるためにをサポートします

5。 変数はをサポートして更新のコンテキストを動的に変更します

6。 Webhookはをサポートして簡単なPOST呼び出しでブラックボックスとして公開します

次の前提条件をすでに想定しましょうインプレース:

-AADで作成およびセットアップされたSPN

-SPNのPowerBIテナントレベルで使用される有効なAPI

-SPNユーザーを使用するWorspaceV2 admin

これがすでに起動していて、これからセットアップを実行するのは非常に簡単です。AzurePortalで手動で実行できますが、 PowerShellと Azモジュール 、複製がより速く、より簡単で、「クリッククリック」が少なくなります:-)(PowerShell 5.1.Xでいくつかのバグを見つけたので、MSFTによって提案されたPowerShell 7.xを使用してください)。

まず、リソース作成用のセットアップパラメーター

$resource\_group\_name = ""
$automation\_account\_name = ""
$automation\_account\_location = ""
$runbook\_name = ""
$tenant\_id = ""
$group\_id = "" # Workspace ID
$dataset\_id = "" # Dataset to Refresh ID
$app\_id = "" # Service PRincipal ID
$Password = ConvertTo-SecureString "ThisIsMyPassword" -AsPlainText -Force # Secret from Service Principal

次に接続紺碧のサブスクリプションへ

Connect-AzAccount

Azureオートメーションを作成する アカウント(必要に応じて既存のアカウントを使用できます)

New-AzAutomationAccount -ResourceGroupName $resource\_group\_name -Location $automation\_account\_location -Name $automation\_account\_name

PowerShellコードをホストするRunbook を作成します(TypeパラメーターはPowerShellと同じであることに注意してください)

New-AzAutomationRunbook -Name $runbook\_name -ResourceGroupName $resource\_group\_name -AutomationAccountName $automation\_account\_name -Type PowerShell

IDの値をホストする3つの変数を作成しますデータセットを更新する必要があります:

New-AzAutomationVariable -Name ‘TenantID’ -Description ‘Power BI Tenant ID’ -Value $tenant\_id -AutomationAccountName $automation\_account\_name -ResourceGroupName $resource\_group\_name -Encrypted $falseNew-AzAutomationVariable -Name ‘GroupID’ -Description ‘Power BI Workspace ID’ -Value $group\_id -AutomationAccountName $automation\_account\_name -ResourceGroupName $resource\_group\_name -Encrypted $falseNew-AzAutomationVariable -Name ‘DatasetID’ -Description ‘Power BI Dataset ID’ -Value $dataset\_id -AutomationAccountName $automation\_account\_name -ResourceGroupName $resource\_group\_name -Encrypted $false

SPNシークレットを安全に保存する Azure Automationの資格情報機能を活用する:

$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $app\_id, $passwordNew-AzAutomationCredential -name ‘SPN’ -Description ‘Service Principal’ -Value $Credential -AutomationAccountName $automation\_account\_name -ResourceGroupName $resource\_group\_name

完全なコード:

環境の準備ができています。

手動で実行する手順は2つだけです:

1。 MicrosoftPowerBIMgmt.ProfilePowerShellモジュールをAzureAutomationにインポートします。これにより、AzureAutomationはそのモジュールに含まれているコマンドレットを使用できます。

a。 Azureポータルを開きます

b。 AzureAutomationアカウントに移動します

c。左側のブレードの[共有リソース]の下にある[モジュールギャラリー]をクリックします

d。 「MicrosoftPowerBIMgmt.Profile」を検索します

e。それを選択して、[インポート]をクリックします

2.2。 PowerShellスクリプトを追加してPowerBIの更新を実行します API呼び出しを介して

最近の投稿

アーカイブ

メタ情報