Schritt 1: Remotedienst (Azure-Funktion) über Portal erstellen

This topic provides detailed instructions for creating an Azure Function for use as the remote service for your external function.

Unter diesem Thema:

Azure-Funktionen-App erstellen

Der erste Schritt besteht darin, eine Azure-Funktionen-App zu erstellen, die als Container für die Funktionen dient, die Sie später erstellen.

  1. Melden Sie sich beim Azure-Portal an.

  2. Erstellen Sie die Azure-Funktionen-App, indem Sie die Anweisungen in der Microsoft-Dokumentation unter Azure-Funktionen-App befolgen.

    Wenn Sie die Anleitung verwenden, denken Sie an Folgendes:

    • Wenn Sie einen Namen in das Feld Function App Name:extui: eingeben, notieren Sie sich den Namen auch im Feld „Azure Function app name“ auf dem Arbeitsblatt.

    • Wenn Sie aufgefordert werden, einen Wert für Publish anzugeben, wählen Sie Code.

    • Für das Erstellen mehrerer Apps in derselben Ressourcengruppe gelten einige Einschränkungen. Weitere Informationen dazu finden Sie in der Microsoft-Dokumentation unter Azure-App-Dienst.

    Snowflake stellt eine „Echo“-Beispielfunktion in Node.js bereit. Wenn Sie diese Beispielfunktion zum Einstieg verwenden möchten, dann gehen Sie wie folgt vor:

    • Wählen Sie als Runtime stack die Option „Node.js“ aus.

    • Wählen Sie als Node.js-Version die Version 12 aus.

    • Wählen Sie als Betriebssystem, unter dem die Funktion ausgeführt werden soll, „Windows“ oder „Linux“ aus.

      • Wenn Sie nur eine Demofunktion erstellen, empfiehlt Snowflake die Auswahl von „Windows“.

        Linux-Funktionen-Apps können im Azure-Portal nicht bearbeitet werden. Benutzer müssen den Code über die Visual Studio Code-Schnittstelle veröffentlichen.

      • Wenn Sie Ihre Azure-Funktion unter Linux und nicht unter Microsoft Windows ausführen möchten, finden Sie entsprechende Informationen in der Microsoft-Dokumentation unter Azure-Funktionen.

        Die Azure AD-Authentifizierung ist unter Linux nicht verfügbar, wenn Sie den „Consumption“-Tarif für Azure-Funktionen verwenden. Sie müssen einen „App Service“-Tarif oder „Premium“-Tarif verwenden, um sich mit Azure AD zu authentifizieren.

        Weitere Informationen dazu finden Sie in der Microsoft-Dokumentation unter Azure AD.

Über HTTP ausgelöste Azure-Funktion erstellen

Nachdem Sie Ihre Azure-Funktionen-App (Container) erstellt haben, müssen Sie eine Azure-Funktion in diesem Container erstellen. Diese Funktion fungiert als der Remotedienst.

Microsoft erlaubt das Aufrufen (Auslösen) von Azure-Funktionen auf unterschiedliche Weise. Eine externe Snowflake-Funktion ruft einen Remotedienst über einen HTTP-POST-Befehl auf, d. h. die von Ihnen erstellte Azure-Funktion muss eine „über HTTP ausgelöste Funktion“ sein.

Tipp

Sie können die von Microsoft bereitgestellte Anleitung verwenden, um die über HTTP ausgelöste Funktion zu erstellen:

Snowflake stellt jedoch benutzerdefinierte Anleitungen zur Verfügung, die zusätzliche Details und Beispielcode enthalten und eine andere Autorisierungsstufe als Microsoft vorschlagen. Wir empfehlen, die benutzerdefinierten Anleitungen anstelle der von Microsoft bereitgestellten Anleitungen zu verwenden.

Funktion erstellen

Um die in diesem Abschnitt beschriebenen Aufgaben auszuführen, müssen Sie sich auf dem Bildschirm Function App des Azure-Portals befinden. Der Name Ihrer Azure-Funktionen-App wird normalerweise in der linken oberen Ecke des Bildschirms angezeigt.

