Oefening: een Azure Logic Apps-werkstroom implementeren en exporteren met behulp van een ARM-sjabloon

Voltooid

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

  1. Kopieer de basissjabloon die we in de vorige oefening hebben gebruikt met de volgende cp opdracht:

    cp basic-template.json template-with-params.json
    
  2. 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.

  3. Vervang de parameters sectie in de sjabloon door het volgende codefragment, waarmee twee nieuwe parameters worden toegevoegd en logicAppNamelocation:

    "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 omdat location 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 sjabloonfunctie resourceGroup() 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.

  4. Vervang de name en location 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')]",
    
  5. Vervang sectie outputs onder aan de sjabloon door de volgende code. We werken de waarde van de logicAppUrl sjabloonvariabele bij om ook de logicAppName 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]"
        }
     }
    
  6. 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

  1. Maak een nieuw bestand met de naam params.json in de ingebouwde code-editor met de volgende opdracht:

    code params.json
    
  2. Plak de volgende JSON in params.json en druk op Ctrl + S om uw wijzigingen op te slaan.

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

De sjabloon valideren

  1. 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

  1. 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 waarde Succeeded.

  2. 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.

  1. 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 waarde Succeeded.

  2. 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.

  3. 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.

  1. Open template-with-params.json in de ingebouwde editor door de volgende opdracht uit te voeren in Cloud Shell:

    code template-with-params.json
    
  2. 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.

  3. 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 en int() conversiefunctie.

  4. Druk op Ctrl + S om uw wijzigingen op te slaan in template-with-params.json.

  5. 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"}}'
    
  6. 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 waarde Succeeded.

  7. 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.

  8. 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:

    Sceenshot van webbrowser met reactie van onze app met de naam calculate area.

    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.

  9. 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