Tutorial: Steuern der ausgehenden IP-Adresse von Azure Functions mithilfe eines Azure Virtual Network NAT-Gateways
Virtual Network NAT (Network Address Translation, Netzwerkadressenübersetzung) vereinfacht die Einrichtung von ausschließlich ausgehender Internetkonnektivität für virtuelle Netzwerke. Bei der Konfiguration in einem Subnetz werden für die gesamte Konnektivität in ausgehender Richtung die von Ihnen angegebenen statischen öffentlichen IP-Adressen verwendet. Eine NAT kann bei Apps hilfreich sein, die auf einen Drittanbieterdienst angewiesen sind, der als Sicherheitsmaßnahme eine Positivliste mit IP-Adressen verwendet. Weitere Informationen finden Sie unter Was ist Azure NAT-Gateway?.
In diesem Tutorial erfahren Sie, wie Sie NAT-Gateways verwenden, um ausgehenden Datenverkehr einer über HTTP ausgelösten Funktion weiterzuleiten. Diese Funktion ermöglicht die Überprüfung der eigenen ausgehenden IP-Adresse. Dieses Tutorial umfasst Folgendes:
- Erstellen eines virtuellen Netzwerks
- Erstellen einer Funktions-App im Premium-Tarif
- Erstellen einer öffentlichen IP-Adresse
- Erstellen eines NAT-Gateways
- Konfigurieren der Funktions-App zum Weiterleiten von ausgehendem Datenverkehr über das NAT-Gateway
Topologie
Das folgende Diagramm zeigt die Architektur der Lösung, die Sie erstellen:
Funktionen, die im Premium-Plan ausgeführt werden, bieten dieselben Hostingfunktionen wie Web-Apps in Azure App Service, wozu auch ein Feature zur VNET-Integration gehört. Weitere Informationen zur VNET-Integration, einschließlich Problembehandlung und erweiterter Konfiguration, finden Sie unter Integrieren Ihrer App in ein Azure Virtual Network.
Voraussetzungen
Für dieses Tutorial ist es wichtig, dass Sie die Funktionsweise und Verwendung von IP-Adressen und Subnetzen verstehen. Beginnen Sie mit diesem Artikel zu den Grundlagen von Adressen und Subnetzen. Viele weitere Artikel und Videos finden Sie online.
Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
Wenn Sie bereits das Tutorial Integrieren von Azure Functions in ein virtuelles Azure-Netzwerk mithilfe privater Endpunkte absolviert haben, können Sie direkt mit dem Erstellen einer HTTP-Triggerfunktion fortfahren.
Erstellen eines virtuellen Netzwerks
Wählen Sie im Menü des Azure-Portals die Option Ressource erstellen aus. Wählen Sie im Azure Marketplace die Option Netzwerk>Virtuelles Netzwerk aus.
Geben Sie unter Virtuelles Netzwerk erstellen die Einstellungen aus der folgenden Tabelle ein, bzw. wählen Sie sie aus:
Einstellung Wert Subscription Wählen Sie Ihr Abonnement aus. Resource group Wählen Sie Neue erstellen aus, geben Sie myResourceGroup ein, und wählen Sie OK aus. Name Geben Sie myResourceGroup-vnet ein. Standort Wählen Sie USA, Osten aus. Wählen Sie Weiter: IP-Adressen aus, und geben Sie unter IPv4-Adressraum den Adressraum 10.10.0.0/16 ein.
Wählen Sie Subnetz hinzufügen aus, und geben Sie unter Subnetzname den Namen Tutorial-Net und unter Subnetzadressbereich den Bereich 10.10.1.0/24 ein.
Wählen Sie Hinzufügen und anschließend Überprüfen + erstellen aus. Übernehmen Sie die übrigen Standardeinstellungen, und wählen Sie Erstellen aus.
Wählen Sie unter Virtuelles Netzwerk erstellen die Option Erstellen aus.
Erstellen Sie als Nächstes eine Funktions-App im Premium-Tarif. Dieser Plan ermöglicht eine Skalierung ohne Server und unterstützt gleichzeitig die Integration in ein virtuelles Netzwerk.
Erstellen einer Funktions-App in einem Premium-Tarif
In diesem Tutorial erfahren Sie, wie Sie Ihre Funktions-App in einem Premium-Planerstellen. Die gleiche Funktionalität ist auch verfügbar, wenn ein Dedizierter (App Service)-Plan verwendet wird.
Hinweis
Wählen Sie .NET als Runtimestapel und Windows als Betriebssystem aus, um in diesem Tutorial optimale Ergebnisse zu erzielen. Erstellen Sie Ihre Funktions-App außerdem in der gleichen Region wie Ihr virtuelles Netzwerk.
Klicken Sie im Menü des Azure-Portals oder auf der Startseite auf Ressource erstellen.
Wählen Sie auf der Seite Neu die Option Compute>Funktions-App aus.
Verwenden Sie auf der Seite Grundlagen die Funktions-App-Einstellungen, die in der folgenden Tabelle angegeben sind:
Einstellung Vorgeschlagener Wert BESCHREIBUNG Abonnement Ihr Abonnement Das Abonnement, unter dem diese neue Funktions-App erstellt wird. Ressourcengruppe myResourceGroup Der Name der neuen Ressourcengruppe, in der die Funktionen-App erstellt wird Name der Funktions-App Global eindeutiger Name Der Name, der Ihre neue Funktionen-App bezeichnet Gültige Zeichen sind a-z
(Groß-/Kleinschreibung nicht beachtet),0-9
und-
.Veröffentlichen Code Option zum Veröffentlichen von Codedateien oder eines Docker-Containers. Laufzeitstapel Bevorzugte Sprache Wählen Sie eine Runtime aus, die Ihre bevorzugte Programmiersprache für Funktionen unterstützt. Die portalinterne Bearbeitung wird derzeit für die Python-Entwicklung nicht unterstützt. Region Bevorzugte Region Wählen Sie eine Region in Ihrer Nähe oder in der Nähe von anderen Diensten aus, auf die Ihre Funktionen zugreifen. Klicken Sie auf Weiter: Hosting aus. Geben Sie auf der Seite Hosting die folgenden Einstellungen ein:
Einstellung Vorgeschlagener Wert BESCHREIBUNG Speicherkonto Global eindeutiger Name Erstellen Sie ein Speicherkonto, das von Ihrer Funktions-App verwendet wird. Speicherkontonamen müssen zwischen 3 und 24 Zeichen lang sein und dürfen nur Zahlen und Kleinbuchstaben enthalten. Sie können auch ein vorhandenes Konto verwenden, das die Anforderungen an das Speicherkonto erfüllen muss. Betriebssystem Bevorzugtes Betriebssystem Ein Betriebssystem ist für Sie basierend auf Ihrer Runtimestapelauswahl vorab ausgewählt, aber Sie können die Einstellung ggf. ändern. Python wird nur unter Linux unterstützt. Die portalinterne Bearbeitung wird nur unter Windows unterstützt. Plan Premium Der Hostingplan, der definiert, wie Ihre Ressourcen der Funktionen-App zugewiesen werden Wählen Sie Premium aus. Standardmäßig wird ein neuer App Service Plan erstellt. Der Standardwert für SKU und Größe ist EP1, wobei EP für Elastisch Premium steht. Weitere Informationen finden Sie in der Liste der Premium-SKUs.
Wenn Sie JavaScript-Funktionen im Rahmen eines Premium-Plans ausführen, sollten Sie eine Instanz auswählen, die weniger vCPUs hat. Weitere Informationen finden Sie unter Auswählen von Premium-Plänen mit Einzelkern.Klicken Sie auf Weiter: Überwachung aus. Geben Sie auf der Seite Überwachung die folgenden Einstellungen ein:
Einstellung Vorgeschlagener Wert BESCHREIBUNG Application Insights Standard Erstellt eine Application Insights-Ressource mit dem gleichen App-Namen in der nächstgelegenen unterstützten Region. Durch die Erweiterung dieser Einstellung können Sie den neuen Ressourcennamen ändern oder einen anderen Standort in einer Azure-Region zum Speichern Ihrer Daten auswählen. Wählen Sie Bewerten + erstellen aus, um die App-Konfigurationsauswahl zu überprüfen.
Überprüfen Sie auf der Seite Bewerten + erstellen Ihre Einstellungen, und wählen Sie dann Erstellen aus, um die Funktions-App bereitzustellen.
Wählen Sie oben rechts im Portal das Benachrichtigungssymbol aus, und achten Sie auf die Meldung Bereitstellung erfolgreich.
Wählen Sie Zu Ressource wechseln, um Ihre neue Funktionen-App anzuzeigen. Sie können auch die Option An Dashboard anheften auswählen. Wenn Sie die Funktions-App anheften, können Sie einfacher über das Dashboard auf sie zugreifen.
Verbinden Ihrer Funktions-App mit dem virtuellen Netzwerk
Nun können Sie Ihre Funktions-App mit dem virtuellen Netzwerk verbinden.
Wählen Sie in Ihrer Funktions-App im linken Menü die Option Netzwerk und anschließend unter VNET-Integration die Option Klicken Sie hier, um die Konfiguration auszuführen. aus.
Wählen Sie auf der Seite VNET-Integration die Option VNET hinzufügen aus.
Verwenden Sie unter Netzwerkfeaturestatus die Einstellungen in der Tabelle unterhalb der Abbildung:
Einstellung Vorgeschlagener Wert BESCHREIBUNG Virtual Network MyResourceGroup-vnet Das virtuelle Netzwerk ist dasjenige, das Sie zuvor erstellt haben. Subnetz Neues Subnetz erstellen Erstellen Sie ein Subnetz in dem virtuellen Netzwerk zur Verwendung durch Ihre Funktions-App. Die VNET-Integration muss so konfiguriert werden, dass ein leeres Subnetz verwendet wird. Subnetzname Function-Net Name des neuen Subnetzes. Adressblock des virtuellen Netzwerks 10.10.0.0/16 Es sollte nur ein Adressblock definiert sein. Subnetzadressblock 10.10.2.0/24 Die Subnetzgröße begrenzt die Gesamtanzahl von Instanzen, auf die Ihre Funktions-App im Premium-Plan aufskaliert werden kann. Dieses Beispiel verwendet ein /24
-Subnetz mit 254 verfügbaren Hostadressen. Dieses Subnetz ist überdimensioniert, aber einfach zu berechnen.Klicken Sie auf OK, um das Subnetz hinzuzufügen. Schließen Sie die Seiten VNET-Integration und Netzwerkfeaturestatus, um zur Seite Ihrer Funktions-App zurückzukehren.
Die Funktions-App hat nun Zugriff auf das virtuelle Netzwerk. Wenn die Konnektivität aktiviert ist, wird die Standorteinstellung für vnetrouteallenabled
auf 1
festgelegt. Sie müssen entweder diese Standorteinstellung oder die Legacyanwendungseinstellung WEBSITE_VNET_ROUTE_ALL
auf 1
festgelegt haben.
Fügen Sie der Funktions-App als Nächstes eine über HTTP ausgelöste Funktion hinzu.
Erstellen einer HTTP-Triggerfunktion
Wählen Sie im linken Menü des Fensters Funktionen die Option Funktionen aus, und wählen Sie dann im obersten Menü Hinzufügen aus.
Wählen Sie im Fenster Neue Funktion die Option HTTP-Trigger aus, und übernehmen Sie den Standardnamen für Neue Funktion, oder geben Sie einen neuen Namen ein.
Ersetzen Sie unter Programmieren und testen den mittels Vorlage generierten Code des C#-Skripts (.csx) durch den folgenden Code:
#r "Newtonsoft.Json" using System.Net; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Primitives; using Newtonsoft.Json; public static async Task<IActionResult> Run(HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); var client = new HttpClient(); var response = await client.GetAsync(@"https://ifconfig.me"); var responseMessage = await response.Content.ReadAsStringAsync(); return new OkObjectResult(responseMessage); }
Durch diesen Code wird eine externe Website aufgerufen, die die IP-Adresse des Aufrufers (in diesem Fall: die verwendete Funktion) zurückgibt. Dadurch können Sie ganz einfach die ausgehende IP-Adresse ermitteln, die von Ihrer Funktions-App verwendet wird.
Nun können Sie die Funktion ausführen und die aktuellen ausgehenden IP-Adressen überprüfen.
Überprüfen aktueller ausgehender IP-Adressen
Nun können Sie die Funktion ausführen. Überprüfen Sie jedoch zuerst im Portal, welche ausgehenden IP-Adressen von der Funktions-App verwendet werden.
Wählen Sie in Ihrer Funktions-App die Option Eigenschaften aus, und überprüfen Sie das Feld Ausgehende IP-Adressen.
Kehren Sie nun zu Ihrer HTTP-Triggerfunktion zurück, und wählen Sie Programmieren und testen > Testen/Ausführen aus.
Wählen Sie Ausführen aus, um die Funktion auszuführen, und wechseln Sie dann zu Ausgabe.
Vergewissern Sie sich, dass es sich bei der IP-Adresse im HTTP-Antworttext um einen der Werte aus den ausgehenden IP-Adressen handelt, die Sie sich zuvor angesehen haben.
Nun können Sie eine öffentliche IP-Adresse erstellen und ein NAT-Gateway verwenden, um diese ausgehende IP-Adresse zu ändern.
Öffentliche IP-Adresse erstellen
Wählen Sie in Ihrer Ressourcengruppe Hinzufügen aus, suchen Sie im Azure Marketplace nach Öffentliche IP-Adresse, und wählen Sie Erstellen aus. Verwenden Sie die Einstellungen aus der Tabelle unterhalb der Abbildung:
Einstellung Vorgeschlagener Wert IP-Version IPv4 SKU Standard Tier Länderspezifisch Name Outbound-IP Abonnement Vergewissern Sie sich, dass Ihr Abonnement angezeigt wird. Ressourcengruppe „myResourceGroup“ (oder der Name, den Sie Ihrer Ressourcengruppe zugewiesen haben) Location „USA, Osten“ (oder der Standort, den Sie Ihren anderen Ressourcen zugewiesen haben) Verfügbarkeitszone Keine Zone Wählen Sie Erstellen aus, um die Bereitstellung zu übermitteln.
Navigieren Sie nach Abschluss der Bereitstellung zu Ihrer neu erstellten öffentlichen IP-Adressressource, und sehen Sie sich die IP-Adresse in der Übersicht an.
Erstellen eines NAT Gateways
Erstellen Sie als Nächstes das NAT-Gateway. Im vorherigen Tutorial für virtuelle Netzwerke war Function-Net
der vorgeschlagene Subnetzname und MyResourceGroup-vnet
der vorgeschlagene Name für das virtuelle Netzwerk.
Wählen Sie in Ihrer Ressourcengruppe Hinzufügen aus, suchen Sie im Azure Marketplace nach NAT-Gateway, und wählen Sie Erstellen aus. Verwenden Sie auf der Registerkarte Basiseinstellungen die Einstellungen aus der Tabelle unterhalb der Abbildung:
Einstellung Vorgeschlagener Wert Abonnement Ihr Abonnement Ressourcengruppe „myResourceGroup“ (oder der Name, den Sie Ihrer Ressourcengruppe zugewiesen haben) Name des NAT-Gateways myNatGateway Region „USA, Osten“ (oder der Standort, den Sie Ihren anderen Ressourcen zugewiesen haben) Verfügbarkeitszone Keine Wählen Sie Weiter: Ausgehende IP-Adresse aus. Wählen Sie im Feld Öffentliche IP-Adressen die zuvor erstellte öffentliche IP-Adresse aus. Lassen Sie Präfixe für öffentliche IP-Adressen leer.
Wählen Sie Weiter: Subnetz aus. Wählen Sie im Feld Virtuelles Netzwerk die Ressource myResourceGroup-vnet sowie das Subnetz Function-Net aus.
Wählen Sie die Option Überprüfen und erstellen und dann Erstellen aus, um die Bereitstellung zu übermitteln.
Nach Abschluss der Bereitstellung kann das NAT-Gateway Datenverkehr aus dem Subnetz Ihrer Funktions-App an das Internet weiterleiten.
Überprüfen der neuen ausgehenden IP-Adressen
Wiederholen Sie die Schritte von vorhin, um die Funktion erneut auszuführen. Nun sollte in der Funktionsausgabe die ausgehende IP-Adresse angezeigt werden, die Sie in der NAT konfiguriert haben.
Bereinigen von Ressourcen
Im Rahmen dieses Tutorials wurden Ressourcen erstellt. Für diese Ressourcen fallen je nach Kontostatus und Dienstpreisen Kosten an. Löschen Sie die Ressourcen, wenn Sie sie nicht mehr benötigen, um zusätzliche Kosten zu vermeiden.
Navigieren Sie im Azure-Portal zur Seite Ressourcengruppe.
Von der Seite „Funktions-App“ aus gelangen Sie zu dieser Seite, indem Sie die Registerkarte Übersicht und anschließend unter Ressourcengruppe den Link auswählen.
Vom Dashboard aus gelangen Sie zu dieser Seite, indem Sie Ressourcengruppen und anschließend die Ressourcengruppe auswählen, die Sie für diesen Artikel verwendet haben.
Prüfen Sie auf der Seite Ressourcengruppe die Liste mit den enthaltenen Ressourcen, und vergewissern Sie sich, dass es sich dabei um die Ressourcen handelt, die Sie löschen möchten.
Wählen Sie Ressourcengruppe löschen aus, und folgen Sie den Anweisungen.
Der Löschvorgang kann einige Minuten in Anspruch nehmen. Nach Abschluss des Vorgangs wird kurz eine Benachrichtigung angezeigt. Sie können auch am oberen Seitenrand auf das Glockensymbol klicken, um die Benachrichtigung anzuzeigen.