演習 - ARM テンプレートを使用して基本的な Azure Logic Apps ワークフローをデプロイする

完了

このユニットでは、Azure Resource Manager テンプレートを使用して Azure Logic Apps のワークフローをデプロイします。

Azure でのリソースの作成

通常、作成する必要があるすべての項目を保持するリソース グループを最初に作成します。 リソース グループにより、ソリューションを構成する仮想マシン (VM)、ディスク、ネットワーク インターフェイスなどのすべての要素を 1 つのユニットとして管理できます。

リソース グループは、Azure CLI コマンドの az group create を使用して作成できます。 このコマンドは、サブスクリプションで一意のリソース グループ名を指定するために --name を使用します。 また、このコマンドは、リソースの既定の Azure リージョンを指定するために --location を使用します。

ただし、無料の Azure サンドボックス環境を使用しているため、リソース グループを作成する必要はありません。 代わりに、この演習で以前に作成したリソース グループ [サンドボックス リソース グループ名] を使用できます。

基本的な Resource Manager テンプレートのダウンロードと調査

  1. Cloud Shell ウィンドウの上部で、[その他] アイコン ([...]) を選択した後、[設定]>[クラシック バージョンに移動] を選択します。

  2. Cloud Shell から次の curl コマンドを実行して、GitHub からテンプレートをダウンロードします。

    curl https://raw.githubusercontent.com/MicrosoftDocs/mslearn-logic-apps-and-arm-templates/master/basic-template/template.json > basic-template.json
    
  3. テンプレートを表示するには、組み込みエディターで開きます。

    code basic-template.json
    

    template.json に記述されているロジック アプリ ワークフロー定義を、次に一覧表示します。

    {
        "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {},
        "variables": {},
        "resources": [
            {
                "type": "Microsoft.Logic/workflows",
                "apiVersion": "2017-07-01",
                "name": "HelloLogicAppsTemplate",
                "location": "westus2",
                "properties": {
                    "state": "Enabled",
                    "definition": {
                        "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
                        "contentVersion": "1.0.0.0",
                        "parameters": {},
                        "triggers": {
                            "manual": {
                                "type": "Request",
                                "kind": "Http",
                                "inputs": {
                                    "method": "GET",
                                    "schema": {}
                                }
                            }
                        },
                        "actions": {
                            "Response": {
                                "runAfter": {},
                                "type": "Response",
                                "kind": "Http",
                                "inputs": {
                                    "body": "Hello Logic Apps Template!",
                                    "statusCode": 200
                                }
                            }
                        },
                        "outputs": {}
                    },
                    "parameters": {}
                }
            }
        ],
        "outputs": {
            "logicAppUrl": {
               "type": "string",
               "value": "[listCallbackURL(concat(resourceId('Microsoft.Logic/workflows/', 'HelloLogicAppsTemplate'), '/triggers/manual'), '2017-07-01').value]"
            }
         }
    }
    

    前述の JSON 定義およびテンプレート名からわかるように、このロジック アプリ ワークフローは基本的なものです。 このアプリの主要なコンポーネントを見てみましょう。

    次のスニペットでは、アプリが HelloLogicAppsTemplate と呼ばれていることがわかります。 この名前はテンプレートにハードコーディングされています。 アプリが実行される場所も westus2 にハード コーディングされています。

    "name": "HelloLogicAppsTemplate",
    "location": "westus2",
    

    下の triggers セクションまでスクロールすると、HTTP GET 要求でワークフローがトリガーされることがわかります。 このトリガーには manual という名前が付けられています。

    "triggers": {
        "manual": {
            "type": "Request",
            "kind": "Http",
            "inputs": {
                "method": "GET",
                "schema": {}
            }
        }
    },
    

    さらに下の actions セクションでは、このワークフローに 1 つのステップまたはアクションが含まれていることがわかります。 このアクションは、メッセージ Hello Azure Logic Apps Template! を含む要求に応答します。

    "actions": {
        "Response": {
            "runAfter": {},
            "type": "Response",
            "kind": "Http",
            "inputs": {
                "body": "Hello Logic Apps Template!",
                "statusCode": 200
            }
        }
    },
    

    Resource Manager テンプレートの outputs セクションには、logicAppUrl という 1 つの出力があります。 この出力変数により、デプロイされたロジック アプリ リソースの URL が一覧表示されます。 この URL を使用すると、アプリのテストが簡単になります。 出力では listCallbackURL を使用して URL を作成しますが、ワークフロー名とトリガー名はどちらもここでハード コーディングされます。

    "outputs": {
        "logicAppUrl": {
           "type": "string",
           "value": "[listCallbackURL(concat(resourceId('Microsoft.Logic/workflows/', 'HelloLogicAppsTemplate'), '/triggers/manual'), '2017-07-01').value]"
        }
     }
    

    ここでこのロジック アプリをデプロイしてテストしてみましょう。

テンプレートの検証とデプロイ

ロジック アプリ リソースをリソース グループにデプロイするため、az deployment group create コマンドを使用します。 このコマンドを使用してデプロイするときに、--template-uri パラメーターを使用してリモート テンプレートの場所を指定してデプロイすることができます。 この場合、ローカルにテンプレートをデプロイするので、--template-file パラメーターを設定します。

  1. Cloud Shell から az deployment group validate を実行して、テンプレートを検証します。

    az deployment group validate \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --template-file basic-template.json
    

    --template-file 引数は、ローカル テンプレートを指します。 テンプレートのファイル名は basic-template.json です。

    出力として大きな JSON ブロックが表示されます。これは、テンプレートが検証に合格したことを示します。

    Azure Resource Manager によって、テンプレート パラメーターが設定され、ユーザーのサブスクリプション内でテンプレートが正常に実行されるかどうかが確認されます。

    検証が失敗した場合は、エラーの詳細な説明が出力で示されます。

  2. Cloud Shell で次の az deployment group create コマンドを実行して、ここでの基本テンプレートで定義されたロジック アプリ リソースをサンドボックス リソース グループにデプロイします。

    az deployment group create \
    --name MyDeployment \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --template-file basic-template.json
    

    このコマンドは前のコマンドと似ていますが、デプロイの名前を指定する --name 引数も含まれています。

    このコマンドは、完了するまでに 2 から 3 分かかります。 デプロイが完了すると、デプロイについて記述されているもう 1 つの大きな JSON ブロックが出力として表示されます。 JSON 結果内の provisioningState が値 Succeeded になっていることがわかります。

デプロイの確認

  1. az deployment group show を実行してデプロイを検証します。

    az deployment group show \
    --name MyDeployment \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" 
    

    前に確認したのと同じ JSON ブロックが表示されます。 デプロイに関するこれらの詳細が必要になった場合は、後でこのコマンドを実行できます。 デプロイとクラウドの使用状況を追跡するために使用する他のツールにフィードしやすいように、出力は JSON として構成されています。

  2. アプリの動作を確認するには、JSON の結果で logicAppUrl の値を検索します。 URL を選択するか、コピーして新しいブラウザー ウィンドウに貼り付けます。 次のスクリーンショットに示すように、このページには、「Hello Azure Logic Apps Template!」メッセージが表示されます。

    基本のロジック アプリ ワークフローからの応答を表示している Web ブラウザーのスクリーンショット。

おめでとうございます。 Azure Resource Manager テンプレートを使用してロジック アプリ ワークフローが正常にデプロイされました。

この演習で説明したように、基本テンプレートには多くのハードコーディングされた値があります。 これらの値により、テンプレートの柔軟性が目標よりも低くなります。 パラメーターを使用してこの状況を改善できます。