So erstellen Sie die über HTTP ausgelöste Funktion:

  1. Suchen Sie im Menüstrukturbaum auf der linken Seite nach dem Abschnitt mit dem Titel Functions. Klicken Sie in diesem Abschnitt auf das Element mit der Bezeichnung Functions, um eine Funktion hinzuzufügen.

  2. Klicken Sie auf die Schaltfläche + Add.

  3. Wählen Sie auf der rechten Seite in der Liste der potenziellen Trigger die Option HTTP trigger aus.

  4. Geben Sie den Namen ein, der für Ihre über HTTP ausgelöste Funktion verwendet werden soll.

    Record this name in the „HTTP-Triggered Function name“ field in your tracking worksheet.

  5. Geben Sie einen Wert für Authorization level ein.

    Snowflake empfiehlt, als Autorisierungsstufe Function auszuwählen.

    Weitere Informationen zu möglichen Autorisierungsstufen finden Sie in der Microsoft-Dokumentation unter Über HTTP ausgelöste Funktionen.

  6. Klicken Sie auf die Schaltfläche Add.

    Dadurch gelangen Sie zu einem Bildschirm, auf dem der Name der Funktion und darunter das Wort Function angezeigt werden.

  7. Klicken Sie im Strukturbaum auf der linken Seite auf Code + Test.

  8. Ersetzen Sie den Standardcode durch Ihren eigenen Code.

    Beispielcode für eine JavaScript-„echo“-Funktion finden Sie unten.

    Die Funktion liest jede Zeile und kopiert diese Zeile dann in die Ausgabe (Ergebnisse). Die Zeilennummer ist ebenfalls in der Ausgabe enthalten. Die Ausgabe wird als Teil eines mehrstufigen Wörterbuchs zurückgegeben.

    Diese Funktion akzeptiert Daten in demselben Format (JSON), das von Snowflake gesendet und gelesen wird, und gibt Daten auch in diesem Format zurück. Weitere Informationen zu Datenformaten finden Sie unter Eingangs- und Ausgangsdatenformate von Remotediensten.

    Normalerweise gibt die Funktion den HTTP-Code 200 zurück. Wenn keine Zeilen an die Funktion übergeben werden (d. h. wenn der Anforderungstext leer ist), gibt die Funktion den Fehlercode 400 zurück.

    module.exports = async function(context, request) {
        context.log('JavaScript HTTP trigger function processed a request.');
    
        if (request.body) {
            var rows = request.body.data;
            var results = [];
            rows.forEach(row => {
                results.push([row[0], row]);
            });
    
            results = {data: results}
            context.res = {
                status: 200,
                body: JSON.stringify(results)
            };
       }
       else {
           context.res = {
               status: 400,
               body: "Please pass data in the request body."
           };
       }
    };
    
  9. Klicken Sie über dem Code auf die Schaltfläche Save.

Funktion testen

Um die soeben erstellte, über HTTP ausgelöste Azure-Funktion zu testen, fügen Sie die folgenden Beispieldaten in das Feld Body ein, und klicken Sie dann auf die Schaltfläche Test/Run:

{
    "data": [ [ 0, 43, "page" ], [ 1, 42, "life, the universe, and everything" ] ]
}

Der Inhalt der Ausgabe sollte in etwa wie folgt aussehen:

{ "data":
    [
        [ 0, [ 0, 43, "page" ] ],
        [ 1, [ 1, 42, "life, the universe, and everything" ]  ]
    ]
}

Beachten Sie, dass die Formatierung von der oben gezeigten abweichen kann.

Autorisierungsanforderungen für die Azure-Funktionen-App festlegen

Wenn eine externe Funktion aufgerufen wird, sendet Snowflake einen HTTP-POST-Befehl an den Proxydienst (z. B. den Azure API Management-Dienst), der den POST-Befehl an den Remotedienst (z. B. die Azure-Funktion) weiterleitet.

