Ćwiczenie — wdrażanie i eksportowanie przepływu pracy usługi Azure Logic Apps przy użyciu szablonu usługi ARM

Ukończone

W poprzednim ćwiczeniu wdrożyliśmy aplikację logiki przy użyciu podstawowego szablonu usługi Azure Resource Manager. Ten szablon był nieelastyczny w tym, że wszystko było zakodowane na stałe. Aby na przykład zmienić nazwę przepływu pracy lub lokalizację wdrożenia aplikacji, musisz edytować szablon. W scenariuszach, w których masz wiele wdrożeń w środowisku skryptowym, ręczne edytowanie szablonu staje się kłopotliwe. Lepszym rozwiązaniem jest podanie wartości jako parametrów, co umożliwia dostosowanie wdrożenia zasobów.

Aktualizowanie szablonu w celu zastosowania parametrów szablonu

  1. Skopiuj podstawowy szablon użyty w poprzednim ćwiczeniu za pomocą następującego cp polecenia:

    cp basic-template.json template-with-params.json
    
  2. Otwórz szablon we wbudowanym edytorze za pomocą następującego code polecenia:

    code template-with-params.json
    

    Pierwszym krokiem jest dodanie parametrów, dzięki czemu można łatwo dostosować nazwę i lokalizację aplikacji, w której działa aplikacja.

  3. Zastąp sekcję parameters w szablonie następującym fragmentem kodu, który dodaje dwa nowe parametry logicAppName i location:

    "parameters": {
        "logicAppName": {
            "type": "string",
            "metadata": {
              "description": "The name of the logic app to create."
            }
          },
        "location": {
        "type": "string",
        "defaultValue": "[resourceGroup().location]",
        "metadata": {
              "description": "Location for all resources."
            }
        }
    },
    

    Oba parametry są ciągami. Nie udostępniamy wartości domyślnej dla parametru logicAppName , co oznacza, że musisz podać jeden w czasie wdrażania. Natomiast parametr location jest opcjonalny, ponieważ dostarczamy wartość domyślną.

    Wartość domyślna parametru location to lokalizacja grupy zasobów, w której jest wdrażana aplikacja. Uzyskujemy tę wartość przez odwołanie się do właściwości location z grupy zasobów zwróconej przez funkcję resourceGroup() szablonu. Wyrażenia zaczynają się i kończą odpowiednio nawiasami kwadratowymi po lewej i prawej stronie ([ ]). Wartość wyrażenia jest obliczana po zakończeniu wdrażania szablonu. Wyrażenie może zwrócić ciąg, liczbę całkowitą, wartość logiczną, tablicę lub obiekt. W szablonie można zdefiniować maksymalnie 256 parametrów.

    Teraz, gdy zdefiniowaliśmy dwa nowe parametry, użyjemy ich w szablonie, zastępując wartości zakodowane na stałe odwołaniami do nowych parametrów.

  4. name Zastąp pola i location w sekcji resources szablonu, aby użyć naszych nowych parametrów, jak pokazano w poniższym fragmencie kodu:

    "name": "[parameters('logicAppName')]",
    "location": "[parameters('location')]",
    
  5. Zastąp sekcję outputs w dolnej części szablonu poniższym kodem. Aktualizujemy wartość zmiennej szablonu logicAppUrl , aby również używać parametru logicAppName , jak pokazano w poniższym fragmencie kodu:

    "outputs": {
        "logicAppUrl": {
           "type": "string",
           "value": "[listCallbackURL(concat(resourceId('Microsoft.Logic/workflows/', parameters('logicAppName')), '/triggers/manual'), '2017-07-01').value]"
        }
     }
    
  6. Naciśnij Ctrl + S, aby zapisać zmiany w template-with-params.json.

Wdrażanie zasobu aplikacji logiki przy użyciu szablonu sparametryzowanego

Istnieją dwa sposoby na dostarczenie parametrów do szablonu podczas wdrażania za pomocą flagi --parameters w poleceniu az deployment group create. Możemy przekazać identyfikator URI pliku parametrów zdalnych lub nazwę pliku lokalnego. Użyjemy pliku lokalnego.

Tworzenie pliku JSON parametrów

  1. Utwórz nowy plik o nazwie params.json w wbudowanym edytorze kodu za pomocą następującego polecenia:

    code params.json
    
  2. Wklej następujący kod JSON do params.json i naciśnij Ctrl + aby zapisać zmiany.

    { 
        "logicAppName": { 
            "value": "myLogicApp" 
        } 
    }
    

