Getty Images

Übersicht Azure Functions: Ein Leidfaden für Admins

Mit Azure Functions nutzen Administratoren fortschrittliche Automatisierungsfunktionen, profitieren von verbesserten Sicherheitskontrollen und erstellen angepasste Workflows.

Microsoft-365-Administratoren haben viel zu tun. Azure Functions ist ein Tool mit fortschrittlichen Automatisierungs- und Integrationsfunktionen, das Ihnen dabei hilft, Ihre Arbeitsbelastung zu reduzieren.

Eine der wichtigsten Funktionen von Azure Functions ist die Fähigkeit, auf bestimmte Situationen zu achten und mit einer Aktion oder einer Benachrichtigung zu reagieren. Wenn Administratoren verstehen, wie dieser Dienst genutzt wird, erhalten sie eine neue Möglichkeit, innovative Ansätze für Routineaufgaben zu entwickeln und sich nicht in Arbeit zu verlieren, die schnell und effizienter durch Automatisierung erledigt werden kann.

Was ist Azure Functions?

Azure Functions ist ein serverloser Computing-Dienst für Kunden, die automatische Reaktionen auf verschiedene Ereignisse erstellen möchten, ohne die zugrunde liegende Infrastruktur explizit verwalten zu müssen. Eine Azure Function führt Code als Reaktion auf eine Vielzahl von Ereignissen in den Cloud-basierten Produkten von Microsoft aus, zum Beispiel wenn ein neuer Benutzer in Microsoft Entra ID, ehemals Azure Active Directory, erstellt wird oder eine Datei in einem OneDrive-Ordner abgelegt wird.

Mit Azure Functions müssen Sie keine Infrastruktur verwalten, sodass sich kleine zweckgebundene Funktionen, die bedarfsgerecht skalierbar sind, einfach ausführen lassen. Azure Functions unterstützt mehrere Programmiersprachen, darunter C#, Java, JavaScript, TypeScript, Python und PowerShell, und ist somit eine flexible Option für verschiedene Anwendungen.

Microsoft verwendet für Azure Functions ein verbrauchsbasiertes Modell, das sich nach den für die Ausführung der Funktion verwendeten Ressourcen richtet. Die genauen Kosten hängen von aktuellen Microsoft-Tarifen ab. Eine einfache Überwachungsfunktion, die prüft, ob eine Datei auf SharePoint Online hochgeladen wurde, und dann eine E-Mail sendet, sollte aber regelmäßig überprüft werden, um unvorhergesehene Ausgaben zu vermeiden.

Wie können Microsoft-Admins von der Verwendung von Azure Functions profitieren?

Admins müssen die IT-Infrastruktur so effizient und sicher wie möglich an den Geschäftszielen ausrichten. In diesem Zusammenhang bietet Azure Functions mehrere Vorteile, um diese Ziele zu erreichen:

  • Effizienz und Kosteneinsparungen: Microsoft verwendet ein Pay-as-you-go-Preismodell für Azure Functions. Für Unternehmen fallen nur dann Kosten an, wenn Funktionen ausgeführt werden. Durch optimierte Nutzung und Monitoring können unerwartete Kosten vermieden werden.
  • Skalierbarkeit: Die serverlose Architektur skaliert die Ressourcen dynamisch, um Spitzen in der Arbeitslast ohne Eingriffe zu bewältigen.
  • integrierte Sicherheit: Mit Microsoft Entra ID und anderen Microsoft-Tools können Administratoren mit Azure Functions Sicherheits- und Compliance-Richtlinien auf serverlose Applikationen anwenden. Alternativ können Managed Identities genutzt werden, um die Authentifizierung sicherer zu gestalten.
  • optimierte Arbeitsabläufe: Azure Functions verbindet sich mit anderen Azure-Diensten und externen Ressourcen über Auslöser und Bindungen, um Arbeitsabläufe zu automatisieren und den Bedarf an manuellen Eingriffen zu reduzieren.
  • Flexibilität bei der Entwicklung: Azure Functions unterstützt viele Programmiersprachen, um Administratoren die Entwicklung und Bereitstellung von benutzerdefinierten Funktionen zur Durchführung einer Vielzahl von Aufgaben zu erleichtern.

