Självstudie: Kontrollera Azure Functions utgående IP-adress med en NAT-gateway för virtuella Azure-nätverk
NAT (Virtual Network Address Translation) förenklar utgående internetanslutning för virtuella nätverk. När den konfigureras i ett undernät använder alla utgående anslutningar dina angivna statiska offentliga IP-adresser. En NAT kan vara användbar för appar som behöver använda en tjänst från tredje part som använder en lista över tillåtna IP-adresser som en säkerhetsåtgärd. Mer information finns i Vad är Azure NAT Gateway?.
Den här självstudien visar hur du använder NAT-gatewayer för att dirigera utgående trafik från en HTTP-utlöst funktion. Med den här funktionen kan du kontrollera sin egen utgående IP-adress. Under den här självstudien kommer du att:
- Skapa ett virtuellt nätverk
- Skapa en funktionsapp för Premium-plan
- Skapa en offentlig IP-adress
- Skapa en NAT-gateway
- Konfigurera funktionsappen för att dirigera utgående trafik via NAT-gatewayen
Topologi
Följande diagram visar arkitekturen för den lösning som du skapar:
Funktioner som körs i Premium-planen har samma värdfunktioner som webbappar i Azure App Service, vilket inkluderar VNet-integreringsfunktionen. Mer information om VNet-integrering, inklusive felsökning och avancerad konfiguration finns i Integrera din app med ett virtuellt Azure-nätverk.
Förutsättningar
I den här självstudien är det viktigt att du förstår IP-adressering och undernät. Du kan börja med den här artikeln som beskriver grunderna för adressering och undernät. Många fler artiklar och videor är tillgängliga online.
Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
Om du redan har slutfört självstudien integrera Functions med ett virtuellt Azure-nätverk kan du gå vidare till Skapa en HTTP-utlösarfunktion.
Skapa ett virtuellt nätverk
I menyn i Azure-portalen väljer du Skapa en resurs. Från Azure Marketplace väljer du Nätverk Virtuellt>nätverk.
I Skapa virtuellt nätverk anger eller väljer du de inställningar som anges enligt följande tabell:
Inställning Värde Prenumeration Välj din prenumeration. Resursgrupp Välj Skapa ny, ange myResourceGroup och välj sedan OK. Name Ange myResourceGroup-vnet. Location Välj USA, östra. Välj Nästa: IP-adresser och för IPv4-adressutrymme anger du 10.10.0.0/16.
Välj Lägg till undernät och ange sedan Tutorial-Net som Undernätsnamn och 10.10.1.0/24 som undernätsadressintervall.
Välj Lägg till och sedan Granska + skapa. Lämna resten som standard och välj Skapa.
I Skapa virtuellt nätverk väljer du Skapa.
Därefter skapar du en funktionsapp i Premium-planen. Den här planen ger serverlös skalning med stöd för integrering av virtuella nätverk.
Skapa en funktionsapp i en Premium-plan
Den här självstudien visar hur du skapar din funktionsapp i en Premium-plan. Samma funktioner är också tillgängliga när du använder en dedikerad (App Service) plan.
Anteckning
För bästa möjliga upplevelse i den här självstudien väljer du .NET för körningsstack och Windows för operativsystem. Skapa även din funktionsapp i samma region som ditt virtuella nätverk.
I menyn i Azure-portalen eller på sidan Start väljer du Skapa en resurs.
På sidan Nytt väljer du Beräkningsfunktionsapp>.
På sidan Grundläggande använder du inställningarna för funktionsappen som anges i följande tabell:
Inställning Föreslaget värde Beskrivning Prenumeration Din prenumeration Prenumerationen som den nya funktionsappen skapas under. Resursgrupp myResourceGroup Namnet på den nya resursgrupp där du vill skapa funktionsappen. Funktionsappens namn Globalt unikt namn Namn som identifierar din nya funktionsapp. Giltiga tecken är a-z
(skiftlägesokänsligt),0-9
och-
.Publicera Kod Alternativ för att publicera kodfiler eller en Docker-container. Körningsstack Önskat språk Välj en körning som stöder det funktionsprogrammeringsspråk som du föredrar. Redigering i portalen stöds för närvarande inte för Python-utveckling. Region Önskad region Välj en region nära dig eller nära andra tjänster som dina funktioner har åtkomst till. Välj Nästa: Värd. På sidan Värd anger du följande inställningar:
Inställning Föreslaget värde Beskrivning Lagringskonto Globalt unikt namn Skapa ett lagringskonto som används av din funktionsapp. Namnet på ett lagringskonto måste vara mellan 3 och 24 tecken långt och får endast innehålla siffror och gemener. Du kan också använda ett befintligt konto som måste uppfylla kraven för lagringskontot. Operativsystem Önskat operativsystem Ett operativsystem är förvalt baserat på valet av körningsstack, men du kan ändra inställningen om det behövs. Python stöds bara i Linux. Redigering i portalen stöds bara i Windows. Planera Premium Värdplan som definierar hur resurser allokeras till din funktionsapp. Välj Premium. Som standard skapas en ny App Service plan. Standard-SKU och storlek är EP1, där EP står för elastisk premium. Mer information finns i listan över Premium-SKU:er.
När du kör JavaScript-funktioner i en Premium-plan bör du välja en instans som har färre vCPU:er. Mer information finns i Välj premiumplaner med en kärna.Välj Nästa: Övervakning. På sidan Övervakning anger du följande inställningar:
Inställning Föreslaget värde Beskrivning Application Insights Standardvärde Skapar en Application Insights-resurs med samma appnamn i närmaste region som stöds. Genom att expandera den här inställningen kan du ändra nytt resursnamn eller välja en annan plats i ett Azure-geografiskt område för att lagra dina data. Välj Granska + skapa för att granska valet av appkonfiguration.
På sidan Granska + skapa granskar du inställningarna och väljer sedan Skapa för att etablera och distribuera funktionsappen.
Välj ikonen Meddelanden i det övre högra hörnet i portalen och watch för meddelandet Distributionen lyckades.
Välj Gå till resurs att visa den nya funktionsappen. Du kan också välja Fäst på instrumentpanelen. Genom att fästa blir det enklare att återgå till den här funktionsappresursen från instrumentpanelen.
Ansluta funktionsappen till det virtuella nätverket
Nu kan du ansluta funktionsappen till det virtuella nätverket.
I funktionsappen väljer du Nätverk på den vänstra menyn och under VNet-integrering väljer du Klicka här för att konfigurera.
På sidan VNET-integrering väljer du Lägg till VNet.
I Status för nätverksfunktioner använder du inställningarna i tabellen nedanför bilden:
Inställning Föreslaget värde Beskrivning Virtual Network MyResourceGroup-vnet Det här virtuella nätverket är det du skapade tidigare. Undernät Skapa nytt undernät Skapa ett undernät i det virtuella nätverket som funktionsappen ska använda. VNet-integrering måste konfigureras för att använda ett tomt undernät. Namn på undernät Function-Net Namnet på det nya undernätet. Adressblock för virtuellt nätverk 10.10.0.0/16 Du bör bara ha ett definierat adressblock. Adressblock för undernät 10.10.2.0/24 Storleken på undernätet begränsar det totala antalet instanser som funktionsappen för Premium-planen kan skala ut till. I det här exemplet används ett /24
undernät med 254 tillgängliga värdadresser. Det här undernätet är överetablerad, men enkelt att beräkna.Välj OK för att lägga till undernätet. Stäng sidorna för VNet-integrering och nätverksfunktionsstatus för att återgå till funktionsappsidan.
Funktionsappen kan nu komma åt det virtuella nätverket. När anslutningen är aktiverad är platsinställningen vnetrouteallenabled
inställd på 1
. Du måste ha antingen den här webbplatsinställningen eller den äldre WEBSITE_VNET_ROUTE_ALL
programinställningen inställd på 1
.
Därefter lägger du till en HTTP-utlöst funktion i funktionsappen.
Skapa en HTTP-utlösarfunktion
På den vänstra menyn i funktionsfönstret väljer du Funktioner och sedan Lägg till på den översta menyn.
I fönstret Ny funktion väljer du Http-utlösare och accepterar standardnamnet för Ny funktion eller anger ett nytt namn.
I Kod + test ersätter du den mallgenererade C#-skriptkoden (.csx) med följande kod:
#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); }
Den här koden anropar en extern webbplats som returnerar anroparens IP-adress, vilket i det här fallet är den här funktionen. Med den här metoden kan du enkelt fastställa den utgående IP-adress som används av funktionsappen.
Nu är du redo att köra funktionen och kontrollera de aktuella utgående IP-adresserna.
Verifiera aktuella utgående IP-adresser
Nu kan du köra funktionen. Men först checkar du in portalen och ser vilka utgående IP-adresser som används av funktionsappen.
I funktionsappen väljer du Egenskaper och granskar fältet Utgående IP-adresser .
Gå nu tillbaka till http-utlösarfunktionen, välj Kod + test och sedan Testa/kör.
Välj Kör för att köra funktionen och växla sedan till Utdata.
Kontrollera att IP-adressen i HTTP-svarstexten är ett av värdena från de utgående IP-adresserna som du visade tidigare.
Nu kan du skapa en offentlig IP-adress och använda en NAT-gateway för att ändra den här utgående IP-adressen.
Skapa offentlig IP-adress
I resursgruppen väljer du Lägg till, söker i Azure Marketplace efter offentlig IP-adress och väljer Skapa. Använd inställningarna i tabellen nedanför bilden:
Inställning Föreslaget värde IP-version IPv4 SKU Standard Nivå Regional Namn Utgående IP Prenumeration se till att din prenumeration visas Resursgrupp myResourceGroup (eller namnet du tilldelade till resursgruppen) Plats USA, östra (eller plats som du har tilldelat till dina andra resurser) Tillgänglighetszon Ingen zon Välj Skapa för att skicka distributionen.
När distributionen är klar navigerar du till den nyligen skapade offentliga IP-adressresursen och visar IP-adressen i översikten.
Skapa NAT-gateway
Nu ska vi skapa NAT-gatewayen. När du börjar med den tidigare självstudienFunction-Net
om virtuella nätverk var det föreslagna undernätets namn och MyResourceGroup-vnet
var det föreslagna namnet på det virtuella nätverket i den självstudien.
I resursgruppen väljer du Lägg till, söker i Azure Marketplace efter NAT-gateway och väljer Skapa. Använd inställningarna i tabellen under bilden för att fylla i fliken Grundläggande :
Inställning Föreslaget värde Prenumeration Din prenumeration Resursgrupp myResourceGroup (eller namnet du tilldelade till resursgruppen) NAT-gatewaynamn myNatGateway Region USA, östra (eller plats som du har tilldelat till dina andra resurser) Tillgänglighetszon Ingen Välj Nästa: Utgående IP-adress. I fältet Offentliga IP-adresser väljer du den tidigare skapade offentliga IP-adressen. Låt offentliga IP-prefix vara avmarkerade.
Välj Nästa: Undernät. Välj resursen myResourceGroup-vnet i fältet Virtuellt nätverk och Undernätet Function-Net .
Välj Granska + skapa och sedan Skapa för att skicka distributionen.
När distributionen är klar är NAT-gatewayen redo att dirigera trafik från funktionsappens undernät till Internet.
Verifiera nya utgående IP-adresser
Upprepa stegen tidigare för att köra funktionen igen. Nu bör du se den utgående IP-adress som du konfigurerade i NAT som visas i funktionsutdata.
Rensa resurser
Du har skapat resurser för att slutföra den här självstudien. Du debiteras för dessa resurser, beroende på kontostatus och tjänstpriser. För att undvika extra kostnader tar du bort resurserna när du vet att de behövs längre.
Gå till sidan Resursgrupp i Azure Portal.
Om du vill komma till sidan från funktionsappsidan väljer du fliken Översikt och väljer sedan länken under Resursgrupp.
Gå till sidan från instrumentpanelen genom att välja Resursgrupper och sedan välja den resursgrupp som du använde för den här artikeln.
På sidan Resursgrupp granskar du listan över resurser som ingår och kontrollerar att det är de som du vill ta bort.
Välj Ta bort resursgrupp och följ anvisningarna.
Borttagningen kan ta några minuter. När du är färdig visas ett meddelande i några sekunder. Du kan även välja klockikonen längst upp på sidan för att se meddelandet.