Weryfikowanie szablonu

  1. W usłudze Cloud Shell uruchom polecenie az deployment group validate , aby zweryfikować szablon:

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

    Argument --template-file wskazuje szablon lokalny. Nazwa pliku szablonu to template-with-params.json.

    Jako dane wyjściowe zobaczysz duży blok JSON, który informuje o tym, że szablon przeszedł walidację.

    Usługa Azure Resource Manager wypełnia parametry szablonu i sprawdza, czy szablon można pomyślnie uruchomić w ramach subskrypcji.

    Jeśli walidacja nie powiodła się, zobaczysz szczegółowy opis błędu w danych wyjściowych.

Wdrażanie szablonu z parametrami z pliku lokalnego

  1. W usłudze Cloud Shell uruchom następujące polecenie, aby wdrożyć zasób aplikacji logiki przy użyciu nazwy aplikacji pobranej z pliku params.json . W plikulocation params.json parametr nie jest ustawiony, więc jest używany domyślny.

    az deployment group create \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --template-file template-with-params.json \
    --parameters @params.json
    

    Wdrożenie potrwa kilka chwil i możesz obejrzeć postęp w wierszu polecenia usługi Cloud Shell. Po zakończeniu wdrożenia w wyniku JSON powinien być widoczny element provisioningState z wartością Succeeded.

  2. Aby zobaczyć, jak działa aplikacja, znajdź wartość logicAppUrl w wyniku JSON. Wybierz adres URL lub skopiuj i wklej go w nowym oknie przeglądarki. Na stronie zostanie wyświetlony komunikat Hello Azure Logic Apps Template! (Witaj szablon usługi Azure Logic Apps!).

Wdrażanie szablonu z parametrami z poziomu wiersza polecenia

Zamiast edytować plik parametrów za każdym razem, gdy chcemy przeprowadzić wdrożenie z poziomu wiersza polecenia, możemy dostarczyć parametry w ciągu JSON w wierszu polecenia.

  1. Uruchom następujące polecenie w usłudze Cloud Shell, aby wdrożyć zasób aplikacji logiki o nazwie aplikacji i jej lokalizacji podawanej jako ciąg JSON w wierszu polecenia:

    az deployment group create \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --template-file template-with-params.json \
    --parameters '{ "logicAppName": {"value":"MyLogicApp2"}, "location": {"value":"East US"}}'
    

    Wdrożenie potrwa kilka chwil i możesz obejrzeć postęp w wierszu polecenia usługi Cloud Shell. Po zakończeniu wdrożenia w wyniku JSON powinien być widoczny element provisioningState z wartością Succeeded.

  2. Aby zobaczyć, jak działa aplikacja, znajdź wartość logicAppUrl w wyniku JSON. Zaznacz ten adres URL i wklej go w nowym oknie przeglądarki. Na stronie zostanie wyświetlony komunikat Hello Azure Logic Apps Template! (Witaj szablon usługi Azure Logic Apps!).

  3. Uruchom następujące polecenie, aby wyświetlić listę wszystkich przepływów pracy usługi Azure Logic Apps, które zostały wdrożone do tej pory:

    az resource list \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --resource-type Microsoft.Logic/workflows \
    --query [*].[name,location] --output tsv
    

    To polecenie wyświetla listę dwóch przepływów pracy usługi Azure Logic Apps, które zostały wdrożone do tej pory, wszystkie z szablonu.

Aktualizacja akcji aplikacji w szablonie usługi Azure Resource Manager

