Schritt 1: Remotedienst (Azure-Funktion) über Portal erstellen¶
Unter diesem Thema finden Sie eine Anleitung zum Erstellen einer Azure-Funktion zur Verwendung als Remotedienst für Ihre externe Funktion.
Unter diesem Thema:
Vorheriger Schritt¶
Azure Functions-App erstellen¶
Es gibt mehrere Möglichkeiten, einen Remotedienst zu erstellen. In diesem Abschnitt wird gezeigt, wie Sie einen Remotedienst erstellen, der als JavaScript-Funktion implementiert ist.
Diese externe Funktion ist synchron. Weitere Informationen zum Erstellen einer asynchronen externen Funktion finden Sie unter Erstellen einer asynchronen Funktion auf Azure.
Der erste Schritt besteht darin, eine Azure Functions-App zu erstellen, die als Container für die Funktionen dient, die Sie später erstellen:
Melden Sie sich beim Azure-Portal an.
Erstellen Sie die Azure Functions-App, indem Sie die Anweisungen in der Microsoft-Dokumentation unter Azure Functions-App befolgen.
Wenn Sie die Anleitung verwenden, denken Sie an Folgendes:
Wenn Sie einen Namen in das Feld Function App Name eingeben, notieren Sie sich den Namen auch auf dem Arbeitsblatt unter
Azure Function app name
.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 Functions-App (Container) erstellt haben, müssen Sie eine Azure Function 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 Functions-App wird normalerweise links oben am Bildschirms angezeigt.
So erstellen Sie die über HTTP ausgelöste Funktion:
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.
Klicken Sie auf die Schaltfläche + Add.
Wählen Sie auf der rechten Seite in der Liste der potenziellen Trigger die Option HTTP trigger aus.
Geben Sie den Namen ein, der für Ihre über HTTP ausgelöste Funktion verwendet werden soll.
Notieren Sie sich diesen Namen auf dem Arbeitsblatt unter
HTTP-Triggered Function name
.Geben Sie den 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.
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.
Klicken Sie im Strukturbaum auf der linken Seite auf Code + Test.
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." }; } };
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.
Nächster Schritt¶
Schritt 2: Proxydienst (Azure API Management-Dienst) im Portal erstellen