LoginSignup
3
2

More than 3 years have passed since last update.

#AzureLogicApps で #AzureAutomation の REST API を実行する(Azure Directory OAuth編)

Last updated at Posted at 2020-02-28

Azure Logic Apps から実行した Azure Automation のジョブを REST API を使って停止させるシナリオを解説します。
本投稿を読み終わったとき、Azure Logic Apps で以下の設定ができるようになります。(多分)

  • Azure Automation コネクタにサービスプリンシパルで接続する
  • Azure Automation コネクタでジョブを作成する
  • HTTP コネクタの「Azure Directory OAuth」認証で Automation REST API を実行する

事前準備

リソース

image.png

  • Azure Logic Apps
  • Azure Automation アカウント
  • Azure Automation の Runbook に登録する PowerShell
  • Azure Automation の実行アカウント(別途 AzureAD にアプリ登録でもOK)

PowerShell

実行したジョブを停止させたいので、スリープ処理を入れてジョブが完了するまで時間稼ぎをします。
この PowerShell を Automation アカウントの Runboook に登録しておきます。

automation/StartSleep
Write-Output "Start"
Start-Sleep -Seconds 15
Write-Output "....."
Start-Sleep -Seconds 15
Write-Output "End"

Azure Logic Apps フロー概要

冒頭で述べたシナリオです。Azure Automation コネクタ「ジョブの作成」でジョブを作成して、ジョブが実行中となるのを待ってから、Automation REST API でジョブを停止させます。全体のフローはこんな感じになります。

image.png

Azure Automation コネクタ

Azure Automation への接続方法

Azure Automation コネクタを配置すると、以下のような画面が表示されて「ユーザーとしてサインイン」するか、「サービス プリンシパルを使用して接続」するかを選択できます。

Azure Logic Apps を業務で利用する場合は「サービスプリンシパルで接続」を選択します。なぜなら「ユーザーとしてサインイン」を業務で利用した場合、サインインしたユーザーが退職などで削除されると、この Azure Logic Apps が動かなくなるからです。
個人で利用する場合は「ユーザーとしてサインイン」でも良いでしょう。
image.png

サービスプリンシパルで接続する(為の前準備)

「サービスプリンシパルで接続する」をクリックして、事前に用意した 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」のアクセス許可を割り当ててください。
image.png

ジョブを作成する

用意した Runbook を指定します。ジョブをあとで停止させるため、ジョブの待機は「いいえ」を選択します。
image.png

HTTP コネクタを設定する

実行したい Automation REST API を入力し、認証の種類を「Active Directory OAuth」に設定します。
「テナント」という入力欄はテナントID(GUID)を入力します。クライアントID、シークレットキーは適宜入力してください。
image.png

実行結果

無事にすべてのフローが成功しました。
image.png

そして、ジョブが停止されているのが確認できます。
image.png
image.png

まとめ

Azure Logic Apps で Azure Automation コネクタ、及び、Automation REST API を実行するために必要な情報は下記の通りです。

  • Azure Automation コネクタ
    • サービス プリンシパルで接続する場合、以下が必要
      • テナントID
      • クライアントID
      • シークレットキー
      • Automation アカウントに対するロール
  • HTTP コネクタ
    • 認証の種類「Azure Directory OAuth」を使う場合、以下が必要
      • テナントID
      • クライアントID
      • シークレットキー
      • アプリに対する「Azure Service Management」のアクセス許可

この方法のデメリットは、HTTP コネクタに「テナントID」「クライアントID」「シークレットキー」を設定する必要があるため、管理が面倒になることです。

次回予告

次回の記事では、HTTP コネクタで「テナントID」「クライアントID」「シークレットキー」が必要としない方法として、認証の種類「マネージドID」を使うケースについて書いていこうと思います。

参考

Azure Automation におけるロールベースのアクセス制御 | Microsoft Docs
Job - Stop (Azure Automation) | Microsoft Docs

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2