Azure Functions verstehen

 Um zu verstehen, wie Azure Functions in das Microsoft-Ökosystem passt, ist es hilfreich, es mit anderen Diensten zu vergleichen, die Admins für die Verwaltung nutzen können:

  • Azure Logic Apps ist ein Dienst zur Erstellung automatisierter Workflows, die Anwendungen, Daten, Dienste und Systeme integrieren. Seine visuelle Designerfunktion erleichtert die Erstellung von Workflows für Benutzer ohne Programmierkenntnisse. Azure Logic Apps ist ideal für die Verbindung verschiedener Systeme und Dienste, einschließlich SaaS-Anwendungen und benutzerdefinierter APIs.
  • Azure Automation ist ein Cloud-basierter Automatisierungs- und Konfigurationsdienst, der für die konsistente Verwaltung von Azure- und nicht-Azure-Umgebungen entwickelt wurde. Er ist in erster Linie für die Automatisierung sich wiederholender Aufgaben wie Bereitstellungen, Umgebungseinrichtung und Konfigurationsverwaltung mithilfe von PowerShell- und Python-Skripten gedacht.
  • Microsoft Graph ist ein einheitlicher API-Endpunkt, der Anwendungen den Zugriff auf Daten, Beziehungen und Einblicke über Microsoft-365-Dienste und -Anwendungen hinweg ermöglicht. Azure Functions nutzt Microsoft Graph, um die Daten ereignisgesteuert zu verarbeiten und auf bestimmte Auslöser oder Änderungen zu reagieren. Microsoft Graph API erfordert teilweise Abonnements für erweiterte Funktionen.
  • Die Azure- und Microsoft-365-Portale sind GUI-basierte Tools zur Verwaltung von Diensten, Benutzern und Konfigurationen. Sie werden hauptsächlich für administrative Aufgaben und Einstellungsanpassungen verwendet.

Was sind die Vorteile von Azure Functions für Microsoft-365-Administratoren?

Wie bereits thematisiert, Azure Functions bietet eine Reihe von Vorteilen, die es ideal für Microsoft-365-Administratoren machen, die effizientere, sicherere und angepasste Arbeitsabläufe für ihre Organisationen erstellen möchten. Azure Functions automatisiert komplizierte Aufgaben in Microsoft-365-Umgebungen und führt Code als Reaktion auf Ereignisse aus, was über die Möglichkeiten von Standardautomatisierungs-Tools hinausgeht.

Administratoren können maßgeschneiderte Routinen erstellen, die durch bestimmte Ereignisse in Microsoft 365 ausgelöst werden, zum Beispiel eingehende E-Mails, Kalenderereignisse oder Änderungen in SharePoint-Dokumenten.

Azure Functions unterstützt eine breite Palette von Programmiersprachen und verbindet nahtlos mehrere Azure-Dienste und externe APIs. Das ermöglicht die Erstellung von Integrationen.

Azure Functions hebt sich von den anderen Plattformdiensten durch seine Anpassungsmöglichkeiten ab. Administratoren können Code schreiben, um Datentransformationen durchzuführen, Dienste von Drittanbietern zu integrieren oder komplexe Arbeitsabläufe zu automatisieren, die mehrere Schritte und bedingte Logik enthalten.

Auch die Datenverarbeitung in Echtzeit wird erleichtert, um sofort auf Datenänderungen oder Systemereignisse reagieren zu können und eine schnelle und effiziente Ausführung automatisierter Aufgaben zu gewährleisten. Die Sicherheitsfunktionen von Azure Functions bewahren den Schutz und die Integrität von Daten in Microsoft-365-Umgebungen. Azure Functions arbeitet in einer isolierten Umgebung, um zu verhindern, dass die Codeausführung die Sicherheit oder Leistung anderer Dienste beeinträchtigt. Außerdem ist Azure Functions mit Microsoft Entra ID integriert und unterstützt rollenbasierte Zugriffskontrolle, um Administratoren die Möglichkeit zu geben, Sicherheitsrichtlinien und Berechtigungen für den Zugriff auf und die Verwaltung von Funktionen zu definieren. Darüber hinaus erfüllt Azure Functions die Datenschutz- und Compliance-Standards von Microsoft und ist damit ideal für Szenarien mit sensiblen Daten.

Was sind mögliche Nachteile von Azure Functions?

Obwohl Azure Functions ein umfassendes Framework für die Erstellung und Verteilung ereignisbasierter Anwendungen ist, gibt es einige potenzielle Nachteile, wie zum Beispiel die Komplexität serverloser Architekturen, Schwierigkeiten bei der Integration in aktuelle Systeme und die mit Cloud-Diensten verbundenen Kosten.

Einige IT-Teams könnten Schwierigkeiten haben, Azure Functions zu übernehmen. Um diesen Dienst optimal nutzen zu können, sind ein solides Verständnis des serverlosen Modells, der ereignisgesteuerten Architektur und ein Verständnis der spezifischen Funktionen und Einschränkungen erforderlich. Ein serverloses Modell erfordert von Administratoren eine andere Denkweise in Bezug auf Architektur, Skalierbarkeit und Statusverwaltung.

