#AzureLogicApps で #AzureAutomation の REST API を実行する(Azure Directory OAuth編)
Azure Logic Apps から実行した Azure Automation のジョブを REST API を使って停止させるシナリオを解説します。
本投稿を読み終わったとき、Azure Logic Apps で以下の設定ができるようになります。(多分)
- Azure Automation コネクタにサービスプリンシパルで接続する
- Azure Automation コネクタでジョブを作成する
- HTTP コネクタの「Azure Directory OAuth」認証で Automation REST API を実行する
事前準備
リソース
- Azure Logic Apps
- Azure Automation アカウント
- Azure Automation の Runbook に登録する PowerShell
- Azure Automation の実行アカウント(別途 AzureAD にアプリ登録でもOK)
PowerShell
実行したジョブを停止させたいので、スリープ処理を入れてジョブが完了するまで時間稼ぎをします。
この PowerShell を Automation アカウントの Runboook に登録しておきます。
Write-Output "Start"
Start-Sleep -Seconds 15
Write-Output "....."
Start-Sleep -Seconds 15
Write-Output "End"
Azure Logic Apps フロー概要
冒頭で述べたシナリオです。Azure Automation コネクタ「ジョブの作成」でジョブを作成して、ジョブが実行中となるのを待ってから、Automation REST API でジョブを停止させます。全体のフローはこんな感じになります。
Azure Automation コネクタ
Azure Automation への接続方法
Azure Automation コネクタを配置すると、以下のような画面が表示されて「ユーザーとしてサインイン」するか、「サービス プリンシパルを使用して接続」するかを選択できます。
Azure Logic Apps を業務で利用する場合は「サービスプリンシパルで接続」を選択します。なぜなら「ユーザーとしてサインイン」を業務で利用した場合、サインインしたユーザーが退職などで削除されると、この Azure Logic Apps が動かなくなるからです。
個人で利用する場合は「ユーザーとしてサインイン」でも良いでしょう。
サービスプリンシパルで接続する(為の前準備)
「サービスプリンシパルで接続する」をクリックして、事前に用意した Azure Automation の実行アカウント、または、別途登録した AzureAD アプリの情報を入力します。Azure Automation の実行アカウントを利用する場合、別途シークレットキーの発行が必要です。
アプリの登録
AzureAD アプリの登録方法は下記の記事を参照してください。
Microsoft Teamsの特定チャネルのいいねをした人ランキングを作成しよう!その1~Azure ADにアプリを登録する~
ロールの割り当て
Azure Automation コネクタで利用したい Automation アカウントを選択するために必要な設定です。
別途アプリを登録した場合は、Automation アカウントに対して「Automation オペレーター」ロールを割り当ててください。Azure Automation の実行アカウントを利用する場合、サブスクリプションレベルで「共同作成者」ロールが自動的に付与されているので、「Automation オペレーター」ロールの設定は不要です。
アクセス許可
HTTP コネクタで Automation REST API を呼び出すために必要な設定です。
アプリに対して「Azure Service Management」の「user_impersonation」のアクセス許可を割り当ててください。
ジョブを作成する
用意した Runbook を指定します。ジョブをあとで停止させるため、ジョブの待機は「いいえ」を選択します。
HTTP コネクタを設定する
実行したい Automation REST API を入力し、認証の種類を「Active Directory OAuth」に設定します。
「テナント」という入力欄はテナントID(GUID)を入力します。クライアントID、シークレットキーは適宜入力してください。
実行結果
まとめ
Azure Logic Apps で Azure Automation コネクタ、及び、Automation REST API を実行するために必要な情報は下記の通りです。
- Azure Automation コネクタ
- サービス プリンシパルで接続する場合、以下が必要
- テナントID
- クライアントID
- シークレットキー
- Automation アカウントに対するロール
- サービス プリンシパルで接続する場合、以下が必要
- HTTP コネクタ
- 認証の種類「Azure Directory OAuth」を使う場合、以下が必要
- テナントID
- クライアントID
- シークレットキー
- アプリに対する「Azure Service Management」のアクセス許可
- 認証の種類「Azure Directory OAuth」を使う場合、以下が必要
この方法のデメリットは、HTTP コネクタに「テナントID」「クライアントID」「シークレットキー」を設定する必要があるため、管理が面倒になることです。
次回予告
次回の記事では、HTTP コネクタで「テナントID」「クライアントID」「シークレットキー」が必要としない方法として、認証の種類「マネージドID」を使うケースについて書いていこうと思います。
参考
Azure Automation におけるロールベースのアクセス制御 | Microsoft Docs
Job - Stop (Azure Automation) | Microsoft Docs
Author And Source
この問題について(#AzureLogicApps で #AzureAutomation の REST API を実行する(Azure Directory OAuth編)), 我々は、より多くの情報をここで見つけました https://qiita.com/shibatea/items/5737a80d5ff18d0b7e93著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .