2017-11-04 4 views
0

Ich habe eine Azure-Ressourcengruppe, die eine Azure Logic-Anwendung enthält, die eine Azure-Funktion aufruft.So machen Sie Azure-Funktionscode in Azure ARM lesbar json-Vorlage

Ich habe diese Ressourcengruppe als ARM-Vorlage exportiert, sodass ich die Ressourcen erneut in ein anderes Azure-Abonnement importieren kann. Das funktioniert gut, aber das Problem ist, dass der Azure-Funktionscode (100+ Zeilen-C# -Datei) in einer Zeile der JSON-ARM-Vorlagendatei enthalten ist. Dies macht es sehr schwer, die Azure-Funktion aus der Vorlage selbst zu lesen oder zu ändern.

Gibt es eine einfache Möglichkeit, dies zu umgehen? Im Idealfall würde sich meine Azure-Funktion in einer eigenen Datei (run.csx) befinden und die Azure JSON ARM-Vorlage würde nur auf diese externe Datei verweisen.

Hier ist mein JSON-Blob für die Funktionsressource in der ARM-Vorlage. Die Zeile, die run.csx für einen Schlüssel enthält, ist mein Anliegen. Wie kann ich diesen Code für Entwickler leichter lesbar machen?

{ 
    "apiVersion": "2015-08-01", 
    "name": "[concat(parameters('test_site_name'),'\/ProvisionUser')]", 
    "type": "Microsoft.Web\/sites\/functions", 
    "properties": { 
    "config": { 
     "bindings": [ 
     { 
      "authLevel": "function", 
      "name": "req", 
      "type": "httpTrigger", 
      "direction": "in" 
     }, 
     { 
      "name": "return", 
      "direction": "out", 
      "type": "http" 
     } 
     ] 
    }, 
    "files": { 
     "run.csx": "LOTS OF C# CODE HERE - LOTS OF C# CODE HERE FROM MY AZURE FUNCTION - LOTS OF C# CODE HERE FROM MY AZURE FUNCTION - LOTS OF C# CODE HERE FROM MY AZURE FUNCTION - LOTS OF C# CODE HERE FROM MY AZURE FUNCTION - LOTS OF C# CODE HERE FROM MY AZURE FUNCTION - LOTS OF C# CODE HERE FROM MY AZURE FUNCTION - ", 
     "project.json": "{\r\n \"frameworks\": {\r\n \"net46\": {\r\n  \"dependencies\": {\r\n  \"Microsoft.IdentityModel.Clients.ActiveDirectory\": \"3.13.8\",\r\n  \"Newtonsoft.Json\": \"10.0.2\",\r\n   \"Microsoft.Sdk.CoreAssemblies\" : \"8.2.0.2\"\r\n  }\r\n }\r\n }\r\n}" 
    } 
    } 
} 
+0

Am besten stellen Sie die Funktionsdateien über einige Cloud-gehostete Zip-Dateien mithilfe des msdeploy-Providers bereit, z. wie [this] (https://github.com/davidebbo/AzureWebsitesSamples/blob/master/ARMTemplates/FunctionsWebDeploy.json) –

+0

Zusätzlich können Sie über Source Control-Referenzen wie dieses Beispiel (Funktion und Logik-App) https: // github bereitstellen .com/Azure/azure-quickstart-templates/baum/master/101-logic-app-und-funktion-app – jeffhollan

+0

Danke, diese sehen nützlich aus, wird in diese Optionen schauen. –

Antwort

1

Sie haben einige Optionen:

  1. Quick Fix auf Ihre Frage: Führen Sie Ihre ARM-Vorlage durch einige Code-Formatierer. Wenn Sie versuchen, kopieren Sie die Vorlage in eine JSON-Datei in Visual Studio und dann STRG-K, STRG-D, um es automatisch zu formatieren. Ich habe das nicht versucht, aber es könnte funktionieren. Sie können den Code auch ausschneiden und formatieren, indem Sie eine beliebige Anzahl von Onlineformatierungstools verwenden oder Visual Studio verwenden.

  2. Stellen Sie Ihre Funktionen von einer source control system bereit. Behandeln Sie Ihre Infrastruktur und den Code separat. I.e. Erstellen Sie Ihren PaaS-Dienst aus Ihren ARM-Vorlagen, verwenden Sie dann jedoch einen CI/CD-Prozess, um den Code und die Konfiguration (die Funktionen) bereitzustellen.

  3. Umschließen Sie Ihren Code in einer Assembly, stellen Sie die Assembly auf Ihrem Funktions-Host bereit und verweisen Sie sie in Ihrer Funktion. Dies wird als externe Referenz (documentation here) bezeichnet und begrenzt die Menge des Codes in Ihrer Funktion auf die Installation, wobei Ihre Logik in einer separaten Assembly gespeichert wird. Sie müssen noch herausfinden, wie Sie die Assembly über ein Skript oder Ihren CI/CD-Prozess bereitstellen.

Kurz gesagt, und im Einklang mit den Bemerkungen zu Ihrer Frage, müssen Sie Ihre Azure Funktionsentwicklung mit ein wenig mehr Sorgfalt von einem Entwicklungsprozess Perspektive unterstützen. Dies wird noch kritischer, wenn Sie eine Reihe von Entwicklern an Ihren Funktionen arbeiten lassen.

Viel Glück!

Verwandte Themen