Anterovium - Fotolia

PowerShell-Scripting für Azure Functions

Functions ist ein Cloud-Service in Azure, der ereignisgesteuerte Architekturen ermöglicht. Diese Tipps helfen bei der Nutzung von Azure Functions per PowerShell.

Functions-as-a-Service-Angebote wie Azure Functions sind wenig mehr als bloßer Code. Und trotzdem profitieren nicht nur Entwickler davon, weil sich über verschiedene Skriptsprachen auch für Administratoren durchaus interessante Möglichkeiten ergeben.

Scripting für Azure Functions

Azure Functions ist eine Sammlung an Komponenten ereignisgesteuerter Architektur, die mit anderen Azure-Services kommunizieren können. Nützlich ist diese Art Cloud-Service vor allem für asynchrone Aufgaben wie Datenaggregation und –verarbeitung, die Verarbeitung von Prozessen und anderer Daten-Pipelines sowie für Microservices und die Cloud-Service-Integration.

Da derartige Funktionen ohne Infrastruktur auskommen und ereignisgesteuert und damit sehr leichtgewichtig sind, eignen sie sich vor allem auch für die Integration und das Scripting von Legacy-Anwendungen. Die Möglichkeit, bekannte Sprachen wie PowerShell, Python und Node.js zu verwenden, begünstigt dies zusätzlich.

Da natürlich vor allem die PowerShell bei Windows- und Azure-Anwendern bekannt und populär ist, konzentrieren sich die folgenden Best-Practice-Tipps vor allem auf Microsofts eigene Skriptsprache.

PowerShell für Azure Functions

Die ursprüngliche Implementierung der PowerShell für Azure Functions basiert auf der PowerShell 4 und bietet lediglich Unterstützung für Skripte (PS1-Dateien), nicht aber für Module (PSM1-Dateien). Damit eignet sich die PowerShell mit Blick auf Azure Functions vor allem für einfache Aufgaben.

Um aber auch PowerShell-Module in Azure Functions verwenden zu können, kann die Umgebungsvariable PSModulepath so angepasst werden, dass sie auf einen Ordner mit angepassten Modulen verweist und sich über FTP verbindet.

PowerShell-Support wird weiter ausgebaut

Die PowerShell-Unterstützung für Azure Functions wurde 2016 im Rahmen des Azure WebJobs SDK eingeführt und wird bis heute als Preview betrachtet. Ein mögliches Problem besteht zum Beispiel darin, dass das Sandbox-Sicherheitsmodell, das für die Auslieferung von Azure Functions als Shared Service benötigt wird, nicht mit dem übereinstimmt, wie viele PowerShell-Anwender mit ihrer Umgebung interagieren. So zumindest ein Microsoft-Entwickler auf Github.

Bis der PowerShell-Support weiter ausgebaut wird, empfiehlt selbst Microsoft, statt Azure Functions vorerst lieber Azure Automation zu verwenden. Trotzdem kann Azure Functions schon heute für viele interessante Applikationsszenarien verwendet werden.

Wenn Skripte verwendet werden, sollten Daten über Datei- oder Umgebungsvariablen an PowerShell-Funktionen weitergegeben werden, weil Funktionen die Laufzeitumgebung weder speichern noch cachen. Eintreffende Daten für eine Funktion, etwa über Event Trigger oder über Input-Bindings, werden über Dateien weitergegeben, die in der PowerShell über Umgebungsvariablen genutzt werden können. Die gleiche Vorgehensweise gilt auch für den Output von Daten. Eingehende Daten liegen in einer unbearbeiteten Datei vor und müssen entsprechend zunächst geparsed werden. PowerShell-Funktionen formatieren Daten zwar nicht selbst, unterstützen aber die gängigsten Formate, etwa:

  • string
  • int
  • bool
  • object/JavaScript Object Notation
  • binary/buffer
  • stream oder
  • HTTP

