Planen einer externen Funktion für Azure¶
Unter diesen Themen finden Sie Unterstützung bei der Vorbereitung zum Erstellen einer externen Funktion für Microsoft Azure entweder über das Azure-Portal oder mithilfe einer ARM (Azure Resource Manager)-Vorlage, die von Snowflake bereitgestellt wird.
Unter diesem Thema:
Voraussetzungen¶
In dieser Anleitung wird davon ausgegangen, dass Sie ein erfahrener Azure-Portal-Benutzer sind.
Um eine externe Funktion für Azure zu erstellen, müssen Sie über Folgendes verfügen:
Einen Azure AD (Active Directory)-Mandanten
Ein Konto bei diesem Azure AD-Mandanten. Das Konto muss über folgende Berechtigungen verfügen:
Erstellen Sie eine Azure Functions-App.
Erstellen eines Dienstendpunktes mit dem Azure API Management-Dienst
Registrieren einer Azure AD-Anwendung
Ein Snowflake-Konto, in dem Sie über die ACCOUNTADMIN-Rolle oder eine Rolle mit der Berechtigung CREATE INTEGRATION verfügen.
Außerdem sollten Sie bereits über eine Azure AD-Mandanten-ID verfügen.
Die Azure AD-Mandanten-ID ist eine UUID, die typischerweise so formatiert ist, dass es ähnlich aussieht wie 12345678-abcd-1234-efab-123456789012
, wobei jedes Nicht-Bindestrich-Zeichen eine hexadezimale Ziffer ist.
Wenn Sie Ihre Azure AD-Mandanten-ID noch nicht kennen, können Sie diese wie folgt ermitteln:
Melden Sie sich beim Azure-Portal (http://portal.azure.com) an.
Klicken Sie oben auf der Seite unter den Azure services-Symbolen auf Azure Active Directory.
Suchen Sie im Menü auf der linken Seite nach dem Abschnitt mit dem Titel Manage, und klicken Sie darunter auf Properties.
Die Azure AD-Mandanten-ID wird im Feld Tenant ID (Mandanten-ID) angezeigt.
Auswählen der Methode zum Erstellen der externen Funktion¶
Snowflake stellt Anleitungen für zwei Methoden zum Erstellen einer externen Funktion auf Azure bereit:
Azure-Portal-Weboberfläche
ARM (Azure Resource Manager)-Vorlage, die von Snowflake bereitgestellt wird
Azure-Portal¶
Sie können das Azure-Portal verwenden, um eine Azure-Funktion (als Remotedienst) und eine API Management-Dienstinstanz (als Proxydienst) zu erstellen. Wenn Sie diese Methode wählen, verwenden Sie auch das Azure-Portal, um sicherheitsrelevanten Einstellungen zu konfigurieren.
Die Anleitung zum Erstellen einer externen Funktion über das Azure-Portal enthält ein Beispiel für eine Azure-Funktion und Details zum Erstellen einer grundlegenden API Management-Dienstinstanz:
Erstanwender können die Anweisungen und die Azure-Beispielfunktion mit wenigen oder ohne Änderungen verwenden.
Erfahrene Benutzer können die Anweisungen und die Azure-Beispielfunktion als Ausgangspunkt für die Erstellung einer benutzerdefinierten Azure-Funktion und einer benutzerspezifisch konfigurierten API Management-Dienstinstanz.
ARM (Azure Resource Manager)-Vorlage¶
Eine ARM-Vorlage verwendet JSON zur Beschreibung von Konfigurationsinformationen über eine Azure-Funktion (als Remotedienst) und eine Azure API Management-Dienstinstanz (als Proxydienst).
Snowflake stellt eine ARM-Beispielvorlage bereit, die Folgendes enthält:
Beispiel einer Azure-Funktion.
Die meisten Konfigurationsinformationen für einen API Management-Beispieldienst. Sie müssen einige zusätzliche Informationen eingeben, wenn Sie den API Management-Beispieldienst anpassen möchten.
Code zum Erstellen eines Speicherkontos, der vom Azure Functions-Dienst benötigt wird.
Code zum Hinzufügen einer validate-JWT (JSON Web Token)-Richtlinie zur API Management-Instanz, um die Sicherheit des Azure API Management-Dienstes zu erhöhen. Sie müssen die validate-JWT-Richtlinie jedoch erst manuell aktualisieren, bevor Sie diese verwenden können.
ARM-Vorlagen können sowohl für Einsteiger als auch für erfahrene Benutzer nützlich sein:
Erstanwender möchten möglicherweise mit der Snowflake-Beispielvorlage beginnen, da diese die Anzahl der erforderlichen Schritte zum Erstellen der Azure-Funktion und der API Management-Dienstinstanz reduziert.
Auch wenn Ihnen diese vorlagenbasierte Anleitung dabei hilft, schnell Ihre erste externe Funktion zu erstellen, sollten Sie beachten, dass damit die Schritte übersprungen werden, die die meisten Benutzer beim Erstellen von angepassten externen Funktionen benötigen.
Erfahrene Benutzer möchten möglicherweise ARM-Vorlagen verwenden, da mit Vorlagen die Bereitstellung automatisiert werden kann. Dies kann nützlich sein, wenn Sie eine Azure-Funktion und einen API Management-Dienst iterativ entwickeln.
Weitere Informationen zum Konfigurieren von Azure-Funktionen mit ARM-Vorlagen finden Sie in der Microsoft-Dokumentation: Ressourcenbereitstellung.
Vorbereiten der Verwendung des Azure-Portals¶
Diese Abschnitte helfen Ihnen bei der Vorbereitung auf die Verwendung des Azure-Portals zum Erstellen einer externen Funktion auf Microsoft Azure.
Wählen Sie den Tarif für Ihre Azure-Funktion¶
In Microsoft Azure kann eine Azure-Funktion (Remotedienst) auf einem Linux-Host oder Windows-Host ausgeführt werden. Derzeit bietet Azure unterschiedliche Kombinationen von Preis- und Authentifizierungsoptionen für Linux- und Windows-Hosts.
Wenn Sie planen, Ihre Azure-Funktion unter Linux auszuführen, müssen Sie eine gültige Kombination aus Azure-Tarif und Authentifizierung wählen:
Wenn Sie den „Premium“- oder „App Service“-Tarif verwenden:
Erstellen Sie im Azure-Portal auf dem Bildschirm Azure Functions auf der Registerkarte Authentication/Authorization die Azure AD (Active Directory)-Anwendung.
Verwenden Sie Azure AD für die Authentifizierung mit dem Azure Functions-Dienst.
Weitere Details und Links finden Sie weiter unten in der Anleitung zum Erstellen eines Remotedienstes.
Wenn Sie den „Consumption“-Tarif verwenden, gehen Sie wie folgt vor:
Erstellen Sie manuell die Azure AD-Anwendung im Azure-Portal. Weitere Details finden Sie weiter unten in der Anleitung zum Erstellen eines Remotedienstes.
Legen Sie eine validate-JWT-Richtlinie für die API Management-Instanz fest. Weitere Details dazu finden Sie unter Schritt 6: Azure-Sicherheitsrichtlinie für Proxydienst im Portal erstellen.
Verwenden Sie IP-Adresseinschränkungen, um den Remotedienst darauf zu beschränken, nur Verbindungen von der API Management-Dienstinstanz zu akzeptieren. Weitere Details dazu finden Sie unter IP-Adressen einschränken, von denen Azure Functions-Aufrufe akzeptiert werden (optional).
Erstellen eines Arbeitsblatts zur Nachverfolgung der erforderlichen Informationen¶
Wenn Sie die Aufgaben zum Erstellen einer externen Funktion im Azure-Portal ausführen, müssen Sie bei jedem Schritt des Prozesses bestimmte Werte eingeben (z. B. Name des API Management-Dienstes). Oft werden die von Ihnen eingegebenen Werte in nachfolgenden Schritten benötigt.
Um das Aufzeichnen/Verfolgen dieser Informationen zu erleichtern, haben wir ein Arbeitsblatt mit Feldern für jeden der erforderlichen Werte bereitgestellt:
================================================================================
======================= Tracking Worksheet: Azure Portal =======================
================================================================================
****** Step 1: Azure Function (Remote Service) Info ****************************
Azure Function app name: _______________________________________________________
HTTP-Triggered Function name: __________________________________________________
Azure Function AD app registration name: _______________________________________
Azure Function App AD Application ID: __________________________________________
(The value for the Azure Function App AD Application ID above is the
"Application (client) ID" of the Azure AD app registration for the
Azure Function. The value is used to fill in the "azure_ad_application_id"
field in the CREATE API INTEGRATION command. This value is in the form of a
UUID (universally unique identifier), which contains hexadecimal digits and
dashes.)
****** Step 2: Azure API Management Service (Proxy Service) Info ***************
API Management service name: ___________________________________________________
API Management API URL suffix: _________________________________________________
****** Steps 3-5: API Integration & External Function Info *********************
API Integration Name: __________________________________________________________
AZURE_MULTI_TENANT_APP_NAME: ___________________________________________________
AZURE_CONSENT_URL: _____________________________________________________________
External Function Name: ________________________________________________________
Vorbereiten der Verwendung der ARM-Vorlage¶
Diese Abschnitte helfen Ihnen bei der Vorbereitung auf die Verwendung der von Snowflake bereitgestellten ARM-Vorlage zur Erstellung einer externen Funktion auf Microsoft Azure.
Vorlage herunterladen¶
Die Vorlage steht im Snowflake-Repository in GitHub zum Download bereit.
Bevor Sie die Vorlage verwenden können, müssen Sie diese in das Azure-Portal importieren. Details zum Importieren der Vorlage finden Sie später unter dem Thema, das die Verwendung der Vorlage beschreibt.
Wählen Sie den Tarif für Ihre Azure-Funktion¶
In Microsoft Azure kann eine Azure-Funktion (Remotedienst) auf einem Linux-Host oder Windows-Host ausgeführt werden. Derzeit bietet Azure unterschiedliche Kombinationen von Preis- und Authentifizierungsoptionen für Linux- und Windows-Hosts.
Die von Snowflake bereitgestellte ARM-Vorlage verwendet standardmäßig die folgenden Tarif- und Authentifizierungsinformationen:
Standardmäßig wird ein Windows-Host für die Azure-Funktion verwendet.
Standardmäßig ist der Tarif „Consumption“ eingestellt.
Erstellt eine Azure Functions-App und konfiguriert diese App so, dass sie eine AD (Active Directory)-Authentifizierung erfordert.
Erstellt eine Sicherheitsrichtlinie zur Validierung eines JWT (JSON Web Token), das Snowflake zum Aufrufen Ihrer Azure-Funktion autorisiert.
Beachten Sie, dass in dieser Sicherheitsrichtlinie ein Feld fehlt. Die Anleitung zum Ausfüllen dieses Feldes finden Sie weiter unten.
Wenn Sie planen, Ihre Azure API Management-Instanz oder Azure-Funktion mit einer anderen Konfiguration auszuführen, müssen Sie die Vorlage aktualisieren. Weitere Informationen zum Aktualisieren der Vorlage finden Sie in der Microsoft-Dokumentation:
Automatisieren der Ressourcenbereitstellung (für Ihre Funktionen-App in Azure Functions)
Erstellen eines Arbeitsblatts zur Nachverfolgung der erforderlichen Informationen¶
Wenn Sie die Aufgaben zum Erstellen einer externen Funktion mithilfe der von Snowflake bereitgestellten ARM-Vorlage ausführen, müssen Sie bei jedem Schritt des Prozesses bestimmte Werte eingeben (z. B. Name des API Management-Dienstes). Oft werden die von Ihnen eingegebenen Werte in nachfolgenden Schritten benötigt.
Um das Aufzeichnen/Verfolgen dieser Informationen zu erleichtern, haben wir ein Arbeitsblatt mit Feldern für jeden der erforderlichen Werte bereitgestellt:
Bemerkung
Die in der ARM-Vorlage bereitgestellten hartkodierten Werte wurden unten bereits eingetragen.
================================================================================
======================= Tracking Worksheet: ARM Template =======================
================================================================================
****** Step 1: Azure Function (Remote Service) Info ****************************
HTTP-Triggered Function name: __________________ echo __________________________
Azure Function AD Application ID: ______________________________________________
(The value for the Azure Function AD Application ID above is the
"Application (client) ID" of the Azure AD app registration for the
Azure Function. The value is used to fill in the "azure_ad_application_id"
field in the CREATE API INTEGRATION command. This value is in the form of a
UUID (universally unique identifier), which contains hexadecimal digits and
dashes.)
****** Step 2: Azure API Management Service (Proxy Service) Info ***************
API Management service name: ___________________________________________________
API Management URL: ____________________________________________________________
Azure Function HTTP Trigger URL: _______________________________________________
API Management API URL suffix: _________________________________________________
****** Steps 3-5: API Integration & External Function Info *********************
API Integration Name: __________________________________________________________
AZURE_MULTI_TENANT_APP_NAME: ___________________________________________________
AZURE_CONSENT_URL: _____________________________________________________________
External Function Name: ________________________________________________________