Übung: Bereitstellen und Exportieren eines Azure Logic Apps-Workflows mithilfe einer ARM-Vorlage
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
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
Ö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.
Ersetzen Sie den Abschnitt
parameters
in der Vorlage durch den folgenden Codeausschnitt, der die beiden neuen ParameterlogicAppName
undlocation
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 VorlagenfunktionresourceGroup()
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.
Ersetzen Sie die Felder
name
undlocation
im Abschnitt „resources“ der Vorlage, um die neuen Parameter wie im folgenden Codeschnipsel zu verwenden:"name": "[parameters('logicAppName')]", "location": "[parameters('location')]",
Ersetzen Sie den Abschnitt
outputs
am unteren Ende der Vorlage durch den folgenden Code. Der Wert der VariablelogicAppUrl
der Vorlage wird hier ebenfalls wie im folgenden Codeausschnitt geändert, damit derlogicAppName
-Parameter verwendet wird:"outputs": { "logicAppUrl": { "type": "string", "value": "[listCallbackURL(concat(resourceId('Microsoft.Logic/workflows/', parameters('logicAppName')), '/triggers/manual'), '2017-07-01').value]" } }
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
Erstellen Sie mithilfe des folgenden Befehls eine neue Datei namens
params.json
im integrierten Code-Editor:code params.json
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
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
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 WertSucceeded
angezeigt werden.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.
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 WertSucceeded
angezeigt werden.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.
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.
Ö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
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.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 dieint()
-Konvertierungsfunktion.
Drücken Sie STRG + S, um alle Änderungen an template-with-params.json zu speichern.
Ü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"}}'
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 WertSucceeded
angezeigt werden.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.
Ä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: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.
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