Nätverksalternativ för Azure Functions
I den här artikeln beskrivs de nätverksfunktioner som är tillgängliga i värdalternativen för Azure Functions. Följande nätverksalternativ kan kategoriseras som funktioner för inkommande och utgående nätverk. Med inkommande funktioner kan du begränsa åtkomsten till din app, medan utgående funktioner gör att du kan ansluta appen till resurser som skyddas av ett virtuellt nätverk och styra hur utgående trafik dirigeras.
Värdmodellerna har olika nivåer av tillgänglig nätverksisolering. Genom att välja rätt kan du uppfylla kraven på nätverksisolering.
Funktion | Flex-förbrukningsplan | Förbrukningsplan | Premium-plan | Dedikerad plan-ASE/ | Container Apps1 |
---|---|---|---|---|---|
Inkommande IP-begränsningar | ✔ | ✔ | ✔ | ✔ | ✔ |
Inkommande privata slutpunkter | ✔ | ✔ | ✔ | ||
Integrering med virtuellt nätverk | ✔ | ✔2 | ✔3 | ✔ | |
Utgående IP-begränsningar | ✔ | ✔ | ✔ | ✔ |
- Mer information finns i Nätverk i Azure Container Apps-miljön.
- Det finns särskilda överväganden när du arbetar med utlösare för virtuella nätverk.
- Endast den dedikerade/ASE-planen stöder gateway-nödvändig integrering av virtuella nätverk.
Snabbstartsresurser
Använd följande resurser för att snabbt komma igång med Azure Functions-nätverksscenarier. Dessa resurser refereras i hela artikeln.
- ARM-mallar, Bicep-filer och Terraform-mallar:
- ENDAST ARM-mallar:
- Funktionsapp med privata Slutpunkter i Azure Storage.
- Azure-funktionsapp med integrering av virtuellt nätverk.
- Tutorials:
Funktioner för inkommande nätverk
Med följande funktioner kan du filtrera inkommande begäranden till din funktionsapp.
Begränsningar för inkommande åtkomst
Du kan använda åtkomstbegränsningar för att definiera en prioritetsbeställd lista över IP-adresser som tillåts eller nekas åtkomst till din app. Listan kan innehålla IPv4- och IPv6-adresser eller specifika virtuella nätverksundernät med hjälp av tjänstslutpunkter. När det finns en eller flera poster finns en implicit "neka alla" i slutet av listan. IP-begränsningar fungerar med alla funktionsvärdalternativ.
Åtkomstbegränsningar är tillgängliga i Flex Consumption Plan, Elastic Premium, Consumption och App Service.
Kommentar
Med nätverksbegränsningar på plats kan du bara distribuera inifrån ditt virtuella nätverk eller när du har angett IP-adressen för den dator som du använder för att komma åt Azure Portal i listan Säkra mottagare. Du kan dock fortfarande hantera funktionen med hjälp av portalen.
Mer information finns i Begränsningar för statisk åtkomst i Azure App Service.
Privata slutpunkter
Azure privat slutpunkt är ett nätverksgränssnitt som ansluter dig privat och säkert till en tjänst som drivs av Azure Private Link. Privat slutpunkt använder en privat IP-adress från ditt virtuella nätverk, vilket effektivt tar in tjänsten i ditt virtuella nätverk.
Du kan använda privat slutpunkt för dina funktioner som finns i Flex Consumption-, Elastic Premium- och Dedicated-abonnemangen (App Service).
Om du vill göra anrop till privata slutpunkter måste du se till att DNS-sökningarna matchar den privata slutpunkten. Du kan tillämpa det här beteendet på något av följande sätt:
- Integrera med privata Azure DNS-zoner. När det virtuella nätverket inte har någon anpassad DNS-server görs detta automatiskt.
- Hantera den privata slutpunkten på DEN DNS-server som används av din app. Om du vill hantera en privat slutpunkt måste du känna till slutpunktsadressen och använda en A-post för att referera till slutpunkten som du försöker nå.
- Konfigurera din egen DNS-server så att den vidarebefordrar till privata Azure DNS-zoner.
Mer information finns i Använda privata slutpunkter för Web Apps.
Om du vill anropa andra tjänster som har en privat slutpunktsanslutning, till exempel lagring eller Service Bus, måste du konfigurera appen för att göra utgående anrop till privata slutpunkter. Mer information om hur du använder privata slutpunkter med lagringskontot för funktionsappen finns i begränsa ditt lagringskonto till ett virtuellt nätverk.
Tjänstslutpunkter
Med hjälp av tjänstslutpunkter kan du begränsa många Azure-tjänster till valda virtuella nätverksundernät för att ge en högre säkerhetsnivå. Regional integrering av virtuella nätverk gör det möjligt för din funktionsapp att nå Azure-tjänster som skyddas med tjänstslutpunkter. Den här konfigurationen stöds för alla planer som stöder integrering av virtuella nätverk. Följ dessa steg för att få åtkomst till en säker tjänstslutpunkt:
- Konfigurera regional integrering av virtuella nätverk med funktionsappen för att ansluta till ett specifikt undernät.
- Gå till måltjänsten och konfigurera tjänstslutpunkter mot integrationsundernätet.
Mer information finns i Tjänstslutpunkter för virtuellt nätverk.
Använda tjänstslutpunkter
Om du vill begränsa åtkomsten till ett visst undernät skapar du en begränsningsregel med en typ av virtuellt nätverk . Du kan sedan välja den prenumeration, det virtuella nätverket och undernätet som du vill tillåta eller neka åtkomst till.
Om tjänstslutpunkter inte redan är aktiverade med Microsoft.Web
för det undernät som du har valt aktiveras de automatiskt om du inte markerar kryssrutan Ignorera saknade Microsoft.Web-tjänstslutpunkter . Scenariot där du kanske vill aktivera tjänstslutpunkter i appen, men inte undernätet, beror främst på om du har behörighet att aktivera dem i undernätet.
Om du behöver någon annan för att aktivera tjänstslutpunkter i undernätet markerar du kryssrutan Ignorera saknade Microsoft.Web-tjänstslutpunkter . Din app är konfigurerad för tjänstslutpunkter, som du aktiverar senare i undernätet.
Du kan inte använda tjänstslutpunkter för att begränsa åtkomsten till appar som körs i en App Service-miljön. När din app finns i en App Service-miljön kan du styra åtkomsten till den genom att tillämpa IP-åtkomstregler.
Information om hur du konfigurerar tjänstslutpunkter finns i Upprätta åtkomst till privata Azure Functions-webbplatser.
Funktioner för utgående nätverk
Du kan använda funktionerna i det här avsnittet för att hantera utgående anslutningar som görs av din app.
Virtual Network-integration
Det här avsnittet beskriver de funktioner som Functions stöder för att styra utgående data från din app.
Integrering av virtuella nätverk ger funktionsappen åtkomst till resurser i ditt virtuella nätverk. När appen är integrerad dirigeras utgående trafik via det virtuella nätverket. På så sätt kan din app komma åt privata slutpunkter eller resurser med regler som tillåter trafik från endast utvalda undernät. När målet är en IP-adress utanför det virtuella nätverket skickas käll-IP fortfarande från en av adresserna som anges i appens egenskaper, såvida du inte har konfigurerat en NAT Gateway.
Azure Functions stöder två typer av integrering av virtuella nätverk:
- Regional integrering av virtuella nätverk för appar som körs på värdplaner för Flex Consumption, Elastic Premium, Dedicated (App Service) och Container Apps (rekommenderas)
- Gateway-nödvändig integrering av virtuellt nätverk för appar som körs på värdplanen dedikerad (App Service)
Information om hur du konfigurerar integrering av virtuella nätverk finns i Aktivera integrering av virtuella nätverk.
Integrering av regionala virtuella nätverk
Med regional integrering av virtuella nätverk kan din app komma åt:
- Resurser i samma virtuella nätverk som din app.
- Resurser i virtuella nätverk som är peer-kopplade till det virtuella nätverk som appen är integrerad med.
- Tjänstslutpunktsskyddade tjänster.
- Resurser i Azure ExpressRoute-anslutningar.
- Resurser mellan peer-kopplade anslutningar, inklusive Azure ExpressRoute-anslutningar.
- Privata slutpunkter
När du använder regional integrering av virtuella nätverk kan du använda följande Azure-nätverksfunktioner:
- Nätverkssäkerhetsgrupper (NSG:er): Du kan blockera utgående trafik med en NSG som placeras i ditt integrationsundernät. Reglerna för inkommande trafik gäller inte eftersom du inte kan använda integrering av virtuella nätverk för att ge inkommande åtkomst till din app.
- Routningstabeller (UDR): Du kan placera en routningstabell i integrationsundernätet för att skicka utgående trafik där du vill.
Kommentar
När du dirigerar all utgående trafik till ditt virtuella nätverk omfattas den av de NSG:er och UDR:er som tillämpas på ditt integrationsundernät. När det virtuella nätverket är integrerat skickas funktionsappens utgående trafik till offentliga IP-adresser fortfarande från de adresser som anges i appegenskaperna, såvida du inte anger vägar som dirigerar trafiken någon annanstans.
Regional integrering av virtuella nätverk kan inte använda port 25.
Överväganden för Flex Consumption-planen :
- Kontrollera att
Microsoft.App
Azure-resursprovidern är aktiverad för din prenumeration genom att följa dessa instruktioner. Detta krävs för delegering av undernät. - Den delegering av undernät som krävs när du kör i en Flex Consumption-plan är
Microsoft.App/environments
. Detta skiljer sig från abonnemangen Elastic Premium och Dedicated (App Service), som har ett annat delegeringskrav. - Du kan planera att högst 40 IP-adresser ska användas för en funktionsapp, även om appen skalar över 40. Om du till exempel har 15 Flex Consumption-funktionsappar som är integrerade i samma undernät måste du planera för högst 15x40 = 600 IP-adresser. Den här gränsen kan komma att ändras och tillämpas inte.
- Undernätet kan inte redan användas för andra ändamål (till exempel privata slutpunkter eller tjänstslutpunkter eller delegerade till någon annan värdplan eller tjänst). Du kan dela samma undernät med flera Flex Consumption-appar, men nätverksresurserna delas mellan dessa funktionsappar, vilket kan leda till att en app påverkar andras prestanda i samma undernät.
Överväganden för abonnemangen Elastic Premium, Dedicated (App Service) och Container Apps :
- Funktionen är tillgänglig för Elastic Premium och App Service Premium V2 och Premium V3. Den är också tillgänglig i Standard men endast från nyare App Service-distributioner. Om du använder en äldre distribution kan du bara använda funktionen från en Premium V2 App Service-plan. Om du vill se till att du kan använda funktionen i en Standard App Service-plan skapar du din app i en Premium V3 App Service-plan. Dessa planer stöds bara för våra senaste distributioner. Du kan skala ner om du vill efter det.
- Funktionen kan inte användas av isolerade planappar som finns i en App Service-miljön.
- Appen och det virtuella nätverket måste finnas i samma region.
- Funktionen kräver ett oanvänt undernät som är ett /28 eller större i ett virtuellt Azure Resource Manager-nätverk.
- Integrationsundernätet kan endast användas av en App Service-plan.
- Du kan ha upp till två regionala integreringar av virtuella nätverk per App Service-plan. Flera appar i samma App Service-plan kan använda samma integrationsundernät.
- Du kan inte ta bort ett virtuellt nätverk med en integrerad app. Ta bort integreringen innan du tar bort det virtuella nätverket.
- Du kan inte ändra prenumerationen på en app eller en plan när det finns en app som använder regional integrering av virtuella nätverk.
Aktivera integrering av virtuellt nätverk
I funktionsappen i Azure Portal väljer du Nätverk och under VNet-integrering väljer du Klicka här för att konfigurera.
Välj Lägg till virtuellt nätverk.
Listrutan innehåller alla virtuella Azure Resource Manager-nätverk i din prenumeration i samma region. Välj det virtuella nätverk som du vill integrera med.
Flex Consumption- och Elastic Premium-värdplaner stöder endast regional integrering av virtuella nätverk. Om det virtuella nätverket finns i samma region skapar du antingen ett nytt undernät eller väljer ett tomt, befintligt undernät.
Om du vill välja ett virtuellt nätverk i en annan region måste du ha en virtuell nätverksgateway etablerad med punkt-till-plats aktiverat. Integrering av virtuella nätverk mellan regioner stöds bara för dedikerade planer, men globala peerings fungerar med regional integrering av virtuella nätverk.
Under integreringen startas appen om. När integreringen är klar visas information om det virtuella nätverk som du är integrerad med. Som standard är Route All aktiverat och all trafik dirigeras till ditt virtuella nätverk.
Om du bara vill att din privata trafik (RFC1918 trafik) ska dirigeras följer du stegen i den här App Service-artikeln.
Undernät
Integrering av virtuella nätverk är beroende av ett dedikerat undernät. När du etablerar ett undernät förlorar Azure-undernätet fem IP-adresser från början. För Elastic Premium- och App Service-abonnemangen används en adress från integrationsundernätet för varje planinstans. När du skalar din app till fyra instanser används fyra adresser. För Flex Consumption gäller detta inte och instanser delar IP-adresser.
I abonnemangen Elastic Premium och Dedicated (App Service) fördubblas det nödvändiga adressutrymmet under en kort tidsperiod när du skalar upp eller ned i instansstorlek. Detta påverkar de verkliga, tillgängliga instanser som stöds för en viss undernätsstorlek. I följande tabell visas både de maximala tillgängliga adresserna per CIDR-block och vilken effekt detta har på vågrät skala:
CIDR-blockstorlek | Maximalt antal tillgängliga adresser | Maximal vågrät skala (instanser)* |
---|---|---|
/28 | 11 | 5 |
/27 | 27 | 13 |
/26 | 59 | 29 |
*Förutsätter att du behöver skala upp eller ned i antingen storlek eller SKU någon gång.
Eftersom undernätsstorleken inte kan ändras efter tilldelningen använder du ett undernät som är tillräckligt stort för att hantera den skala som appen kan nå. För att undvika problem med undernätskapacitet för Functions Elastic Premium-planer bör du använda en /24 med 256 adresser för Windows och en /26 med 64 adresser för Linux. När du skapar undernät i Azure Portal som en del av integreringen med det virtuella nätverket krävs en minsta storlek på /24 respektive /26 för Windows respektive Linux.
Med Flex Consumption-planen kan flera appar som körs i Flex Consumption-planen integreras med samma undernät. Detta gäller inte för elastic premium- och dedikerade värdplaner (App Service). Dessa planer tillåter endast att två virtuella nätverk ansluts med varje App Service-plan. Flera appar från en enda App Service-plan kan ansluta till samma undernät, men appar från en annan plan kan inte använda samma undernät.
Funktionen stöds fullt ut för både Windows- och Linux-appar, inklusive anpassade containrar. Alla beteenden fungerar på samma sätt mellan Windows-appar och Linux-appar.
Nätverkssäkerhetsgrupper
Du kan använda nätverkssäkerhetsgrupper för att styra trafiken mellan resurser i ditt virtuella nätverk. Du kan till exempel skapa en säkerhetsregel som blockerar appens utgående trafik från att nå en resurs i ditt virtuella nätverk eller från att lämna nätverket. Dessa säkerhetsregler gäller för appar som har konfigurerat integrering av virtuella nätverk. Om du vill blockera trafik till offentliga adresser måste du ha integrering av virtuella nätverk och Route All aktiverat. Reglerna för inkommande trafik i en NSG gäller inte för din app eftersom integrering av virtuella nätverk endast påverkar utgående trafik från din app.
Om du vill styra inkommande trafik till din app använder du funktionen Åtkomstbegränsningar. En NSG som tillämpas på ditt integrationsundernät gäller oavsett vilka vägar som tillämpas på ditt integrationsundernät. Om din funktionsapp är ett virtuellt nätverk integrerat med Route All aktiverat och du inte har några vägar som påverkar trafiken med offentliga adresser i integrationsundernätet, omfattas all utgående trafik fortfarande av NSG:er som tilldelats integrationsundernätet. När Route All inte är aktiverat tillämpas NSG:er endast på RFC1918 trafik.
Vägar
Du kan använda routningstabeller för att dirigera utgående trafik från din app till var du vill. Som standard påverkar routningstabeller bara din RFC1918 måltrafik. När Route All är aktiverat påverkas alla dina utgående anrop. När Route All är inaktiverat påverkas endast privat trafik (RFC1918) av routningstabellerna. Vägar som anges i integrationsundernätet påverkar inte svar på inkommande appbegäranden. Vanliga mål kan vara brandväggsenheter eller gatewayer.
Om du vill dirigera all utgående trafik lokalt kan du använda en routningstabell för att skicka all utgående trafik till din ExpressRoute-gateway. Om du dirigerar trafik till en gateway måste du ange vägar i det externa nätverket så att svar skickas tillbaka.
BGP-vägar (Border Gateway Protocol) påverkar även din apptrafik. Om du har BGP-vägar från något som liknar en ExpressRoute-gateway påverkas appens utgående trafik. Som standard påverkar BGP-vägar endast din RFC1918 måltrafik. När din funktionsapp är virtuellt nätverk integrerat med Route All aktiverat kan all utgående trafik påverkas av dina BGP-vägar.
Utgående IP-begränsningar
Utgående IP-begränsningar är tillgängliga i en Flex Consumption-plan, Elastic Premium-plan, App Service-plan eller App Service-miljön. Du kan konfigurera utgående begränsningar för det virtuella nätverk där din App Service-miljön distribueras.
När du integrerar en funktionsapp i en Elastic Premium-plan eller en App Service-plan med ett virtuellt nätverk kan appen fortfarande göra utgående anrop till Internet som standard. Genom att integrera funktionsappen med ett virtuellt nätverk med Route All aktiverat tvingar du all utgående trafik att skickas till ditt virtuella nätverk, där regler för nätverkssäkerhetsgrupper kan användas för att begränsa trafiken. För Flex Consumption dirigeras all trafik redan via det virtuella nätverket och Route All behövs inte.
Information om hur du styr den utgående IP-adressen med hjälp av ett virtuellt nätverk finns i Självstudie: Kontrollera utgående IP-adress för Azure Functions med en NAT-gateway för virtuella Azure-nätverk.
Privata Azure DNS-zoner
När appen har integrerats med ditt virtuella nätverk använder den samma DNS-server som ditt virtuella nätverk har konfigurerats med och fungerar med de privata Azure DNS-zoner som är länkade till det virtuella nätverket.
Automation
Med följande API:er kan du programmatiskt hantera regionala integreringar av virtuella nätverk:
- Azure CLI: Använd kommandona
az functionapp vnet-integration
för att lägga till, lista eller ta bort en regional integrering av virtuella nätverk. - ARM-mallar: Regional integrering av virtuella nätverk kan aktiveras med hjälp av en Azure Resource Manager-mall. Ett fullständigt exempel finns i den här snabbstartsmallen för funktioner.
Hybridanslutningar
Hybridanslutningar är en funktion i Azure Relay som du kan använda för att komma åt programresurser i andra nätverk. Den ger åtkomst från din app till en programslutpunkt. Du kan inte använda den för att komma åt ditt program. Hybridanslutningar är tillgängliga för funktioner som körs i Windows i alla utom förbrukningsplanen.
Som används i Azure Functions korrelerar varje hybridanslutning med en enda TCP-värd och portkombination. Det innebär att hybridanslutningens slutpunkt kan finnas på valfritt operativsystem och valfritt program så länge du har åtkomst till en TCP-lyssnarport. Funktionen Hybridanslutningar vet eller bryr sig inte om vad programprotokollet är eller vad du har åtkomst till. Det ger bara nätverksåtkomst.
Mer information finns i App Service-dokumentationen för hybridanslutningar. Samma konfigurationssteg stöder Azure Functions.
Viktigt!
Hybridanslutningar stöds bara när funktionsappen körs i Windows. Linux-appar stöds inte.
Ansluta till Azure Services via ett virtuellt nätverk
Integrering av virtuella nätverk gör att funktionsappen kan komma åt resurser i ett virtuellt nätverk. I det här avsnittet beskrivs vad du bör tänka på när du försöker ansluta appen till vissa tjänster.
Begränsa ett lagringskonto till ett virtuellt nätverk
Kommentar
Om du snabbt vill distribuera en funktionsapp med privata slutpunkter aktiverade på lagringskontot läser du följande mall: Funktionsapp med privata Slutpunkter i Azure Storage.
När du skapar en funktionsapp måste du skapa eller länka till ett allmänt Azure Storage-konto som stöder blob-, kö- och tabelllagring. Du kan ersätta det här lagringskontot med ett som skyddas med tjänstslutpunkter eller privata slutpunkter.
Du kan använda ett nätverksbegränsat lagringskonto med funktionsappar i Flex Consumption-, Elastic Premium- och Dedicated-abonnemangen (App Service). Förbrukningsplanen stöds inte. För Elastic Premium- och Dedicated-planer måste du se till att routning av privata innehållsresurser har konfigurerats. Information om hur du konfigurerar din funktionsapp med ett lagringskonto som skyddas med ett virtuellt nätverk finns i Begränsa ditt lagringskonto till ett virtuellt nätverk.
Använda Key Vault-referenser
Du kan använda Azure Key Vault-referenser för att använda hemligheter från Azure Key Vault i ditt Azure Functions-program utan att kräva några kodändringar. Azure Key Vault är en tjänst som tillhandahåller centraliserad hemlighetshantering med fullständig kontroll över åtkomstprinciper och granskningshistorik.
Om integrering av virtuella nätverk har konfigurerats för appen kan Key Vault-referenser användas för att hämta hemligheter från ett nätverksbegränsat valv.
Utlösare för virtuellt nätverk (icke-HTTP)
Din arbetsbelastning kan kräva att din app utlöses från en händelsekälla som skyddas av ett virtuellt nätverk. Det finns två alternativ om du vill att appen ska skalas dynamiskt baserat på antalet händelser som tas emot från icke-HTTP-utlösarkällor:
- Kör funktionsappen i en Flex-förbrukning.
- Kör funktionsappen i en Elastic Premium-plan och aktivera stöd för utlösare för virtuella nätverk.
Funktionsappar som körs på dedikerade (App Service) -planer skalas inte dynamiskt baserat på händelser. I stället styrs utskalning av regler för autoskalning som du definierar.
Elastic Premium-plan med utlösare för virtuella nätverk
Med Elastic Premium-planen kan du skapa funktioner som utlöses av tjänster som skyddas av ett virtuellt nätverk. Dessa icke-HTTP-utlösare kallas virtuella nätverksutlösare.
Som standard leder utlösare för virtuella nätverk inte till att funktionsappen skalas utöver antalet förvärmade instanser. Vissa tillägg stöder dock utlösare för virtuella nätverk som gör att funktionsappen skalas dynamiskt. Du kan aktivera den här dynamiska skalningsövervakningen i funktionsappen för tillägg som stöds på något av följande sätt:
Gå till funktionsappen i Azure Portal.
Under Inställningar väljer du Konfiguration och på fliken Funktionskörningsinställningar anger du Körningsskalningsövervakning till På.
Välj Spara för att uppdatera funktionsappens konfiguration och starta om appen.
Dricks
Aktivering av övervakning av utlösare för virtuella nätverk kan påverka programmets prestanda, även om den här effekten sannolikt är mycket liten.
Stöd för dynamisk skalningsövervakning av utlösare för virtuella nätverk är inte tillgängligt i version 1.x av Functions-körningen.
Tilläggen i den här tabellen stöder dynamisk skalningsövervakning av utlösare för virtuella nätverk. För att få bästa skalningsprestanda bör du uppgradera till versioner som också stöder målbaserad skalning.
Tillägg (lägsta version) | Endast körningsskalningsövervakning | Med målbaserad skalning |
---|---|---|
Microsoft.Azure.WebJobs.Extensions.CosmosDB | > 3.0.5 | > 4.1.0 |
Microsoft.Azure.WebJobs.Extensions.DurableTask | > 2.0.0 | saknas |
Microsoft.Azure.WebJobs.Extensions.EventHubs | > 4.1.0 | > 5.2.0 |
Microsoft.Azure.WebJobs.Extensions.ServiceBus | > 3.2.0 | > 5.9.0 |
Microsoft.Azure.WebJobs.Extensions.Storage | > 3.0.10 | > 5.1.0* |
* Endast kölagring.
Viktigt!
När du aktiverar övervakning av utlösare för virtuella nätverk kan endast utlösare för dessa tillägg göra att appen skalas dynamiskt. Du kan fortfarande använda utlösare från tillägg som inte finns i den här tabellen, men de orsakar inte skalning utöver antalet förvärmda instanser. En fullständig lista över alla utlösar- och bindningstillägg finns i Utlösare och bindningar.
App Service-plan och App Service-miljön med utlösare för virtuella nätverk
När din funktionsapp körs i antingen en App Service-plan eller en App Service-miljön kan du skriva funktioner som utlöses av resurser som skyddas av ett virtuellt nätverk. För att dina funktioner ska utlösas korrekt måste appen vara ansluten till ett virtuellt nätverk med åtkomst till den resurs som definierats i utlösaranslutningen.
Anta till exempel att du vill konfigurera Azure Cosmos DB att endast acceptera trafik från ett virtuellt nätverk. I det här fallet måste du distribuera funktionsappen i en App Service-plan som tillhandahåller integrering av virtuella nätverk med det virtuella nätverket. Integrering gör att en funktion kan utlösas av den Azure Cosmos DB-resursen.
Testningsöverväganden
När du testar funktioner i en funktionsapp med privata slutpunkter måste du utföra dina tester från samma virtuella nätverk, till exempel på en virtuell dator (VM) i nätverket. Om du vill använda alternativet Kod + test i portalen från den virtuella datorn måste du lägga till följande CORS-ursprung i funktionsappen :
https://functions-next.azure.com
https://functions-staging.azure.com
https://functions.azure.com
https://portal.azure.com
Om du har begränsad åtkomst till funktionsappen med privata slutpunkter eller någon annan åtkomstbegränsning måste du också lägga till tjänsttaggen AzureCloud
i listan över tillåtna. Så här uppdaterar du listan över tillåtna:
Gå till funktionsappen och välj Inställningar>Nätverk och välj sedan Konfiguration av inkommande åtkomst>Offentlig nätverksåtkomst.
Kontrollera att offentlig nätverksåtkomst är inställd på Aktiverad från välj virtuella nätverk och IP-adresser.
Lägg till en regel under Webbplatsåtkomst och regler:
Välj
Service Tag
som Typ av källinställningar ochAzureCloud
som tjänsttagg.Kontrollera att åtgärden är Tillåt och ange önskat namn och prioritet.
Felsökning
Funktionen är enkel att konfigurera, men det betyder inte att din upplevelse blir problemfri. Om du får problem med att komma åt den önskade slutpunkten finns det några verktyg som du kan använda för att testa anslutningen från appkonsolen. Det finns två konsoler som du kan använda. Den ena är Kudu-konsolen och den andra är konsolen i Azure Portal. Om du vill nå Kudu-konsolen från din app går du till Verktyg>Kudu. Du kan också nå Kudo-konsolen på [sitename].scm.azurewebsites.net. När webbplatsen har lästs in går du till fliken Felsökningskonsol. Gå till verktygskonsolen> för att komma till den Azure Portal-värdbaserade konsolen från din app.
Verktyg
I interna Windows-appar fungerar inte verktygen ping, nslookup och tracert via konsolen på grund av säkerhetsbegränsningar (de fungerar i anpassade Windows-containrar). För att fylla tomrummet läggs två separata verktyg till. För att testa DNS-funktioner har vi lagt till ett verktyg med namnet nameresolver.exe. Syntax:
nameresolver.exe hostname [optional: DNS Server]
Du kan använda nameresolver för att kontrollera de värdnamn som appen är beroende av. På så sätt kan du testa om du har något felkonfigurerat med din DNS eller kanske inte har åtkomst till DNS-servern. Du kan se den DNS-server som appen använder i konsolen genom att titta på miljövariablerna WEBSITE_DNS_SERVER och WEBSITE_DNS_ALT_SERVER.
Kommentar
Verktyget nameresolver.exe fungerar för närvarande inte i anpassade Windows-containrar.
Du kan använda nästa verktyg för att testa TCP-anslutningen till en värd- och portkombination. Det här verktyget kallas tcpping och syntaxen är:
tcpping.exe hostname [optional: port]
Tcpping-verktyget anger om du kan nå en specifik värd och port. Det kan bara visa framgång om det finns ett program som lyssnar på värd- och portkombinationen och det finns nätverksåtkomst från din app till den angivna värden och porten.
Felsöka åtkomst till virtuella nätverksbaserade resurser
Ett antal saker kan hindra din app från att nå en specifik värd och port. För det mesta är det en av dessa saker:
- En brandvägg är i vägen. Om du har en brandvägg i vägen når du TCP-tidsgränsen. TCP-timeouten är 21 sekunder i det här fallet. Använd tcpping-verktyget för att testa anslutningen. TCP-timeouter kan orsakas av många saker utöver brandväggar, men börja där.
- DNS är inte tillgängligt. DNS-tidsgränsen är 3 sekunder per DNS-server. Om du har två DNS-servrar är tidsgränsen 6 sekunder. Använd nameresolver för att se om DNS fungerar. Du kan inte använda nslookup eftersom det inte använder den DNS som ditt virtuella nätverk har konfigurerats med. Om det inte går att komma åt kan du ha en brandvägg eller NSG som blockerar åtkomsten till DNS eller så kan den vara nere.
Om dessa objekt inte svarar på dina problem kan du först titta efter saker som:
Integrering av regionala virtuella nätverk
- Är målet en icke-RFC1918 adress och du har inte Route All aktiverat?
- Finns det en NSG som blockerar utgående trafik från ditt integrationsundernät?
- Är din lokala gateway konfigurerad för att dirigera trafik tillbaka till Azure om du använder Azure ExpressRoute eller ett VPN? Om du kan nå slutpunkter i ditt virtuella nätverk men inte lokalt kontrollerar du dina vägar.
- Har du tillräckligt med behörighet för att ange delegering i integrationsundernätet? Under konfigurationen för integrering av regionala virtuella nätverk delegeras ditt integrationsundernät till Microsoft.Web/serverFarms. Användargränssnittet för VNet-integrering delegerar undernätet till Microsoft.Web/serverFarms automatiskt. Om ditt konto inte har tillräcklig nätverksbehörighet för att ange delegering behöver du någon som kan ange attribut i ditt integrationsundernät för att delegera undernätet. Om du vill delegera integreringsundernätet manuellt går du till undernätets användargränssnitt för Azure Virtual Network och anger delegeringen för Microsoft.Web/serverFarms.
Gateway-nödvändig integrering av virtuellt nätverk
- Är punkt-till-plats-adressintervallet i RFC 1918-intervallen (10.0.0.0-10.255.255.255 /172.16.20.0-172.31.255.255 / 192.168.0.0-192.168.255.255)?
- Visas gatewayen som upp i portalen? Om din gateway är nere tar du upp den igen.
- Visas certifikaten som synkroniserade eller misstänker du att nätverkskonfigurationen har ändrats? Om dina certifikat inte är synkroniserade eller om du misstänker att en ändring har gjorts i konfigurationen av det virtuella nätverket som inte har synkroniserats med dina ASP:er väljer du Synkronisera nätverk.
- Är den lokala gatewayen konfigurerad för att dirigera trafik tillbaka till Azure om du använder ett VPN? Om du kan nå slutpunkter i ditt virtuella nätverk men inte lokalt kontrollerar du dina vägar.
- Försöker du använda en samexistensgateway som stöder både punkt-till-plats och ExpressRoute? Samexistensgatewayer stöds inte med integrering av virtuella nätverk.
Att felsöka nätverksproblem är en utmaning eftersom du inte kan se vad som blockerar åtkomsten till en specifik kombination av värd:port. Några orsaker är:
- Du har en brandvägg på värden som förhindrar åtkomst till programporten från ditt punkt-till-plats-IP-intervall. Att korsa undernät kräver ofta offentlig åtkomst.
- Målvärden är nere.
- Programmet är nere.
- Du hade fel IP-adress eller värdnamn.
- Programmet lyssnar på en annan port än vad du förväntade dig. Du kan matcha ditt process-ID med lyssningsporten med hjälp av "netstat -aon" på slutpunktsvärden.
- Dina nätverkssäkerhetsgrupper är konfigurerade på ett sådant sätt att de förhindrar åtkomst till programvärden och porten från ditt punkt-till-plats-IP-intervall.
Du vet inte vilken adress din app faktiskt använder. Det kan vara vilken adress som helst i integrationsundernätet eller adressintervallet punkt-till-plats, så du måste tillåta åtkomst från hela adressintervallet.
Fler felsökningssteg är:
- Anslut till en virtuell dator i det virtuella nätverket och försök att nå resursvärden:port därifrån. Om du vill testa för TCP-åtkomst använder du PowerShell-kommandot Test-NetConnection. Syntax:
Test-NetConnection hostname [optional: -Port]
- Ta upp ett program på en virtuell dator och testa åtkomsten till den värden och porten från konsolen från din app med hjälp av tcpping.
Lokala resurser
Om din app inte kan nå en lokal resurs kontrollerar du om du kan nå resursen från det virtuella nätverket. Använd PowerShell-kommandot Test-NetConnection för att söka efter TCP-åtkomst. Om den virtuella datorn inte kan nå din lokala resurs kanske vpn- eller ExpressRoute-anslutningen inte är korrekt konfigurerad.
Om den virtuella nätverksvärdade virtuella datorn kan nå ditt lokala system, men appen inte kan det, är orsaken troligtvis en av följande orsaker:
- Dina vägar är inte konfigurerade med ditt undernät eller adressintervall för punkt-till-plats i din lokala gateway.
- Dina nätverkssäkerhetsgrupper blockerar åtkomsten för ditt punkt-till-plats-IP-intervall.
- Dina lokala brandväggar blockerar trafik från ditt punkt-till-plats-IP-intervall.
- Du försöker nå en icke-RFC 1918-adress med hjälp av integreringsfunktionen för regionala virtuella nätverk.
Ta bort App Service-planen eller webbappen innan du kopplar från VNet-integreringen
Om du har tagit bort webbappen eller App Service-planen utan att först koppla från VNet-integreringen kan du inte utföra några uppdaterings-/borttagningsåtgärder i det virtuella nätverket eller undernätet som användes för integreringen med den borttagna resursen. En undernätsdelegering "Microsoft.Web/serverFarms" förblir tilldelad till ditt undernät och förhindrar uppdaterings-/borttagningsåtgärderna.
För att kunna uppdatera/ta bort undernätet eller det virtuella nätverket igen måste du återskapa VNet-integreringen och sedan koppla från den:
- Återskapa App Service-planen och webbappen (det är obligatoriskt att använda exakt samma webbappnamn som tidigare).
- Gå till bladet Nätverk i webbappen och konfigurera VNet-integreringen.
- När VNet-integreringen har konfigurerats väljer du knappen Koppla från.
- Ta bort App Service-planen eller webbappen.
- Uppdatera/ta bort undernätet eller det virtuella nätverket.
Om du fortfarande stöter på problem med VNet-integreringen efter att ha följt stegen ovan kontaktar du Microsoft Support.
Nätverksfelsökning
Du kan också använda felsökaren för nätverk för att lösa anslutningsproblem. Öppna nätverksfelsökaren genom att gå till appen i Azure Portal. Välj Diagnostik och lös problem och sök sedan efter nätverksfelsökare.
Anslutningsproblem – Den kontrollerar statusen för integreringen av det virtuella nätverket, inklusive att kontrollera om den privata IP-adressen har tilldelats till alla instanser av planen och DNS-inställningarna. Om en anpassad DNS inte har konfigurerats tillämpas Standard azure DNS. Felsökaren söker också efter vanliga beroenden för funktionsappar, inklusive anslutning för Azure Storage och andra bindningsberoenden.
Konfigurationsproblem – Den här felsökaren kontrollerar om ditt undernät är giltigt för integrering av virtuella nätverk.
Problem med borttagning av undernät/VNet – Den här felsökaren kontrollerar om ditt undernät har några lås och om det har några oanvända tjänstassociationslänkar som kan blockera borttagningen av det virtuella nätverket/undernätet.
Nästa steg
Om du vill veta mer om nätverk och Azure Functions:
- Följ självstudien om att komma igång med integrering av virtuella nätverk
- Läs vanliga frågor och svar om Functions-nätverk
- Läs mer om integrering av virtuella nätverk med App Service/Functions
- Läs mer om virtuella nätverk i Azure
- Aktivera fler nätverksfunktioner och kontroll med App Service-miljön
- Ansluta till enskilda lokala resurser utan brandväggsändringar med hjälp av hybridanslutningar