Übung: Bereitstellen und Exportieren eines Azure Logic Apps-Workflows mithilfe einer ARM-Vorlage

Abgeschlossen

In der vorherigen Übung haben Sie eine Logik-App mithilfe einer einfachen Azure Resource Manager-Vorlage bereitgestellt. Diese Vorlage war nicht flexibel, weil alles hartcodiert war. Um beispielsweise den Workflownamen oder den Bereitstellungsort der App zu ändern, müssen Sie die Vorlage bearbeiten. In Szenarien, in denen Sie mehrere Bereitstellungen in einer Skriptumgebung durchführen, stellt sich das manuelle Bearbeiten der Vorlage schnell als umständlich heraus. Ein besserer Ansatz besteht darin, Werte als Parameter bereitzustellen, um die Bereitstellung von Ressourcen anzupassen.

Aktualisieren der Vorlage zur Verwendung von Vorlagenparametern

  1. Kopieren Sie die einfache Vorlage, die Sie in der vorherigen Übung verwendet haben, mit dem Befehl cp:

    cp basic-template.json template-with-params.json
    
  2. Öffnen Sie die Vorlage mithilfe des folgenden Befehls code im integrierten Editor:

    code template-with-params.json
    

    Als Erstes fügen Sie Parameter hinzu, damit Sie den Namen und Ausführungsort der App einfach anpassen können.

  3. Ersetzen Sie den Abschnitt parameters in der Vorlage durch den folgenden Codeausschnitt, der die beiden neuen Parameter logicAppName und location hinzufügt:

    "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."
            }
        }
    },
    

    Bei beiden Parametern handelt es sich um Zeichenfolgen. Für den logicAppName-Parameter muss kein Standardwert angegeben werden, weshalb Sie einen zum Zeitpunkt der Bereitstellung angeben müssen. location ist hingegen optional, da Sie einen Standardwert bereitstellen.

    Der Standardwert für den location-Parameter entspricht dem Standort der Ressourcengruppe, in der die App bereitgestellt wird. Diesen Wert können Sie abrufen, indem Sie auf die Eigenschaft location der Ressourcengruppe verweisen, die von der Vorlagenfunktion resourceGroup() zurückgegeben wird. Ausdrücke beginnen und enden mit öffnenden bzw. schließenden eckigen Klammern ([ ]). Der Wert des Ausdrucks wird ausgewertet, wenn die Vorlage die Bereitstellung abgeschlossen hat. Ein Ausdruck kann eine Zeichenfolge, einen Integer, einen booleschen Wert, ein Array oder ein Objekt zurückgeben. Sie können in einer Vorlage maximal 256 Parameter definieren.

    Nachdem Sie die beiden neuen Parameter definiert haben, können Sie sie in der Vorlage verwenden, indem Sie die hartcodierten Werte durch Verweise auf die neuen Parameter ersetzen.

  4. Ersetzen Sie die Felder name und location im Abschnitt „resources“ der Vorlage, um die neuen Parameter wie im folgenden Codeschnipsel zu verwenden:

    "name": "[parameters('logicAppName')]",
    "location": "[parameters('location')]",
    
  5. Ersetzen Sie den Abschnitt outputs am unteren Ende der Vorlage durch den folgenden Code. Der Wert der Variable logicAppUrl der Vorlage wird hier ebenfalls wie im folgenden Codeausschnitt geändert, damit der logicAppName-Parameter verwendet wird:

    "outputs": {
        "logicAppUrl": {
           "type": "string",
           "value": "[listCallbackURL(concat(resourceId('Microsoft.Logic/workflows/', parameters('logicAppName')), '/triggers/manual'), '2017-07-01').value]"
        }
     }
    
  6. Drücken Sie STRG + S, um alle Änderungen an template-with-params.json zu speichern.

Bereitstellen der Logik-App-Ressource mithilfe der parametrisierten Vorlage

Es gibt zwei Wege, die Parameter für die Vorlage während der Bereitstellung mithilfe des --parameters-Flags im az deployment group create-Befehl anzugeben. Sie können einen URI einer Remoteparameterdatei oder den Namen einer lokalen Datei übergeben. Für diese Übung verwenden Sie eine lokale Datei.