Wie in Abbildung 1 zu sehen, können PowerShell-Funktionen über HTTP-Requests, eine Azure Service-Queue oder einen Timer ausgelöst werden. Azure Functions können über das Azure-Portal, Visual Studio (allerdings lediglich mit C#) oder einem lokalen Code-Editor und einer Entwicklungsumgebung erstellt werden. Das Azure-Portal stellt hierbei aber die einfachste Variante dar.

PowerShell-Trigger für Azure Functions.
Abbildung 1: PowerShell-Trigger für Azure Functions.

PowerShell und Azure Functions

Azure Functions funktioniert in der gleichen Weise, egal ob hierfür C#, PowerShell oder Python zum Einsatz kommt, wodurch IT-Abteilungen die Sprache verwenden können, in der sowieso bereits Kenntnisse vorhanden sind. Der große Vorteil von Azure Functions liegt in der Integration mit anderen Azure-Services und in der eingebauten Laufzeitumgebung. Entsprechende Funktionen zu verwenden ist daher einfacher, als für verschiedene Aufgaben einzelne Anwendungen zu schreiben, beispielsweise für das Auslösen eines Webhooks über einen HTTP-Request.

Azure Functions und Logic Apps

Bei all der Begeisterung rund um Azure Functions stellt sich die Frage, wofür das neue Framework benötigt wird, wo Microsoft doch bereits Logic Apps anbietet, das sich ebenfalls an ereignisgesteuerte Architekturen richtet, aber eine grafische Benutzeroberfläche mit Drag-and-Drop-Funktion enthält. Auf den ersten Blick mögen sich beide Services überlappen, tatsächlich ergänzen sie sich aber vielmehr.

Azure Functions sind Code-Module, die von Events ausgelöst werden, während Logic Apps Workflows darstellen, die von einem Event ausgelöst werden. Logic Apps können dabei durchaus Azure Functions als Teil eines Workflows enthalten. Der Logic Apps Editor unterstützt das Erstellen und Debugging von Azure Functions, wodurch sämtliche Entwicklungsaufgaben in einer Umgebung durchgeführt werden können.

Logic Apps eignet sich vor allem für komplexe Workflows mit mehreren Applikationen, während Azure Functions vor allem auf Microservices oder Code-Module abzielt, die schnell ausgeführt werden und mit anderen Services integriert werden sollen.

Auch wenn die PowerShell einen attraktiven Weg für Windows-Teams darstellt, Azure Functions zu nutzen, so sollte man diesen Weg doch mit Vorsicht beschreiten, da die Unterstützung für Azure Functions durch die PowerShell noch in einer frühen Phase ist. Daher dürfte sich an den Details der Implementierung noch so einiges ändern, allerdings wohl immerhin zum besseren.

Folgen Sie SearchDataCenter.de auch auf Twitter, Google+, Xing und Facebook!

Artikel wurde zuletzt im September 2017 aktualisiert

Pro+

Premium-Inhalte

Weitere Pro+ Premium-Inhalte und andere Mitglieder-Angebote, finden Sie hier.

Erfahren Sie mehr über Public-Cloud-Infrastruktur

Diskussion starten

Schicken Sie mir eine Nachricht bei Kommentaren anderer Mitglieder.

Mit dem Absenden dieser Daten erklären Sie sich bereit, E-Mails von TechTarget und seinen Partnern zu erhalten. Wenn Ihr Wohnsitz außerhalb der Vereinigten Staaten ist, geben Sie uns hiermit Ihre Erlaubnis, Ihre persönlichen Daten zu übertragen und in den Vereinigten Staaten zu verarbeiten. Datenschutz

Bitte erstellen Sie einen Usernamen, um einen Kommentar abzugeben.

- GOOGLE-ANZEIGEN

SearchSecurity.de

SearchStorage.de

SearchNetworking.de

SearchEnterpriseSoftware.de

Close