Skupmy się teraz na tym, aby nasza aplikacja robiła nieco więcej, niż tylko wysyłanie nam statycznego komunikatu. Zachowamy aplikację jako przepływ pracy wyzwalany przez protokół HTTP, który nadal będzie zwracać odpowiedź HTTP. Przekażmy kilka wartości za pomocą żądania i wykonajmy obliczenia dla aplikacji. Wykonamy podstawowe obliczenie obszaru. Zakładając, że przekazane dane wejściowe to wysokość i szerokość prostokąta, zwrócimy jego pole. Następnie wdrożymy nową aplikację i obejrzyjemy jej uruchomienie.

  1. Otwórz template-with-params.json w wbudowanym edytorze, uruchamiając następujące polecenie w usłudze Cloud Shell:

    code template-with-params.json
    
  2. relativePath Dodaj pole do sekcji danych wejściowych wyzwalacza żądania HTTP, jak pokazano w poniższym fragmencie kodu:

    "inputs": {
        "method": "GET",
        "relativePath": "{width}/{height}",
        "schema": {}
    }
    

    Pozycja relativePath określa parametry, które mają zostać zaakceptowane przez adres URL punktu końcowego HTTP. W tym przypadku definiujemy dwa parametry: width (szerokość) i height (wysokość). Użyjemy tych wartości parametrów, aby obliczyć obszar i zwrócić wynik.

  3. Zaktualizuj treść akcji Odpowiedź przy użyciu następującego wiersza:

    "body": "Response from @{workflow().name}  Total area = @{mul( int(triggerOutputs()['relativePathParameters']['height'])  , int(triggerOutputs()['relativePathParameters']['width'])  )}",
    

    Nasza zaktualizowana odpowiedź wykonuje następujące zadania:

    • Wyświetla nazwę zasobu aplikacji logiki. Odpowiedź wywołuje workflow() funkcję w celu zwrócenia informacji o przepływie pracy. Z tego wyniku odwołujemy się do właściwości name.

    • Zwraca iloczyn liczby całkowitej odpowiadający wartościom ciągu wysokości i szerokości z parametrów adresu URL. To zadanie używa mul() funkcji i int() funkcji konwersji.

  4. Naciśnij Ctrl + S, aby zapisać zmiany w template-with-params.json.

  5. Zweryfikuj szablon po tych zmianach za az deployment group validate pomocą polecenia w usłudze Cloud Shell. W tym przykładzie ustawiliśmy nazwę aplikacji na CalculateArea przy użyciu wbudowanego parametru.

    az deployment group validate \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --template-file template-with-params.json \
    --parameters '{ "logicAppName": {"value":"CalculateArea"}}'
    
  6. Uruchom następujące polecenie, aby wdrożyć nasze zmiany w aplikacji logiki o nazwie CalculateArea. Pominiemy wartość parametru location i użyjemy wartości domyślnej.

    az deployment group create \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --template-file template-with-params.json \
    --parameters '{ "logicAppName": {"value":"CalculateArea"}}'
    

    Wdrożenie potrwa kilka chwil, ale możesz obejrzeć postęp w wierszu polecenia usługi Cloud Shell. Po zakończeniu wdrożenia w wyniku JSON powinien być widoczny element provisioningState z wartością Succeeded.

  7. Aby zobaczyć, jak działa aplikacja, znajdź wartość logicAppUrl w wyniku JSON. Zaznacz ten adres URL i wklej go w nowym oknie przeglądarki.

  8. Zaktualizuj adres URL w przeglądarce, zamieniając /triggers/manual/paths/invoke?api na /triggers/manual/paths/invoke/{width}/{height}?api, gdzie {width} i {height} są całkowitymi wartościami szerokości i wysokości pola, które chcemy obliczyć. Na przykład /triggers/manual/paths/invoke/6/7?api. Odpowiedź z aplikacji wyświetli nazwę przepływu pracy i obszar obliczeniowy, jak pokazano na poniższym zrzucie ekranu:

    Zrzut ekranu przedstawiający przeglądarkę internetową wyświetlającą odpowiedź z naszej aplikacji o nazwie calculate area (obszar obliczeniowy).

    Uwaga

    Pamiętaj, aby zastąpić tylko przywołyne części adresu URL w poprzednim kroku. Pozostaw cały tekst po obu stronach, tak jak jest.

  9. Uruchom następujące polecenie, aby wyświetlić listę wszystkich przepływów pracy usługi Azure Logic Apps, które zostały wdrożone do tej pory:

    az resource list \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --resource-type Microsoft.Logic/workflows \
    --query [*].[name,location] --output tsv
    

W tym ćwiczeniu za pomocą parametrów zwiększyliśmy elastyczność naszego szablonu. Dostarczyliśmy te parametry w wierszu polecenia i przy użyciu pliku lokalnego. Zaktualizowaliśmy również akcję wykonywaną przez nasz prosty przepływ pracy przez bezpośrednią zmianę body wysyłanej odpowiedzi.

Pliki parametrów i szablonu można pobrać z witryny GitHub za pomocą następujących poleceń narzędzia curl w usłudze Cloud Shell.

curl https://github.com/MicrosoftDocs/mslearn-logic-apps-and-arm-templates/blob/master/calculate-area/params.json > params-final.json
curl https://github.com/MicrosoftDocs/mslearn-logic-apps-and-arm-templates/blob/master/calculate-area/template.json > template-with-params-final.json