Övning – Distribuera och exportera ett Azure Logic Apps-arbetsflöde med hjälp av en ARM-mall
I föregående övning distribuerade vi en logikapp med hjälp av en grundläggande Azure Resource Manager-mall. Den här mallen var oflexibel eftersom allt var hårdkodat. Om du till exempel vill ändra arbetsflödets namn eller appens distributionsplats måste du redigera mallen. I scenarier där du har flera distributioner i en skriptmiljö blir det besvärligt att redigera mallen manuellt. En bättre metod är att ange värden som parametrar för att anpassa resursdistribution.
Uppdatera mallen till att använda mallparametrar
Kopiera den grundläggande mall som vi använde i föregående övning med följande
cp
kommando:cp basic-template.json template-with-params.json
Öppna mallen i den inbyggda redigeraren med följande
code
kommando:code template-with-params.json
Det första steget är att lägga till parametrar så att vi enkelt kan anpassa appens namn och plats där appen körs.
parameters
Ersätt avsnittet i mallen med följande kodfragment, som lägger till två nya parametrar ochlogicAppName
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." } } },
Båda parametrarna är strängar. Vi anger inte något standardvärde för parametern
logicAppName
, vilket innebär att du måste ange ett vid distributionstillfället. Däremot är detlocation
valfritt eftersom vi anger ett standardvärde.Standardvärdet för parametern
location
är platsen för den resursgrupp som appen distribueras till. Vi hämtar det värdet genom att referera till egenskapen location (plats) från den resursgrupp som returneras av mallfunktionenresourceGroup()
. Uttrycken börjar och slutar med vänster respektive höger hakparenteser ([ ]
). Uttryckets värde utvärderas när mallen har slutfört distributionen. Ett uttryck kan returnera en sträng, ett heltal, ett booleskt värde, en matris eller ett objekt. I en mall kan du definiera 256 parametrar som maximalt.Nu när vi har definierat två nya parametrar använder vi dem i mallen genom att ersätta hårdkodade värden med referenser till de nya parametrarna.
Ersätt fälten
name
ochlocation
i resursavsnittet i mallen för att använda våra nya parametrar enligt följande kodfragment:"name": "[parameters('logicAppName')]", "location": "[parameters('location')]",
Ersätt avsnittet
outputs
längst ned i mallen med följande kod. Vi uppdaterar värdetlogicAppUrl
för mallvariabeln för att även använda parameternlogicAppName
enligt följande kodfragment:"outputs": { "logicAppUrl": { "type": "string", "value": "[listCallbackURL(concat(resourceId('Microsoft.Logic/workflows/', parameters('logicAppName')), '/triggers/manual'), '2017-07-01').value]" } }
Tryck på Ctrl + S för att spara ändringarna i template-with-params.json.
Distribuera logikappresursen med den parametriserade mallen
Det finns två sätt att ange parametrar till mallen under distribution med hjälp av flaggan --parameters
i kommandot az deployment group create
. Vi kan skicka in en URI för en fjärrparametrarfil eller namnet på en lokal fil. Vi använder en lokal fil.
Skapa en JSON-parameterfil
Skapa en ny fil med namnet
params.json
i den inbyggda kodredigeraren med följande kommando:code params.json
Klistra in följande JSON i params.json och tryck på Ctrl + S för att spara ändringarna.
{ "logicAppName": { "value": "myLogicApp" } }
Verifiera mallen
Från Cloud Shell kör du
az deployment group validate
för att verifiera mallen:az deployment group validate \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --template-file template-with-params.json \ --parameters @params.json
Argumentet
--template-file
pekar mot den lokala mallen. Mallens filnamn är template-with-params.json.Du ser ett stort JSON-block som utdata, som anger att mallen har godkänt valideringen.
Azure Resource Manager fyller i mallparametrarna och kontrollerar om mallen skulle köras korrekt i din prenumeration.
Om verifieringen misslyckades visas en detaljerad beskrivning av felet i utdata.
Distribuera mallen med parametrar från en lokal fil
I Cloud Shell kör du följande kommando för att distribuera logikappresursen med appens namn hämtat från filen params.json . I filen params.json anges inte parametern
location
, så standardvärdet används.az deployment group create \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --template-file template-with-params.json \ --parameters @params.json
Distributionen tar en stund och du kan se förloppet på Cloud Shell-kommandoraden. När distributionen är klar bör du se
provisioningState
i JSON-resultatet med värdetSucceeded
.För att se hur appen fungerar i praktiken letar du upp värdet för logicAppUrl i JSON-resultatet. Välj URL:en eller kopiera och klistra in den i ett nytt webbläsarfönster. På sidan visas meddelandet Hello Azure Logic Apps Template! .
Distribuera mallen med parametrar från kommandoraden
I stället för att redigera en parameterfil varje gång vi vill distribuera från kommandoraden kan vi ange parametrarna i en JSON-sträng på kommandoraden.
Kör följande kommando i Cloud Shell för att distribuera logikappresursen med namnet på appen och dess plats som matas in som en JSON-sträng på kommandoraden:
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"}}'
Distributionen tar en stund och du kan se förloppet på Cloud Shell-kommandoraden. När distributionen är klar bör du se
provisioningState
i JSON-resultatet med värdetSucceeded
.För att se hur appen fungerar i praktiken letar du upp värdet för logicAppUrl i JSON-resultatet. Välj URL:en och klistra in den i ett nytt webbläsarfönster. På sidan visas meddelandet Hello Azure Logic Apps Template! .
Kör följande kommando för att visa en lista över alla Azure Logic Apps-arbetsflöden som vi har distribuerat hittills:
az resource list \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --resource-type Microsoft.Logic/workflows \ --query [*].[name,location] --output tsv
Det här kommandot visar de två Azure Logic Apps-arbetsflöden som vi har distribuerat hittills, allt från en mall.
Uppdatera appåtgärden i Azure Resource Manager-mallen
Nu tar vi och gör så att appen åstadkommer mer än att bara skicka tillbaka ett statiskt meddelande till oss. Vi behåller appen som ett HTTP-utlöst arbetsflöde, som fortfarande returnerar ett HTTP-svar. Vi skickar in några värden med begäran och låter appen göra en beräkning åt oss. Vi ska göra en grundläggande områdesberäkning. Förutsatt att de indata vi skickar är höjden och bredden på en rektangel returnerar vi arean. Sedan distribuerar vi den nya appen och ser den köras.
Öppna template-with-params.json i den inbyggda redigeraren genom att köra följande kommando i Cloud Shell:
code template-with-params.json
Lägg till fältet
relativePath
i indataavsnittet i vår HTTP-begärandeutlösare enligt följande kodfragment:"inputs": { "method": "GET", "relativePath": "{width}/{height}", "schema": {} }
Posten
relativePath
anger de parametrar som vi vill att HTTP-slutpunkts-URL:en accepterar. I det här fallet definierar vi två parametrar, width (bredd) och height (höjd). Vi använder dessa parametervärden för att beräkna ett område och returnera resultatet.Uppdatera brödtexten för åtgärden Svar med följande rad:
"body": "Response from @{workflow().name} Total area = @{mul( int(triggerOutputs()['relativePathParameters']['height']) , int(triggerOutputs()['relativePathParameters']['width']) )}",
Vårt uppdaterade svar utför följande uppgifter:
Skriver ut namnet på logikappresursen. Svaret anropar
workflow()
funktionen för att returnera information om arbetsflödet. Från det resultatet refererar vi till namnegenskapen.Returnerar produkten av heltalsekvivalenter för höjd- och breddsträngsvärdena från URL-parametrarna. Den här uppgiften använder funktionen och
int()
konverteringsfunktionenmul()
.
Tryck på Ctrl + S för att spara ändringarna i template-with-params.json.
Verifiera mallen efter dessa ändringar med
az deployment group validate
kommandot i Cloud Shell. I det här exemplet anger vi appens namn till CalculateArea med hjälp av en infogad parameter.az deployment group validate \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --template-file template-with-params.json \ --parameters '{ "logicAppName": {"value":"CalculateArea"}}'
Kör följande kommando för att distribuera ändringarna till en logikapp som heter CalculateArea. Vi utelämnar ett värde för parametern
location
och använder bara standardvärdet.az deployment group create \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --template-file template-with-params.json \ --parameters '{ "logicAppName": {"value":"CalculateArea"}}'
Distributionen tar en stund, men du kan titta på förloppet på Cloud Shell-kommandoraden. När distributionen är klar bör du se
provisioningState
i JSON-resultatet med värdetSucceeded
.För att se hur appen fungerar i praktiken letar du upp värdet för logicAppUrl i JSON-resultatet. Välj URL:en och klistra in den i ett nytt webbläsarfönster.
Uppdatera URL:en i webbläsaren genom att ändra
/triggers/manual/paths/invoke?api
till/triggers/manual/paths/invoke/{width}/{height}?api
, där {width} och {height} är heltalsvärden för bredden och höjden för den area som vi ska beräkna. Exempel:/triggers/manual/paths/invoke/6/7?api
Svaret från appen visar namnet på arbetsflödet och det beräknade området, enligt följande skärmbild:Kommentar
Se till att endast ersätta de refererade delarna av URL:en i föregående steg. Lämna all text på båda sidor som den är.
Kör följande kommando för att visa en lista över alla Azure Logic Apps-arbetsflöden som vi har distribuerat hittills:
az resource list \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --resource-type Microsoft.Logic/workflows \ --query [*].[name,location] --output tsv
I den här övningen introducerade vi mer flexibilitet till mallen med parametrar. Vi angav dessa parametrar på kommandoraden och med hjälp av en lokal fil. Vi har också uppdaterat den åtgärd som vårt enkla arbetsflöde kör genom att direkt ändra svaret body
vi skickar tillbaka.
Du kan ladda ned parameterfiler och mallfiler från GitHub med följande curl
-kommandon i 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