Erstellen einer JSON-Parameterdatei

  1. Erstellen Sie mithilfe des folgenden Befehls eine neue Datei namens params.json im integrierten Code-Editor:

    code params.json
    
  2. Fügen Sie den folgenden JSON-Code in die Datei params.json ein, und drücken Sie STRG + S, um Ihre Änderungen zu speichern.

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

Überprüfen der Vorlage

  1. Führen Sie az deployment group validate in Cloud Shell aus, um die Vorlage zu überprüfen:

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

    Das Argument --template-file verweist auf die lokale Vorlage. Der Dateiname der Vorlage lautet template-with-params.json.

    Ihnen wird ein großer JSON-Block als Ausgabe angezeigt, der Sie darüber informiert, dass die Vorlage die Überprüfung bestanden hat.

    Azure Resource Manager füllt die Vorlagenparameter aus und prüft, ob die Vorlage in Ihrem Abonnement erfolgreich ausgeführt werden kann.

    Wenn die Überprüfung fehlschlägt, wird Ihnen eine ausführliche Beschreibung des Fehlers in der Ausgabe angezeigt.

Bereitstellen der Vorlage mit Parametern über eine lokale Datei

  1. Führen Sie den folgenden Befehl in Cloud Shell aus, um die Logik-App-Ressource mit dem Namen der App aus der Datei params.json bereitzustellen. Der location-Parameter ist in der Datei params.json nicht festgelegt, weshalb der Standardwert verwendet wird.

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

    Die Bereitstellung dauert einen Moment. Sie können den Fortschritt in der Cloud Shell-Befehlszeile verfolgen. Nach Abschluss der Bereitstellung sollte provisioningState im JSON-Ergebnis mit dem Wert Succeeded angezeigt werden.

  2. Suchen Sie den Wert logicAppUrl im JSON-Ergebnis, um die App zu testen. Wählen Sie die URL aus oder kopieren Sie sie und fügen Sie sie in ein neues Browserfenster ein. Die Seite zeigt die Nachricht Hello Azure Logic Apps Template! (Hallo, Azure Logic Apps-Vorlage!) an.

Bereitstellen der Vorlage mit Parametern über die Befehlszeile

Anstatt jedes Mal eine Parameterdatei bearbeiten zu müssen, wenn Sie eine Bereitstellung über die Befehlszeile durchführen möchten, können Sie die Parameter in einer JSON-Zeichenfolge über die Befehlszeile bereitstellen.

  1. Führen Sie den folgenden Befehl in Cloud Shell aus, um die Logik-App-Ressource mit dem Namen und Ort der App als JSON-Zeichenfolge über die Befehlszeile bereitzustellen:

    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"}}'
    

    Die Bereitstellung dauert einen Moment. Sie können den Fortschritt in der Cloud Shell-Befehlszeile verfolgen. Nach Abschluss der Bereitstellung sollte provisioningState im JSON-Ergebnis mit dem Wert Succeeded angezeigt werden.

  2. Suchen Sie den Wert logicAppUrl im JSON-Ergebnis, um die App zu testen. Kopieren Sie die URL, und fügen Sie sie in ein neues Browserfenster ein. Die Seite zeigt die Nachricht Hello Azure Logic Apps Template! (Hallo, Azure Logic Apps-Vorlage!) an.

  3. Führen Sie den folgenden Befehl aus, um alle Azure Logic Apps-Workflows aufzulisten, die Sie bisher bereitgestellt haben:

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

    Durch diesen Befehl werden die zwei Azure Logic Apps-Workflows aufgelistet, die Sie bisher aus einer Vorlage bereitgestellt haben.

Aktualisieren der App-Aktion in der Azure Resource Manager-Vorlage