Für jeden dieser beiden Schritte sollten Autorisierungsanforderungen gelten, sodass Sie in der Regel Folgendes angeben:

  • Die Autorisierung, die zum Aufrufen des API Management-Dienstes erforderlich ist.

  • Die Autorisierung, die zum Aufrufen von Funktionen der Azure-Funktionen-App, die Ihre Azure-Funktion enthält, erforderlich ist.

In diesem Abschnitt wird gezeigt, wie Sie eine Autorisierung für Ihre Azure-Funktionen-App anfordern. Der API Management-Dienst wird später erstellt, daher werden dessen Autorisierungsanforderungen auch erst später festgelegt.

Wenn Snowflake sich bei Ihrer Azure-Funktionen-App authentifiziert, verwendet Snowflake den Bereitstellungsablauf für OAuth-Clientanmeldinformationen für Azure AD.

Weitere Einzelheiten zum Ablauf der Bereitstellung von Clientanmeldeinformationen finden Sie in der Microsoft-Dokumentation unter https://docs.microsoft.com/en-us/azure/active-directory/azuread-dev/v1-oauth2-client-creds-grant-flow.

Dieser Clientanmeldeinformationsablauf erfordert eine Azure AD-App-Registrierung, die die Azure-Funktionen-App repräsentiert.

Dieser Abschnitt enthält die Anweisungen zum Erstellen der Azure AD-App-Registrierung für die Azure-Funktionen-App. Beispielsweise können Sie Ihre Azure-Funktionen-App so einstellen, dass eine Azure AD-Authentifizierung erforderlich ist. Um die Autorisierung über Azure AD zu konfigurieren, müssen Sie Folgendes tun:

  • Erstellen Sie eine Azure AD-App-Registrierung, bei der es sich um eine Azure AD-basierte Entität handelt, die eine Identität oder einen Ressourcenbezeichner repräsentiert (d. h. das, was Sie schützen möchten).

  • Ordnen Sie die Azure AD-App-Registrierung der Azure-Funktionen-App zu, für die Sie eine Authentifizierung anfordern möchten.

Bemerkung

Für Azure-Funktionen besteht der schnellste Weg, eine Azure AD-App-Registrierung zu erstellen, in der Aktivierung von Azure AD-Authentifizierung für den Dienst, wie unten dokumentiert. Wenn Sie als Remotedienst keine Azure-Funktion verwenden möchten, verwenden Sie die Seite App registrations, um eine neue Azure AD-App-Registrierung für Ihren Remotedienst zu erstellen.

Weitere Einzelheiten zur App-Registrierung finden Sie in folgender Microsoft-Dokumentation:

App Service Authentication für die Azure-Funktionen-App aktivieren

Um die folgenden Schritte ausführen zu können, müssen Sie sich auf dem Bildschirm Function App Ihrer Azure-Funktionen-App befinden.

  1. Suchen Sie im linken Menüfenster den Abschnitt mit dem Namen Settings, und klicken Sie dort auf Authentication / Authorization.

    Wenn am linken Rand das Menü Developer angezeigt wird (mit Code + Test, Integration usw.) und der untere Bildschirmrand eine Bildlaufleiste enthält, dann versuchen Sie den Schieberegler nach links zu schieben, um zum Abschnitt Function App oder App Service zurückzukehren, und suchen Sie dann nach Settings.

  2. Suchen Sie die Schaltfläche App Service Authentication, und ändern Sie den Wert von Off in On.

    Wenn Sie die Einstellungen auf dieser Authentication / Authorization-Seite nicht ändern können, finden Sie unter Einstellungen können bei der Erstellung der Azure-Funktion nicht geändert werden einen Tipp zur Problembehandlung.

  3. Suchen Sie das Dropdownmenü Action to take when request is not authenticated, und wählen Sie Log in with Azure Active Directory aus.

  4. Wählen Sie unter Authentication Providers die Option Azure Active Directory aus, wenn sie nicht bereits ausgewählt ist.

  5. Klicken Sie auf Azure Active Directory, wodurch Sie zum Bildschirm Azure Active Directory Settings gelangen sollten.

