クラウドエンジニアブログ

パラメーターを使用してLogic App 複製をコード修正なしで実現する方法のご紹介

豊田 大吉

豊田

こんにちは。豊田です。
Azure Logic Apps (以下、Logic Apps) について記事を書いてみたいと思います。

■本記事の対象者
Logic Apps を利用するにあたって、次のようなお悩みを抱えてらっしゃる方。

  • 同じ処理を行う Logic App を複数環境にデプロイする際に、手動で1から作成しているため、手間がかかり、よく設定ミスをしてしまう
  • 複製するために別途開発ツールは用いずに、Logic Apps のデザイナー (ブラウザ) のみで完結する方法で開発したい

■本記事の内容
上記のような課題に対する解決策として、環境ごとに異なる設定値をパラメーター化することで、コード修正なしで異なる環境に複製 (デプロイ) できる Logic App を作成する方法について記載します。



Logic Apps については、Microsoft の公開情報をご参照ください。
【参考:Azure Logic Apps とは】
https://docs.microsoft.com/ja-jp/azure/logic-apps/logic-apps-overview



パラメーターを使って Logic App を作成する

環境ごとに異なる設定値をもつ Logic App の例として、次の Logic App を作成します。
作成する Logic App の名前は「LogicAppA」とします。

<作成する Logic App>
定期的に HTTP リクエストを行います。
リクエスト先の URL は「https://www.softbanktech.co.jp/special/blog/cloud_blog/」とします。

1. 空の Logic App を作成します
手順は次のページをご参照ください。
【参照:ロジック アプリを作成する】
https://docs.microsoft.com/ja-jp/azure/logic-apps/tutorial-build-schedule-recurring-logic-app-workflow#create-your-logic-app

Logic App 作成時に指定する値は次の通りとします。

  • リソースグループ:RG-A (新規作成)
  • タイプ:消費
  • ロジックアプリ名:LogicAppA
  • 地域:Japan East (東日本)
  • ログ分析を有効化:いいえ

2. 繰り返しトリガーを追加する
手順は次のページをご参照ください。
【参照:繰り返しトリガーを追加する】
https://docs.microsoft.com/ja-jp/azure/logic-apps/tutorial-build-schedule-recurring-logic-app-workflow#add-the-recurrence-trigger

3. パラメーターを追加する
Logic Apps デザイナーを開き、「パラメーター」をクリックします。

表示されたパネルで「パラメーターの追加」をクリックします

HTTP リクエスト先の URL をパラメーターとして追加します。
入力後、「×」をクリックしてパネルを閉じます。

4. HTTP アクションを追加する
HTTP リクエストを行うために、HTTP コネクタの HTTP アクションを追加します。
URI には、先ほど追加した url パラメーターを指定します。
URI のテキストボックスを選択して表示されるダイアログで、url パラメーターを選択します。

5. Logic App 実行
作成した Logic App を実行してみます。
実行履歴を見ると、url パラメーターで指定した URL (https://www.softbanktech.co.jp/special/blog/cloud_blog/) に対してHTTP リクエストが行われたことが確認できます。




作成した Logic App のコードをエクスポートする

前の手順で作成した LogicAppA を別環境に複製するために、LogicAppA のコードを入手します。 コードは Azure Portal でエクスポートします。

1. 「テンプレートのエクスポート」を表示し、「ダウンロード」をクリックします。

zip ファイルがダウンロードされます。
ダウンロードした zip ファイルには2つのファイルが含まれています。

  • template.json:Logic App のコードファイルです
  • parameters.json:パラメーターの値を定義するファイルです



新しい Logic App をデプロイする (準備)

前の手順でエクスポートした template.json と parameters.json を使用して、新しい Logic App の「LogicAppB」をデプロイしたいと思います。
ただ大変残念ながら、エクスポートした template.json と parameters.json はそのままでは使えません。
テキストエディタを使用して、次の編集を行います。

1. template.json の編集

① パラメーター「url」の定義を追加します (赤枠の内容を追加します)

①-A)
"url": {
    "defaultValue": "https://www.softbanktech.co.jp/special/blog/cloud_blog/",
    "type": "String"
}
①-B)
"url": {
    "value": "[parameters ('url') ]"
}

② デプロイ先のリージョンをリソースグループと合わせます (緑枠の部分を変更します)

"location": "[resourceGroup () .location]",

2. parameter.json の編集

① パラメーター「url」を追加します (赤枠の内容を追加します)
value には、前手順の URL とは別の URL を指定します。

"url": {
    "value": "https://www.softbanktech.co.jp/special/blog/sbt_sbt/"
}

② Logic App の名前を「LogicAppB」にします。



新しい Logic App をデプロイする

前の手順で編集した template.json と parameters.json を使用して、LogicAppB をデプロイします。
LogicAppB の内容は次の通りです。
(赤字太字部分が、前の手順で作成した LogicAppA と違う箇所です。)

  • LogicAppB の処理内容
    定期的に HTTP リクエストを行います。
    リクエスト先の URL は「https://www.softbanktech.co.jp/special/blog/sbt_sbt/」とします。
  • LogicAppB の情報
    • リソースグループ:RG-B (新規作成)
    • タイプ:消費
    • ロジックアプリ名:LogicAppB
    • 地域:Japan West (西日本)
    • ログ分析を有効化:いいえ

1. カスタムデプロイを表示
「リソースの作成」を「Template」で検索し、「Template deployment」を選択します。

「作成」をクリックします。

2. template.json のアップロード
「エディターで独自のテンプレートを作成する」をクリックします。

「ファイルの読み込み」をクリックし、template.json をアップロードします。

「保存」をクリックします。

3. parameters.json のアップロード
「パラメーターの編集」をクリックします。

「ファイルの読み込み」をクリックし、parameters.json をアップロードします。

「保存」をクリックします。

4. デプロイ実行
リソースグループ「RG-B」を新規作成します。
リージョンは「西日本」を指定します。
最後に「確認と作成」をクリックします。

「作成」をクリックします。

「LogicAppB」がデプロイされました。

LogicAppB を実行してみます。
実行履歴を見ると、parameters.json で指定した URL に対して HTTP リクエストが行われたことが確認できます。




さいごに

いかがでしたでしょうか。

パラメーター (parameters.json) をデプロイ先の環境ごとに用意すれば、コード (template.json) を変更することなく、複数環境へのデプロイが可能となります。

例として、実際の開発で作成する Logic App では、REST API や Azure Functions (HTTP トリガー) に対して HTTP リクエストを行うことがあると思います。
環境ごとに REST API、Azure Functions の URL が異なる場合、その値をパラメーター化すれば、それぞれの環境の REST API、Azure Functions に HTTP リクエストする Logic App をコード変更なしでデプロイできます。

今回ご紹介した方法が、パラメーターを使用した Logic Apps 開発の唯一の方法というわけではありません。
ARM テンプレートの直接作成、開発ツール (Visual Studio や Visual Studio Code) でも実現できます。
ただ、「ブラウザだけでサクッと開発できる」という Logic Apps のメリットを享受したい場合は、今回ご紹介した方法が参考になるかもしれません。

みなさまの Logic Apps 開発の一助になれば幸いです。

【総合】お問い合わせ

製品・サービスに関するお問い合わせはお気軽にご相談ください

ピックアップ

セミナー情報
クラウドエンジニアブログ
clouXion
メールマガジン登録