サブスクリプション内のリソース正常性(Azure Resource Health)を取得してメール送信(Logic Appsを使ってみた)

サブスクリプション内のResource Health(リソース正常性)をまとめてメール送信する所までやってみました。

Resource Health(リソース正常性)はAzure Portalでも確認出来るのですがリソースの種類を選択する必要があります。全部纏めて教えてと言われた時に少し面倒でした。

調べてみたところRest APIを使うとサブスクリプション単位でResource Health(リソース正常性)取得出来そうでした。

REST APIでリソース正常性取得→JSONからHTMLへの変更→SendGridを使ったメール送信までをLogic Appsを使ってやってみました。

スポンサーリンク

Rest APIを利用してAzure Resource Health(リソース正常性)を取得

マイクロソフト社のサイトにAzure REST API referenceというドキュメントがあります。

Azure REST API reference

その中にリソース正常性を取得するRest APIがありました。

Availability Statuses – List By Subscription Id

REST APIの実行手順

Availability Statuses – List By Subscription Idへアクセスします。

使ってみるをクリックするとAzureへのログインもしくはサブスクリプション選択画面が表示されます。ログインしてサブスクリプションを選択します。

”REST APIを使ってみる”が表示されます。サブスクリプションIDを選択し実行をクリックします。

リソース正常性の応答がJSON形式で取得出来る事が確認出来ます。

マネージドIDを作成する

今回はLogic AppsでREST APIを利用する場合には認証が必要となります。今回の認証方法にはマネージドIDを使いました。

Azure リソースのマネージド ID とは

マネージドIDの作成

マネージドIDを作成します。

作成手順
サービスにてマネージドIDを選択します。
マネージドIDのサービスが表示されますので新規をクリックします。

リソースグループ、リージョン、名前を設定します。設定が終わったら確認および作成をクリックします。

確認メッセージが表示されますので内容を確認し作成をクリックします。

これでマネージドIDの作成は完了です。

マネージドIDへの権限付与(Azureロールの割り当て)

作成したマネージドIDは権限が何も付与されていません。リソース正常性の情報を取得するのに必要なAzureロールの割り当てを行います。

作成手順

マネージドIDのメニューでAzureロールの割り当てを選択します。

ロールの割り当てと追加を選択します。

スコープや役割を選択し保存をクリックします。

※今回は閲覧者を選択しています。環境に合わせて適切な役割を選択します。

ロジックアプリ(Azure Logic Apps)を作成

ロジックアプリのサービスを作成する

ロジックアプリのアイテム自体を作成します。

作成手順

ロジックアプリのメニューで追加(Consumption)を選択します

ロジックアプリの作成で設定を行います。

  • リソースグループ名
  • ロジックアプリ名
  • リージョン

設定する値の入力が完了したら確認および作成をクリックします。

確認画面が表示されますので作成をクリックします。

ロジックアプリへマネージドIDを割り当てる

ロジックアプリでマネージドIDを使えるようにする為には割り当てをすることが必要です。

作成手順
ロジックアプリのメニューでIDを選択します。ユーザー割り当て済みで追加をクリックします。
マネージドIDの選択画面が表示されますので、先ほど作成したマネージドIDを選択します。

HTTPトリガーの作成

ロジックアプリデザイナーを使って作成していきます。まず最初にトリガーを作成します。

作成手順

ロジックアプリデザイナーのメニューで空のロジックアプリを選択します。

検索欄にHTTPと入力します。トリガーの中からHTTPを選択します。

 

HTTPで設定する方法とURIの値を確認します。

Availability Statuses – List By Subscription Idへで要求URLを確認します。

要求URL欄のGETが方法になります。要求URLがURIに設定する内容になります。

HTTPの設定画面で先ほど確認した方法やURIの値を設定します。

Add new parameterで認証、タイムゾーン、開始時刻を選択します。

タイムゾーンや開始日時を設定します。今回は1日1度朝9時に実行する設定にしています。

 

認証の種類にマネージドID、マネージドIDはLogic AppsのIDで設定したマネージドIDを選択します。

JSONの解析アクションを作成

REST APIを実行した際の結果はJSON形式で得られます。これを解析するアクションを作成します。

作成手順

検索欄にJSONと入力します。JSONの解析が表示されますのでこちらを選択します。

サンプルペイロードを使用してスキーマを生成するを選択します。スキーマの入力欄が表示されます。

REST APIを実行した結果(本文)をコピーしスキーマの入力欄に張り付けます。

スキーマが生成されます。

 

※REST API実行時にパラメータに$expand:recommendedactionsを設定するとより詳細な情報が取得出来るのですが、実際にLogic Appsを実行した時にエラーになる事があったので今回は付けずにやっています。

コンテンツに本文を選択します。
設定が完了するとこういう感じになります。

HTMLテーブルの作成のアクション作成(JSON→HTMLテーブルへ変換)

JSONの出力をHTMLテーブルに変換します。

作成手順

検索欄にHTMLと入力します。HTMLテーブルの作成(データ操作)が表示されますので選択します。

列はカスタムを選択します。ヘッダー欄が表示されますので、開始にValueを設定しヘッダーや値を設定します。

今回はステータス等の情報を表示するようにしました。設定が完了するとこのような画面になります。

SendGridのアクションを設定

メール送信する為にSendGridのアクションを設定します。

作成手順

検索欄にSendGridと入力します。メール送信を選択します。

SendGridアカウントの認証設定が表示されます。接続名とSendGrid APIキーを入力します。

メール送信の設定画面が表示されます。送信元、宛先、件名等を入力します。メールの本文にHTMLテーブルの作成の出力を設定します。

設定が完了するとこのような感じになります。

最後にLogic Appデザイナーで保存を選択します。

作成したロジックアプリを実行してみる

作成したロジックアプリを実行してみます。

Logic Apps実行内容

ロジックアプリデザイナーの画面で実行をクリックします。成功するとこのように表示されます。

このようなメールでリソース正常性のステータスを把握する事が出来ました。

もう少し綺麗にメール送信したかったのですが、今の自分の力ではここが限界でした。今後もアップデートしていきたいと思います。

Azure Portalでの確認はこちらを参照願います。

Logic Appsを利用してARMテンプレートをエクスポートからメール送信までやってみました。