Azure Logic Appsを使ってARMテンプレートのエクスポートからメール送信までやってみた
Azure環境のバックアップとして定期的にARMテンプレートのエクスポートをしたかったので調べてみた所、Logic Apps(ロジックアプリ)のResource ManagerコネクタにExport a resource group templateというアクションがありました。
試してみた所JavaScriptでの変換が必要でしたがARMテンプレートのエクスポートが出来ました。
今回はAzure Logic Apps(ロジックアプリ)のExport a resource group templateアクションを利用して、リソースグループ単位でARMテンプレートのエクスポートから添付ファイルとしてメール送信までやってみました。
※サンプルという事でテンプレートの送信方法にメールを利用していますが、この編は利用用途に合わせて適時変更をお願い致します。
統合アカウントの作成
Logic Apps(ロジックアプリ)で利用する統合アカウントを作成します。
JavaScriptのアクションを利用する際に統合アカウントが必要になります。
ARM(Azure Resource Manager)テンプレートをエクスポートするワークフローを作成
Logic Apps(ロジックアプリ)のリソースを作成
Logic Apps(ロジックアプリ)のリソースを作成します。
リソース作成 | |
ロジックアプリのメニューで追加(従量課金プラン)を選択します |
![]() |
ロジックアプリ作成で設定を行います。
設定する値の入力が完了したら確認および作成をクリックします。 ※今回はtemplate-export-Logic-Appsという名前で作成しています。 |
![]() |
確認画面が表示されますので作成をクリックします。 |
![]() |
統合アカウントとLogic Apps(ロジックアプリ)の関連付け
Logic Appsで統合アカウントを利用するには関連付けが必要になります。
ワークフロー設定 | |
ロジックアプリのメニューで設定にあるワークフロー設定を選択します。 統合アカウントという項目がありますので、先ほど作成した統合アカウントを選択します。保存すれば完了です。 |
![]() |
繰り返しのトリガーを作成
ロジックアプリデザイナーを使って作成していきます。
最初にトリガーを作成します。
毎週日曜日3時に実行するようにしてみました。
繰り返しトリガー作成 | |
ロジックアプリデザイナーで、繰り返しのトリガーを選択します。 | ![]() |
今回は毎週ですので、間隔に1、頻度に週を選択をします。 |
![]() |
Add new parameterを選択します。 |
|
毎週日曜日3時(日本時間)に起動するように設定します。 |
Export a resource group templateのアクションを作成
Azure Resource ManagerにあるExport a resource group templateのアクションを使い、リソースグループ単位でARMテンプレートを取得します。
JavaScriptのアクションを作成
Export a resource group templateで出力したファイルそのままだと出力結果がレイアウトが崩れていました。
そこでJavaScriptコードの実行というアクションを利用してJSON形式に成形します。
コードには以下の通り入力します。
var data01 = workflowContext.actions.Export_a_resource_group_template.outputs.body.template;
var data02 = JSON.stringify(data01, null, ' ');
return data02;
SendGridを使ってメール送信するアクションを作成
エクスポートしたARMテンプレートをメール送信(SendGrid)するアクションを作成します。
SendGridのAPIキーの確認等についてはこちらを参照願います。
ARMテンプレートをエクスポートするワークフローを実行
作成したLogic Apps(ロジックアプリ)を実行します。
ワークフロー実行結果 | |
ロジックアプリデザイナーの画面で実行をクリックします。 |
|
緑のチェックが表示されており、エラーなく実行された事が分かります。 |
|
添付ファイルとしてエクスポートしたARMテンプレートをメール送信できる事が確認出来ました。 ※ARMテンプレートにDefaultValueを含むかなどの設定は、Export a resource group templateのOptionで指定します。 |
改善すべき点はいっぱいあるかと思います。今後も継続して勉強して行きたい所です。
Logic Apps(ロジックアプリ)を利用してサブスクリプション内のリソース正常性をメール送信するという事もやっています。