Logic Apps におけるバックアップ方法

こんにちは。
今回は度々ご質問を頂くLogic Appsにおけるバックアップ方法についてまとめてみたいと思います。

Logic Appsとは！？という方がいれば、こちらをご確認下さい。

Azure Logic Apps ドキュメント
https://docs.microsoft.com/ja-jp/azure/logic-apps/

バックアップの用途としては主に２つのシナリオが考えられます。
各シナリオごとに説明していきます。

■1. 同じLogic Appsでバージョンが差異を管理する場合
■2. Logic Appsが削除された場合に備えて管理する場合


■1. 同じLogic Appsでバージョンが差異を管理する場合
====================================================
同じLogic Appsにおいてアクションの変更などを行い、アップデートを日々行っており、いくつか前のバージョンに戻したいというシナリオです。
この場合には、Logic Appsの既定の機能であるVersionsという項目から、過去の設定を確認することが可能です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/309963/bc500eba-05a4-7f0e-b9a6-b5e7a38c74c0.png)

Versions の項目を開くと更新されたタイミング、およびバージョンIDが表示されます。
ここから遡りたい地点のIDを選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/309963/913e3fcf-3b10-dbb2-6e17-d9d8798a0f67.png)

そうすると、過去の地点におけるスキーマ情報を簡単に確認することが可能です。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/309963/043e9892-717f-f59e-3461-e0ef3e15e21d.png)


■2. Logic Appsが削除された場合に備えて管理する場合
====================================================
こちらのシナリオは、Logic Appsそのものを削除するシナリオを考慮した場合です。例えば、誤って削除ボタンを教えてしまった、などの状況です。いくつかパターンがありますので、合ったパターンを選択頂ければと思います。

- 複製する

同じLogic Appsが存在していればよいということであれば、Logic Appsの複製機能を用いて既存のLogic Appsを簡単にコピーすることが可能です。該当Logic AppsをAzure Portalから選択し、[Close]ボタンがありますので、こちらから実施することが可能です。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/309963/dfe40b6d-b43a-b926-37e9-59178974ad31.png)

ただし、サブスクリプションやリソースグループが固定化されているため、注意が必要です。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/309963/cb383c67-7c5e-88b1-1eb6-a6befa55955d.png)

- Template としてバックアップする（Automation Script）

既定の機能やツールを用いて該当のLogic Appsをテンプレートとしてバックアップすることが可能です。例えば、Azure Portalから[Automation Script]を選択します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/309963/217b16ad-d976-7537-53c4-ed7239184686.png)

この後、こちらを用いて同様のデプロイができるようになります。ただし該当のリソースグループ全体がテンプレート化されるため、注意が必要です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/309963/fa99993f-c553-5061-844c-3874b15e8f30.png)

- Template としてバックアップする（LogicAppTemplateCreator）

上記と同様にテンプレートとしてLogic Appsを出力するツールが存在するため、こちらを利用してバックアップを行います。コマンドラインでの実行となりますが、該当Logic Appsをテンプレート化することが可能です。

https://github.com/jeffhollan/LogicAppTemplateCreator

手順としても非常にシンプルです。
まずは、該当のファイルをローカルにコピーします。そして、以下のようにPowerShellにてモジュールをロードし、準備は完了です。

Import-Module C:\{pathToSolution}\LogicAppTemplateCreator\LogicAppTemplate\bin\Debug\LogicAppTemplate.dll

この後は、Get-LogicAppTemplateを実行することで、該当のJSONファイルを出力させることが出来ます。
例えば、以下のようにコマンドを実行すると該当のLogic Apps名、リソースグループ名、サブスクリプションIDの入力を求められ、その後、Out-Fileに指定したファイルにテンプレートが出力されます。

Get-LogicAppTemplate | Out-File C:\template.json

- Visual Studioで管理する

Logic AppsはVisual Studioを用いることでも作成、管理することが可能です。
運用を手間を考えるとソースコントロール -> DevOpsからデプロイといった運用がベストプラクティスの１つとして上がってくるのではないかと思います。
もちろん、選択肢の1つとはなりますが、Visual Studio向けにアドインが用意されておりますので、ぜひご検討頂けると幸いです。

Visual Studio でロジック アプリを管理する
https://docs.microsoft.com/ja-jp/azure/logic-apps/manage-logic-apps-with-visual-studio

クイック スタート: Azure Logic Apps を使用してタスク、プロセス、ワークフローを作成および自動化する - Visual Studio
https://docs.microsoft.com/ja-jp/azure/logic-apps/quickstart-create-logic-apps-with-visual-studio

Azure Logic Apps Tools for Visual Studio 2017
https://marketplace.visualstudio.com/items?itemName=VinaySinghMSFT.AzureLogicAppsToolsforVisualStudio-18551

ちなみにすでに作成されたLogic Appに対しても接続、テンプレートとしてダウンロードすることも可能です。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/309963/aefac212-30eb-9733-b4ae-af27e45c1e63.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/309963/a48872c6-d013-9aa1-c957-f155d4cb682d.png)