Ćwiczenie — wdrażanie i eksportowanie przepływu pracy usługi Azure Logic Apps przy użyciu szablonu usługi ARM
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
Skopiuj podstawowy szablon użyty w poprzednim ćwiczeniu za pomocą następującego
cp
polecenia:cp basic-template.json template-with-params.json
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.
Zastąp sekcję
parameters
w szablonie następującym fragmentem kodu, który dodaje dwa nowe parametrylogicAppName
ilocation
:"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 parametrlocation
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.
name
Zastąp pola ilocation
w sekcji resources szablonu, aby użyć naszych nowych parametrów, jak pokazano w poniższym fragmencie kodu:"name": "[parameters('logicAppName')]", "location": "[parameters('location')]",
Zastąp sekcję
outputs
w dolnej części szablonu poniższym kodem. Aktualizujemy wartość zmiennej szablonulogicAppUrl
, aby również używać parametrulogicAppName
, 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]" } }
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
Utwórz nowy plik o nazwie
params.json
w wbudowanym edytorze kodu za pomocą następującego polecenia:code params.json
Wklej następujący kod JSON do params.json i naciśnij Ctrl + aby zapisać zmiany.
{ "logicAppName": { "value": "myLogicApp" } }
Weryfikowanie szablonu
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
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 pliku
location
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
.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.
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
.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!).
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.
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
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.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 iint()
funkcji konwersji.
Naciśnij Ctrl + S, aby zapisać zmiany w template-with-params.json.
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"}}'
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
.Aby zobaczyć, jak działa aplikacja, znajdź wartość logicAppUrl w wyniku JSON. Zaznacz ten adres URL i wklej go w nowym oknie przeglądarki.
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: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.
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