Als Nächstes kümmern Sie sich darum, dass die App etwas mehr tut, als nur eine statische Nachricht zurückzugeben. Die App umfasst weiterhin einen durch HTTP ausgelösten Workflow und gibt eine HTTP-Antwort zurück. Zunächst sollen jedoch einige Werte mit der Anforderung übergeben werden, damit die App eine Berechnung durchführen kann. Dazu integrieren Sie eine einfache Flächenberechnung. Sofern mit der Eingabe die Höhe und Breite eines Rechtecks übergeben werden, wird die Fläche zurückgegeben. Anschließend stellen Sie die neue App bereit und überprüfen ihre Ausführung.

  1. Öffnen Sie die Datei template-with-params.json im integrierten Editor, indem Sie den folgenden Befehl in Cloud Shell ausführen:

    code template-with-params.json
    
  2. Fügen Sie das Feld relativePath zum Abschnitt Eingaben des HTTP-Anforderungstriggers wie im folgenden Codeausschnitt gezeigt hinzu:

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

    Mit dem Eintrag relativePath werden die Parameter festgelegt, die von der HTTP-Endpunkt-URL akzeptiert werden sollen. In diesem Fall definieren Sie die zwei Parameter width und height (Breite und Höhe). Die Werte dieser Parameter werden für die Berechnung einer Fläche verwendet, und das Ergebnis wird dann zurückgegeben.

  3. Fügen Sie die folgende Zeile in den Text der Antwortaktion ein:

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

    Die aktualisierte Antwort führt die folgenden Aufgaben aus:

    • Der Name der Logik-App-Ressource wird ausgegeben. Die Antwort ruft die workflow()-Funktion auf, um Informationen zum Workflow zurückzugeben. In diesem Ergebnis wird auf die name-Eigenschaft verwiesen.

    • Das Produkt der entsprechenden Integer für die Zeichenfolgenwerte von „height“ und „width“ aus den URL-Parametern wird zurückgegeben. Diese Aufgabe verwendet die mul()-Funktion und die int()-Konvertierungsfunktion.

  4. Drücken Sie STRG + S, um alle Änderungen an template-with-params.json zu speichern.

  5. Überprüfen Sie nach diesen Änderungen die Vorlage mithilfe des Befehls az deployment group validate in Cloud Shell. In diesem Beispiel legen Sie den Namen der App mithilfe eines Inlineparameters auf CalculateArea fest.

    az deployment group validate \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --template-file template-with-params.json \
    --parameters '{ "logicAppName": {"value":"CalculateArea"}}'
    
  6. Führen Sie den folgenden Befehl aus, um die Änderungen an der Logik-App namens CalculateArea bereitzustellen. Lassen Sie den Wert für den location-Parameter aus, damit der Standardwert verwendet wird.

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

    Die Bereitstellung dauert einen Moment, aber Sie können den Fortschritt in der Cloud Shell-Befehlszeile verfolgen. Nach Abschluss der Bereitstellung sollte provisioningState im JSON-Ergebnis mit dem Wert Succeeded angezeigt werden.

  7. Suchen Sie den Wert logicAppUrl im JSON-Ergebnis, um die App zu testen. Kopieren Sie die URL, und fügen Sie sie in ein neues Browserfenster ein.

  8. Ändern Sie die URL im Browser, indem Sie /triggers/manual/paths/invoke?api in /triggers/manual/paths/invoke/{width}/{height}?api ändern. Für {width} und {height} fügen Sie ganzzahlige Werte für die Breite und Höhe der zu berechnenden Fläche ein. Beispielsweise /triggers/manual/paths/invoke/6/7?api. In der Antwort der App werden wie im folgenden Screenshot gezeigt der Name des Workflows und die berechnete Fläche aufgelistet:

    Screenshot des Webbrowser mit der Antwort der CalculateArea-App.

    Hinweis

    Stellen Sie sicher, dass sie nur die referenzierten Teile der URL im vorherigen Schritt ersetzen. Lassen Sie den gesamten Text auf beiden Seiten wie besehen.

  9. Führen Sie den folgenden Befehl aus, um alle Azure Logic Apps-Workflows aufzulisten, die Sie bisher bereitgestellt haben:

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

In dieser Übung haben Sie die Flexibilität Ihrer Vorlage mit Parametern erweitert. Diese Parameter haben Sie mithilfe einer lokalen Datei und mit der Befehlszeile bereitgestellt. Außerdem haben Sie die Aktion des einfachen Workflows angepasst, indem Sie das body-Element der zurückgegebenen Antwort direkt bearbeitet haben.

Sie können die hier gezeigten Parameter und Vorlagendateien mithilfe der folgenden curl-Befehle über Cloud Shell von GitHub herunterladen.

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