Azure AD-App registrieren

An diesem Punkt sollten Sie sich auf dem Bildschirm Azure Active Directory Settings befinden. So registrieren Sie die AD-App für Ihre Azure-Funktionen-App:

  1. Ändern Sie die erste Schaltfläche Management mode von Off in entweder Express oder Advanced. Die folgenden Anweisungen gehen davon aus, dass Sie Express gewählt haben.

  2. Suchen Sie die zweite Schaltfläche Management mode, und wählen Sie entweder Create New AD App oder Select Existing AD App aus.

    Wählen Sie für diese Demonstration Create New AD App aus, es sei denn, Sie haben bereits eine Azure AD-App-Registrierung, die Sie verwenden möchten.

  3. Standardmäßig ist der Name der Azure AD-App-Registrierung derselbe wie der Name der Azure-Funktionen-App. Dieser Name sollte im Feld Create App angezeigt werden. Sie können diesen Namen bei Bedarf ändern.

    Notieren Sie sich den Namen der Azure AD-App-Registrierung im Feld „Azure function AD app registration name“ des Arbeitsblatts.

  4. Klicken Sie unten links im Fenster auf die Schaltfläche OK. Dadurch wird eine Azure AD-App-Registrierung erstellt, und Sie kehren zum Bildschirm App Service Authentication / Authorization zurück.

  5. Stellen Sie sicher, dass die Schaltfläche App Service Authentication auf On eingestellt ist.

  6. Klicken Sie auf die Schaltfläche Save, die sich in der linken oberen Ecke des Hauptbereichs (rechts neben dem Menübereich) befindet.

Die meisten der oben beschriebenen Schritte sind auch in der Microsoft-Dokumentation Konfigurieren eines Authentifizierungsanbieters dokumentiert.

Azure AD-App überprüfen

Ihre Azure AD-App ist nun registriert. Im letzten Schritt wird überprüft, ob die App unter App registrations aufgeführt wird:

  1. Öffnen Sie eine neue Browser-Registerkarte, gehen Sie zu http://portal.azure.com, und klicken Sie dann auf App registrations.

    Wenn dies nicht sichtbar ist, dann führen Sie über das Microsoft Azure-Suchfenster am oberen Rand des Bildschirms App registrations eine Suche aus.

    Sie sollten sich jetzt auf dem Bildschirm App registrations befinden, wo zwei Registerkarten All applications und Owned applications angezeigt werden.

  2. Wählen Sie die Registerkarte All applications aus, falls diese nicht bereits ausgewählt ist.

  3. Klicken Sie auf den Namen der Azure AD-App-Registrierung, die Sie gerade für Ihre Azure-Funktionen-App erstellt haben.

    Bemerkung

    Sie können die Suchleiste verwenden, um Ihre Azure AD-App nach Namen zu suchen. Geben Sie dazu die ersten Zeichen des Namens ein. Die Suchfunktion geht davon aus, dass Sie den führenden Teil des Namens eingeben, und sucht daher die angegebene Teilzeichenfolge nicht im gesamten Funktionsnamen.

    Dadurch sollten Sie zum Bildschirm App registrations gelangen.

  4. Auf dem App-Registrierungsbildschirm, der die Azure AD-App Ihrer Azure-Funktionen-App beschreibt, sollten der Name Ihrer Azure AD-App angezeigt werden.

  5. Suchen Sie das Feld Application (client) ID.

    Notieren Sie sich diese ID im Feld Azure Function App AD Application ID Ihres Arbeitsblatts.

    Wichtig

    Stellen Sie sicher, dass Sie die ID und nicht den Azure AD-Anwendungsnamen kopieren. Die ID sollte eine UUID enthalten.