Oefening: een Azure Logic Apps-werkstroom implementeren en exporteren met behulp van een ARM-sjabloon
In de vorige oefening hebben we een logische app geïmplementeerd met behulp van een eenvoudige Azure Resource Manager-sjabloon. Deze sjabloon was inflexibel omdat alles is vastgelegd. Als u bijvoorbeeld de naam van de werkstroom of de implementatielocatie van de app wilt wijzigen, moet u de sjabloon bewerken. In scenario's waarin u meerdere implementaties in een scriptomgeving hebt, wordt het handmatig bewerken van de sjabloon omslachtig. U kunt beter waarden als parameters toevoegen om implementatie van resources aan te passen.
De sjabloon bijwerken voor het gebruik van sjabloonparameters
Kopieer de basissjabloon die we in de vorige oefening hebben gebruikt met de volgende
cp
opdracht:cp basic-template.json template-with-params.json
Open de sjabloon in de ingebouwde editor met de volgende
code
opdracht:code template-with-params.json
De eerste stap is het toevoegen van parameters, zodat we de naam en locatie van de app eenvoudig kunnen aanpassen waar de app wordt uitgevoerd.
Vervang de
parameters
sectie in de sjabloon door het volgende codefragment, waarmee twee nieuwe parameters worden toegevoegd enlogicAppName
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." } } },
Beide parameters zijn tekenreeksen. We bieden geen standaardwaarde voor de
logicAppName
parameter, wat betekent dat u er een moet opgeven tijdens de implementatie. Het is daarentegen optioneel omdatlocation
we een standaardwaarde opgeven.De standaardwaarde voor de
location
parameter is de locatie voor de resourcegroep waarin de app wordt geïmplementeerd. We halen deze waarde op door te verwijzen naar de eigenschap location van de resourcegroep die door de sjabloonfunctieresourceGroup()
wordt geretourneerd. Expressies beginnen en eindigen respectievelijk met vierkante haken links en rechts ([ ]
). De waarde van de expressie wordt geëvalueerd wanneer de sjabloon klaar is met de implementatie. Een expressie kan een tekenreeks, een geheel getal, een booleaanse waarde of een object retourneren. In een sjabloon kunt u 256 parameters definiëren als het maximum.Nu we twee nieuwe parameters hebben gedefinieerd, gebruiken we deze in de sjabloon door vastgelegde waarden te vervangen door verwijzingen naar de nieuwe parameters.
Vervang de
name
enlocation
velden in de sectie Resources van de sjabloon om onze nieuwe parameters te gebruiken, zoals wordt weergegeven in het volgende fragment:"name": "[parameters('logicAppName')]", "location": "[parameters('location')]",
Vervang sectie
outputs
onder aan de sjabloon door de volgende code. We werken de waarde van delogicAppUrl
sjabloonvariabele bij om ook delogicAppName
parameter te gebruiken, zoals wordt weergegeven in het volgende codefragment:"outputs": { "logicAppUrl": { "type": "string", "value": "[listCallbackURL(concat(resourceId('Microsoft.Logic/workflows/', parameters('logicAppName')), '/triggers/manual'), '2017-07-01').value]" } }
Druk op Ctrl + S om uw wijzigingen op te slaan in template-with-params.json.
Een logische app-resource implementeren met de geparameteriseerde sjabloon
Er zijn twee manieren waarop we met vlag --parameters
in opdracht az deployment group create
de sjabloon tijdens de implementatie van parameters kunnen voorzien. We kunnen een URI van een extern parameterbestand of de naam van een lokaal bestand doorgeven. We gebruiken een lokaal bestand.
Een JSON-bestand met parameters maken
Maak een nieuw bestand met de naam
params.json
in de ingebouwde code-editor met de volgende opdracht:code params.json
Plak de volgende JSON in params.json en druk op Ctrl + S om uw wijzigingen op te slaan.
{ "logicAppName": { "value": "myLogicApp" } }
De sjabloon valideren
Voer vanuit Cloud Shell uit
az deployment group validate
om de sjabloon te valideren:az deployment group validate \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --template-file template-with-params.json \ --parameters @params.json
Argument
--template-file
verwijst naar de lokale sjabloon. De bestandsnaam van de sjabloon is template-with-params.json.U ziet een groot JSON-blok als uitvoer, waarmee wordt aangegeven dat de sjabloon is gevalideerd.
Azure Resource Manager vult de sjabloonparameters in en controleert of de sjabloon met succes kan worden uitgevoerd in uw abonnement.
Als de validatie is mislukt, ziet u een gedetailleerde beschrijving van de fout in de uitvoer.
De sjabloon implementeren met parameters uit een lokaal bestand
Voer in Cloud Shell de volgende opdracht uit om de resource van de logische app te implementeren met de naam van de app uit het params.json-bestand . In het bestand params.json is de
location
parameter niet ingesteld, dus de standaardwaarde wordt gebruikt.az deployment group create \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --template-file template-with-params.json \ --parameters @params.json
De implementatie duurt even en u kunt de voortgang bekijken in de Cloud Shell-opdrachtregel. Als de implementatie geslaagd is, ziet u
provisioningState
in het JSON-resultaat met de waardeSucceeded
.Als u de app in werking wilt zien, zoekt u de waarde logicAppUrl in het JSON-resultaat. Selecteer de URL of kopieer en plak deze in een nieuw browservenster. Op de pagina wordt het bericht Hello Azure Logic Apps Template! weergegeven.
De sjabloon implementeren met parameters vanaf de opdrachtregel
In plaats dat we elke keer een parameterbestand bewerken als we gaan implementeren vanaf de opdrachtregel, kunnen we de parameters aan een JSON-tekenreeks in de opdrachtregel toevoegen.
Voer de volgende opdracht uit in Cloud Shell om de logische app-resource te implementeren met de naam van de app en de locatie die wordt ingevoerd als een JSON-tekenreeks op de opdrachtregel:
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"}}'
De implementatie duurt even en u kunt de voortgang bekijken in de Cloud Shell-opdrachtregel. Als de implementatie geslaagd is, ziet u
provisioningState
in het JSON-resultaat met de waardeSucceeded
.Als u de app in werking wilt zien, zoekt u de waarde logicAppUrl in het JSON-resultaat. Selecteer de URL en plak deze in een nieuw browservenster. Op de pagina wordt het bericht Hello Azure Logic Apps Template! weergegeven.
Voer de volgende opdracht uit om alle Azure Logic Apps-werkstromen weer te geven die we tot nu toe hebben geïmplementeerd:
az resource list \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --resource-type Microsoft.Logic/workflows \ --query [*].[name,location] --output tsv
Met deze opdracht worden de twee Azure Logic Apps-werkstromen vermeld die we tot nu toe hebben geïmplementeerd, allemaal van een sjabloon.
De app-actie bijwerken in de Azure Resource Manager-sjabloon
We gaan er nu voor zorgen dat de app iets meer kan doen dan alleen maar een statisch bericht verzenden. We bewaren de app als een door HTTP geactiveerde werkstroom, die nog steeds een HTTP-antwoord retourneert. Laten we enkele waarden doorgeven aan de aanvraag en de app laten berekenen. We voeren een basisberekening van het gebied uit. Aangenomen dat de doorgegeven invoerwaarden de hoogte en breedte van een rechthoek zijn, wordt het oppervlak geretourneerd. Vervolgens implementeren we de nieuwe app en kijken we hoe deze wordt uitgevoerd.
Open template-with-params.json in de ingebouwde editor door de volgende opdracht uit te voeren in Cloud Shell:
code template-with-params.json
Voeg het
relativePath
veld toe aan de invoersectie van de HTTP-aanvraagtrigger, zoals wordt weergegeven in het volgende fragment:"inputs": { "method": "GET", "relativePath": "{width}/{height}", "schema": {} }
Met de ingang
relativePath
worden de parameters opgegeven die door de HTTP-eindpunt-URL moeten worden geaccepteerd. In dit geval definiëren we twee parameters, width en height. We gebruiken deze parameterwaarden om een gebied te berekenen en het resultaat te retourneren.Werk de hoofdtekst van de actie Antwoord bij met de volgende regel:
"body": "Response from @{workflow().name} Total area = @{mul( int(triggerOutputs()['relativePathParameters']['height']) , int(triggerOutputs()['relativePathParameters']['width']) )}",
Ons bijgewerkte antwoord voert de volgende taken uit:
Hiermee wordt de naam van de resource van de logische app afgedrukt. Het antwoord roept de
workflow()
functie aan om informatie over de werkstroom te retourneren. Vanuit dat resultaat verwijzen we naar de naameigenschap.Retourneert het product van de equivalenten voor gehele getallen voor de tekenreekswaarden voor hoogte en breedte van de URL-parameters. Deze taak maakt gebruik van de
mul()
functie enint()
conversiefunctie.
Druk op Ctrl + S om uw wijzigingen op te slaan in template-with-params.json.
Valideer de sjabloon na deze wijzigingen met de
az deployment group validate
opdracht in Cloud Shell. In dit voorbeeld stellen we de naam van de app in op CalculateArea met behulp van een inlineparameter.az deployment group validate \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --template-file template-with-params.json \ --parameters '{ "logicAppName": {"value":"CalculateArea"}}'
Voer de volgende opdracht uit om de wijzigingen te implementeren in een logische app met de naam CalculateArea. We laten een waarde voor de
location
parameter weg en gebruiken alleen de standaardwaarde.az deployment group create \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --template-file template-with-params.json \ --parameters '{ "logicAppName": {"value":"CalculateArea"}}'
De implementatie duurt even, maar u kunt de voortgang bekijken in de Cloud Shell-opdrachtregel. Als de implementatie geslaagd is, ziet u
provisioningState
in het JSON-resultaat met de waardeSucceeded
.Als u de app in werking wilt zien, zoekt u de waarde logicAppUrl in het JSON-resultaat. Selecteer de URL en plak deze in een nieuw browservenster.
Werk de URL bij in de browser door
/triggers/manual/paths/invoke?api
in/triggers/manual/paths/invoke/{width}/{height}?api
te wijzigen, waarbij {width} en {height} de heeltallige waarden zijn voor de breedte en hoogte van de te berekenen oppervlakte. Bijvoorbeeld:/triggers/manual/paths/invoke/6/7?api
. In het antwoord van de app wordt de naam van de werkstroom en het berekende gebied weergegeven, zoals wordt weergegeven in de volgende schermopname:Notitie
Zorg ervoor dat u alleen de onderdelen van de URL waarnaar wordt verwezen in de vorige stap vervangt. Laat alle tekst aan beide zijden staan.
Voer de volgende opdracht uit om alle Azure Logic Apps-werkstromen weer te geven die we tot nu toe hebben geïmplementeerd:
az resource list \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --resource-type Microsoft.Logic/workflows \ --query [*].[name,location] --output tsv
In deze oefening hebben we meer flexibiliteit voor de sjabloon geïntroduceerd door middel van parameters. We hebben deze parameters opgegeven op de opdrachtregel en met behulp van een lokaal bestand. We hebben ook de actie bijgewerkt die door onze eenvoudige werkstroom wordt uitgevoerd door het body
antwoord dat we terugsturen rechtstreeks te wijzigen.
U kunt in Cloud Shell met de volgende curl
-opdrachten de parameters en sjabloonbestanden downloaden vanuit GitHub.
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