Das Debuggen von serverlosen Anwendungen kann aufgrund ihrer verteilten Natur komplexer sein. Application Insights kann hier helfen, Fehler zu identifizieren und das Debugging zu erleichtern. Ebenso erfordert eine effektive Überwachung die Vertrautheit mit Azure-spezifischen Tools und Verfahren. Azure Functions bietet zwar umfangreiche Integrationsmöglichkeiten mit Azure-Diensten und externen Systemen, die Anbindung an die bestehende Infrastruktur kann jedoch sehr aufwendig sein, insbesondere bei komplexen Altsystemen oder Drittanbieterdiensten, die nicht für serverlose Architekturen ausgelegt sind. Hybrid Connections in Azure App Services können helfen, Altsysteme einzubinden.

Obwohl Azure Functions ein verbrauchsabhängiges Preismodell verwendet, kann der Versuch, die Kosten zu verstehen und zu verwalten, ein potenzieller Nachteil sein. Die Kosten variieren je nach Ausführungszeit, Anzahl der Ausführungen und Ressourcenverbrauch. Ohne sorgfältige Planung und Überwachung können Organisationen höhere Kosten als erwartet haben. Durch Monitoring-Tools wie Azure Cost Management können Unternehmen ihre Ausgaben im Blick behalten.

Wie Administratoren Azure Functions nutzen

Microsoft-365-Administratoren erstellen skalierbare, ereignisgesteuerte Anwendungen, indem sie sich über das Azure-Portal oder mit Visual Studio Code (VS Code) mit Azure Functions verbinden.

Auslöser, ein grundlegendes Konzept in Azure Functions, bestimmen, wann und wie eine Funktion ausgelöst wird. Jeder Funktion ist ein bestimmter Auslösertyp zugeordnet, zum Beispiel eine HTTP-Anforderung, eine Nachricht in einer Warteschlange oder ein Timer. HTTP-Auslöser aktivieren Ihre Funktion durch HTTP-Anforderungen und eignen sich daher für die Erstellung von APIs und Webhooks. Timer-Auslöser planen die Ausführung von Funktionen in definierten Intervallen, was sich perfekt für regelmäßige Wartungsaufgaben oder die Stapelverarbeitung eignet. Warteschlangenauslöser reagieren auf Nachrichten, die in Azure Queue Storage abgelegt werden.

Microsoft bietet eine Reihe von Vorlagen für gängige Szenarien, die vordefinierten Code und Konfigurationseinstellungen enthalten. Sie wählen Vorlagen basierend auf dem beabsichtigten Auslöser und der bevorzugten Sprache aus, wenn Sie eine neue Funktion im Azure-Portal erstellen. Die Erweiterung Azure Functions für VS Code bietet auch die Erstellung von Funktionen auf Vorlagenbasis, wodurch der Entwicklungsprozess optimiert wird.

Verwendung von Azure Functions mit PowerShell

Im folgenden Beispiel wird das Azure-Portal zum Erstellen und Verwalten einer Azure Function verwendet. Für dieses Beispiel müssen Sie das PnP-PowerShell-Modul verwenden, vorausgesetzt, Ihre Umgebung vertraut diesem bereits. Wenn nicht, lesen Sie bitte die folgende Dokumentation, um Register-PnPManagementShellAccess auszuführen.

Hier sind die Schritte:

1. Melden Sie sich mit Ihrem Microsoft-Konto beim Azure-Portal an.

2. Gehen Sie zu Eine Ressource erstellen (Create a resource), suchen Sie nach Function App und folgen Sie dem Assistenten, um eine neue Functions App zu erstellen. Sie müssen Details wie Ihr Abonnement (Subscription), Ihre Ressourcengruppe (Resource Group), den Namen der Functions App (Function App name) und den Runtime Stack angeben.

Erstellung der Azure-Funktion im Azure-Portal
Abbildung 1: Beginnen Sie mit der Erstellung der Azure-Funktion im Azure-Portal.

3. Sobald Sie die Functions App erstellt haben, können Sie neue Funktionen direkt im Portal hinzufügen.

4. Klicken Sie in der linken Navigationsleiste auf App-Dateien (App Files).

5. Ändern Sie die Dropdown-Liste in profile.ps1, kommentieren Sie die folgenden Zeilen aus und klicken Sie auf Speichern (Save):

#if ($env:MSI_SECRET) {
#    Disable-AzContextAutosave -Scope Process | Out-Null
#    Connect-AzAccount -Identity
#}​

6. Ändern Sie die Dropdown-Liste in requirements.psd1, ändern Sie den Code wie folgt und klicken Sie auf Speichern:

@{
    'PnP.PowerShell' = '2.*'
 }​

7. Klicken Sie in der Function App auf Erstellen (Create) und wählen Sie HTTP-Trigger aus.

8. Legen Sie den Namen und die Autorisierung zum Testen auf Anonym (Anonymous) fest.

9. Klicken Sie auf den neuen HTTP-Trigger und die Option Code + Test.

10. Überschreiben Sie den aktuellen Code mit dem folgenden Code und klicken Sie auf Speichern – aktualisieren Sie die URL und die Bibliothek nach Bedarf:

using namespace System.Net
 
param($Request, $TriggerMetadata)
 
$securePassword = ConvertTo-SecureString $env:User_Pwd -AsPlainText -Force
$credentials = New-Object PSCredential ($env:User_Account, $securePassword)
Connect-PnPOnline https://site.sharepoint.com/sites/Mark8ProjectTeam -Credentials $credentials
$siteRelativeUrl = "/sites/Mark8ProjectTeam/Shared Documents"
 
$script:fileDetailsArray = @()
 
function Get-FilesRecursively {
    param (
        [string]$folderServerRelativeUrl
    )
 
    $items = Get-PnPListItem -List "Shared Documents" -FolderServerRelativeUrl $folderServerRelativeUrl -PageSize 500
 
    foreach ($item in $items) {
        if ($item.FileSystemObjectType -eq "Folder") {
            Get-FilesRecursively -folderServerRelativeUrl $item.FieldValues.FileRef
        } else {
            $fileDetails = Get-PnPProperty -ClientObject $item -Property "File"
            if ($fileDetails.TimeLastModified -gt (Get-Date).AddDays(-10)) {
 
                $fileObj = [PSCustomObject]@{
                    FileName = if ([string]::IsNullOrEmpty($fileDetails.Name)) { $item.FieldValues["Title"] } else { $fileDetails.Name }
                    FilePath = $item.FieldValues["FileRef"]
                    Modified = $fileDetails.TimeLastModified
                    ModifiedBy = $item.FieldValues["Editor"].LookupValue
                }
 
                $script:fileDetailsArray += $fileObj
            }
        }
    }
}
 
Get-FilesRecursively -folderServerRelativeUrl $siteRelativeUrl
 
$jsonOutput = $script:fileDetailsArray | ConvertTo-Json -Depth 10
 
Disconnect-PnPOnline
 
Write-Output $jsonOutput
 
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
    StatusCode = [HttpStatusCode]::OK
    Body = $jsonOutput
    Headers = @{
        "Content-Type" = "application/json"
    }
})​

11. Führen Sie die Funktion über die Schaltflächen Test/Ausführen (Test/Run) oder Functions-URL abrufen (Get Function URL) aus.

12. Navigieren Sie zuletzt zum Stammverzeichnis der Function App und klicken Sie auf Konfiguration (Configuration).

13. Fügen Sie in den Anwendungseinstellungen (Application Settings) zwei neue Anwendungseinstellungen hinzu: eine mit dem Namen User_Account und eine mit dem Namen User_Pwd. Füllen Sie sie mit den Anmeldedaten aus, die Sie für den Zugriff auf SharePoint Online verwenden möchten. Verwenden Sie diesen Ansatz nicht für die Produktion.

Mit der Option Test/Ausführen (Test/Run) können Sie es direkt im Auslöserfenster anzeigen. Functions-URL abrufen (Get Function URL) stellt eine URL bereit, die Sie in den Browser einfügen können, wodurch die Azure Function ausgeführt wird. Nach dem Ausführen der Azure Function wird eine JSON-Zeichenfolge mit allen Dateien zurückgegeben, die am Vortag von dem bestimmten Speicherort in SharePoint Online geändert wurden.

Ausführung der Azure-Funktion
Abbildung 2: Die Ausführung der Azure-Funktion zeigt die in SharePoint Online in den letzten 24 Stunden geänderten Dateien an

Das ist nur ein einfaches Beispiel dafür, was mit PowerShell innerhalb einer Azure Function getan werden kann. Sie können andere Sprachen wie Python für weitere Verbesserungen verwenden. Sie können den Code beispielsweise so ändern, dass ein Bericht erstellt, per E-Mail an andere Benutzer oder Administratoren gesendet oder bei Bedarf andere Aktionen ausgeführt werden.

Microsoft bietet in dieser Dokumentation eine umfassende Anleitung, Codebeispiele und Tutorials für Azure Functions, die sich an Anfänger und erfahrene Benutzer richten.

Erfahren Sie mehr über Serverbetriebssysteme