Integrare Gestione API in una rete virtuale interna con un gateway applicazioneIntegrate API Management in an internal VNET with Application Gateway

Panoramica Overview

Il servizio Gestione API può essere configurato in una rete virtuale in modalità interna, rendendolo così accessibile solo dall'interno della rete virtuale.The API Management service can be configured in a Virtual Network in internal mode which makes it accessible only from within the Virtual Network. Il gateway applicazione di Azure è un servizio PAAS con bilanciamento del carico di livello 7.Azure Application Gateway is a PAAS Service which provides a Layer-7 load balancer. Funge da servizio proxy inverso e offre anche un Web application firewall (WAF).It acts as a reverse-proxy service and provides among its offering a Web Application Firewall (WAF).

La combinazione di Gestione API in una rete virtuale interna con il gateway applicazione come front-end consente gli scenari seguenti:Combining API Management provisioned in an internal VNET with the Application Gateway frontend enables the following scenarios:

  • Uso della stessa risorsa di Gestione API sia da parte degli utenti interni che di quelli esterni.Use the same API Management resource for consumption by both internal consumers and external consumers.
  • Uso di una singola risorsa di Gestione API e disponibilità di un sottoinsieme di API definite in Gestione API per gli utenti esterni.Use a single API Management resource and have a subset of APIs defined in API Management available for external consumers.
  • Predisposizione di un modo veloce per attivare e disattivare l'accesso a Gestione API dalla rete Internet pubblica.Provide a turn-key way to switch access to API Management from the public Internet on and off.

PrerequisitiPrerequisites

Per eseguire i passaggi descritti in questo articolo, è necessario disporre di:To perform the steps described in this article, you must have:

Scenario Scenario

Questo articolo illustra come usare un singolo servizio Gestione API per gli utenti sia interni che esterni e fare in modo che funga da singolo front-end per le API sia locali che cloud.This article covers how to use a single API Management service for both internal and external consumers and make it act as a single frontend for both on-prem and cloud APIs. Verrà anche descritto come esporre solo un sottoinsieme delle API (evidenziato in verde nell'esempio) per l'utilizzo esterno con la funzionalità PathBasedRouting disponibile nel gateway applicazione.You will also see how to expose only a subset of your APIs (in the example they are highlighted in green) for External Consumption using the PathBasedRouting functionality available in Application Gateway.

Nel primo esempio di configurazione, tutte le API sono gestite solo dall'interno della rete virtuale.In the first setup example all your APIs are managed only from within your Virtual Network. Gli utenti interni (evidenziati in arancione) possono accedere a tutte le API interne ed esterne.Internal consumers (highlighted in orange) can access all your internal and external APIs. Il traffico non esce mai in Internet e circuiti ExpressRoute garantiscono prestazioni elevate.Traffic never goes out to Internet a high performance is delivered via Express Route circuits.

route dell'URL

Prima di iniziare Before you begin

  1. Installare la versione più recente dei cmdlet di Azure PowerShell usando l'Installazione guidata piattaforma Web.Install the latest version of the Azure PowerShell cmdlets by using the Web Platform Installer. È possibile scaricare e installare la versione più recente dalla sezione Windows PowerShell della Pagina di download.You can download and install the latest version from the Windows PowerShell section of the Downloads page.
  2. Creare una rete virtuale e subnet separate per Gestione API e il gateway applicazione.Create a Virtual Network and create separate subnets for API Management and Application Gateway.
  3. Se si intende creare un server DNS personalizzato per la rete virtuale, eseguire tale operazione prima di iniziare la distribuzione.If you intend to create a custom DNS server for the Virtual Network, do so before starting the deployment. Controllarne il funzionamento verificando che una macchina virtuale creata in una nuova subnet della rete virtuale possa risolvere tutti gli endpoint di servizio di Azure e accedervi.Double check it works by ensuring a virtual machine created in a new subnet in the Virtual Network can resolve and access all Azure service endpoints.

Elementi necessari per creare un'integrazione tra Gestione API e il gateway applicazioneWhat is required to create an integration between API Management and Application Gateway?

  • Pool di server back-end: costituisce l'indirizzo IP virtuale interno del servizio Gestione API.Back-end server pool: This is the internal virtual IP address of the API Management service.
  • Impostazioni del pool di server back-end: ogni pool ha impostazioni quali porta, protocollo e affinità basata sui cookie.Back-end server pool settings: Every pool has settings like port, protocol, and cookie-based affinity. Queste impostazioni vengono applicate a tutti i server nel pool.These settings are applied to all servers within the pool.
  • Porta front-end: porta pubblica aperta sul gateway applicazione.Front-end port: This is the public port that is opened on the application gateway. Il traffico che raggiunge questa porta viene reindirizzato a uno dei server back-end.Traffic hitting it gets redirected to one of the back-end servers.
  • Listener : ha una porta front-end, un protocollo (Http o Https, con distinzione tra maiuscole e minuscole) e il nome del certificato SSL (se si configura l'offload SSL).Listener: The listener has a front-end port, a protocol (Http or Https, these values are case-sensitive), and the SSL certificate name (if configuring SSL offload).
  • Regola: associa un listener a un pool di server back-end.Rule: The rule binds a listener to a back-end server pool.
  • Probe di integrità personalizzato: per impostazione predefinita, il gateway applicazione usa probe basati su indirizzi IP per individuare i server attivi in BackendAddressPool.Custom Health Probe: Application Gateway, by default, uses IP address based probes to figure out which servers in the BackendAddressPool are active. Il servizio Gestione API risponde solo alle richieste con l'intestazione host corretta, quindi i probe predefiniti hanno esito negativo.The API Management service only responds to requests which have the correct host header, hence the default probes fail. È necessario definire un probe di integrità personalizzato per consentire al gateway applicazione di determinare che il servizio è attivo e deve inoltrare le richieste.A custom health probe needs to be defined to help application gateway determine that the service is alive and it should forward requests.
  • Certificato di dominio personalizzato: per accedere a Gestione API da Internet è necessario creare un mapping CNAME del nome host al nome DNS del front-end del gateway applicazione.Custom domain certificate: To access API Management from the internet you need to create a CNAME mapping of its hostname to the Application Gateway front-end DNS name. Ciò garantisce che l'intestazione del nome host e il certificato inviati al gateway applicazione e inoltrati a Gestione API siano riconoscibili come validi da Gestione API.This ensures that the hostname header and certificate sent to Application Gateway that is forwarded to API Management is one APIM can recognize as valid.

Passaggi necessari per l'integrazione di Gestione API e il gateway applicazione Steps required for integrating API Management and Application Gateway

  1. Creare un gruppo di risorse per Gestione risorse.Create a resource group for Resource Manager.
  2. Creare una rete virtuale, una subnet e un indirizzo IP pubblico per il gateway applicazione.Create a Virtual Network, subnet, and public IP for the Application Gateway. Creare un'altra subnet per Gestione API.Create another subnet for API Management.
  3. Creare un servizio Gestione API nella subnet della rete virtuale creata in precedenza e assicurarsi di usare la modalità interna.Create an API Management service inside the VNET subnet created above and ensure you use the Internal mode.
  4. Configurare il nome di dominio personalizzato nel servizio Gestione API.Setup the custom domain name in the API Management service.
  5. Creare un oggetto di configurazione del gateway applicazione.Create an Application Gateway configuration object.
  6. Creare una risorsa gateway applicazione.Create an Application Gateway resource.
  7. Creare un mapping CNAME dal nome DNS pubblico del gateway applicazione al nome host proxy di Gestione API.Create a CNAME from the public DNS name of the Application Gateway to the API Management proxy hostname.

Creare un gruppo di risorse per Gestione risorseCreate a resource group for Resource Manager

Assicurarsi di usare la versione più recente di Azure PowerShell.Make sure that you are using the latest version of Azure PowerShell. Altre informazioni sono disponibili in Uso di Azure PowerShell con Azure Resource Manager.More info is available at Using Windows PowerShell with Resource Manager.

Passaggio 1Step 1

Accedere ad AzureLog in to Azure

Login-AzureRmAccount

Eseguire l'autenticazione con le proprie credenziali.Authenticate with your credentials.

Passaggio 2Step 2

Controllare le sottoscrizioni per l'account e selezionarlo.Check the subscriptions for the account and select it.

Get-AzureRmSubscription -Subscriptionid "GUID of subscription" | Select-AzureRmSubscription

Passaggio 3Step 3

Creare un gruppo di risorse. Ignorare questo passaggio se si usa un gruppo di risorse esistente.Create a resource group (skip this step if you're using an existing resource group).

New-AzureRmResourceGroup -Name "apim-appGw-RG" -Location "West US"

Gestione risorse di Azure richiede che tutti i gruppi di risorse specifichino un percorsoAzure Resource Manager requires that all resource groups specify a location. che viene usato come percorso predefinito per le risorse presenti in tale gruppo di risorse.This is used as the default location for resources in that resource group. Assicurarsi che tutti i comandi per creare un gateway applicazione usino lo stesso gruppo di risorse.Make sure that all commands to create an application gateway use the same resource group.

Creare una rete virtuale e una subnet per il gateway applicazioneCreate a Virtual Network and a subnet for the application gateway

L'esempio seguente illustra come creare una rete virtuale usando Resource Manager.The following example shows how to create a Virtual Network using the resource manager.

Passaggio 1Step 1

Assegnare l'intervallo di indirizzi 10.0.0.0/24 alla variabile subnet da usare per il gateway applicazione durante la creazione di una rete virtuale.Assign the address range 10.0.0.0/24 to the subnet variable to be used for Application Gateway while creating a Virtual Network.

$appgatewaysubnet = New-AzureRmVirtualNetworkSubnetConfig -Name "apim01" -AddressPrefix "10.0.0.0/24"

Passaggio 2Step 2

Assegnare l'intervallo di indirizzi 10.0.1.0/24 alla variabile subnet da usare per Gestione API durante la creazione di una rete virtuale.Assign the address range 10.0.1.0/24 to the subnet variable to be used for API Management while creating a Virtual Network.

$apimsubnet = New-AzureRmVirtualNetworkSubnetConfig -Name "apim02" -AddressPrefix "10.0.1.0/24"

Passaggio 3Step 3

Creare una rete virtuale denominata appgwvnet nel gruppo di risorse apim-appGw-RG per l'area Stati Uniti occidentali usando il prefisso 10.0.0.0/16 con le subnet 10.0.0.0/24 e 10.0.1.0/24.Create a Virtual Network named appgwvnet in resource group apim-appGw-RG for the West US region using the prefix 10.0.0.0/16 with subnets 10.0.0.0/24 and 10.0.1.0/24.

$vnet = New-AzureRmVirtualNetwork -Name "appgwvnet" -ResourceGroupName "apim-appGw-RG" -Location "West US" -AddressPrefix "10.0.0.0/16" -Subnet $appgatewaysubnet,$apimsubnet

Passaggio 4Step 4

Assegnare una variabile subnet per i passaggi successiviAssign a subnet variable for the next steps

$appgatewaysubnetdata=$vnet.Subnets[0]
$apimsubnetdata=$vnet.Subnets[1]

Creare un servizio Gestione API in una rete virtuale configurata in modalità internaCreate an API Management service inside a VNET configured in internal mode

L'esempio seguente illustra come creare un servizio Gestione API in una rete virtuale configurata per il solo accesso interno.The following example shows how to create an API Management service in a VNET configured for internal access only.

Passaggio 1Step 1

Creare un oggetto rete virtuale di Gestione API usando la subnet $apimsubnetdata creata in precedenza.Create an API Management Virtual Network object using the subnet $apimsubnetdata created above.

$apimVirtualNetwork = New-AzureRmApiManagementVirtualNetwork -Location "West US" -SubnetResourceId $apimsubnetdata.Id

Passaggio 2Step 2

Creare un servizio Gestione API all'interno della rete virtuale.Create an API Management service inside the Virtual Network.

$apimService = New-AzureRmApiManagement -ResourceGroupName "apim-appGw-RG" -Location "West US" -Name "ContosoApi" -Organization "Contoso" -AdminEmail "admin@contoso.com" -VirtualNetwork $apimVirtualNetwork -VpnType "Internal" -Sku "Developer"

Dopo il completamento del comando precedente, per l'accesso vedere la configurazione DNS necessaria per accedere al servizio Gestione API su una rete virtuale interna.After the above command succeeds refer to DNS Configuration required to access internal VNET API Management service to access it.

Configurare un nome di dominio personalizzato in Gestione APISet-up a custom domain name in API Management

Passaggio 1Step 1

Caricare il certificato con chiave privata per il dominio.Upload the certificate with private key for the domain. Per questo esempio sarà *.contoso.net.For this example it will be *.contoso.net.

$certUploadResult = Import-AzureRmApiManagementHostnameCertificate -ResourceGroupName "apim-appGw-RG" -Name "ContosoApi" -HostnameType "Proxy" -PfxPath <full path to .pfx file> -PfxPassword <password for certificate file> -PassThru

Passaggio 2Step 2

Dopo aver caricato il certificato, creare un oggetto di configurazione del nome host per il proxy con il nome host api.contoso.net, perché il certificato di esempio fornisce l'autorità per il dominio *.contoso.net.Once the certificate is uploaded, create a hostname configuration object for the proxy with a hostname of api.contoso.net, as the example certificate provides authority for the *.contoso.net domain.

$proxyHostnameConfig = New-AzureRmApiManagementHostnameConfiguration -CertificateThumbprint $certUploadResult.Thumbprint -Hostname "api.contoso.net"
$result = Set-AzureRmApiManagementHostnames -Name "ContosoApi" -ResourceGroupName "apim-appGw-RG" -ProxyHostnameConfiguration $proxyHostnameConfig

Creare un indirizzo IP pubblico per la configurazione front-endCreate a public IP address for the front-end configuration

Creare una risorsa IP pubblica denominata publicIP01 nel gruppo di risorse apim-appGw-RG per l'area Stati Uniti occidentali.Create a public IP resource publicIP01 in resource group apim-appGw-RG for the West US region.

$publicip = New-AzureRmPublicIpAddress -ResourceGroupName "apim-appGw-RG" -name "publicIP01" -location "West US" -AllocationMethod Dynamic

All'avvio del servizio viene assegnato un indirizzo IP al gateway applicazione.An IP address is assigned to the application gateway when the service starts.

Creare la configurazione del gateway applicazioneCreate application gateway configuration

Prima di creare il gateway applicazione, è necessario impostare tutti gli elementi di configurazione.All configuration items must be set up before creating the application gateway. La procedura seguente consente di creare gli elementi di configurazione necessari per una risorsa del gateway applicazione.The following steps create the configuration items that are needed for an application gateway resource.

Passaggio 1Step 1

Creare una configurazione IP del gateway applicazione denominata gatewayIP01.Create an application gateway IP configuration named gatewayIP01. All'avvio, il gateway applicazione seleziona un indirizzo IP dalla subnet configurata e instrada il traffico di rete agli indirizzi IP nel pool di indirizzi IP back-end.When Application Gateway starts, it picks up an IP address from the subnet configured and route network traffic to the IP addresses in the back-end IP pool. Tenere presente che ogni istanza ha un indirizzo IP.Keep in mind that each instance takes one IP address.

$gipconfig = New-AzureRmApplicationGatewayIPConfiguration -Name "gatewayIP01" -Subnet $appgatewaysubnetdata

Passaggio 2Step 2

Configurare la porta d indirizzo IP front-end con l'endpoint di indirizzo IP pubblico.Configure the front-end IP port for the public IP endpoint. Si tratta della porta a cui si connettono gli utenti finali.This port is the port that end users connect to.

$fp01 = New-AzureRmApplicationGatewayFrontendPort -Name "port01"  -Port 443

Passaggio 3Step 3

Configurare l'indirizzo IP front-end con l'endpoint di indirizzo IP pubblico.Configure the front-end IP with public IP endpoint.

$fipconfig01 = New-AzureRmApplicationGatewayFrontendIPConfig -Name "frontend1" -PublicIPAddress $publicip

Passaggio 4Step 4

Configurare il certificato per il gateway applicazione, che viene usato per decrittografare e ricrittografare il traffico gestito.Configure the certificate for the Application Gateway, used to decrypt and re-encrypt the traffic passing through.

$cert = New-AzureRmApplicationGatewaySslCertificate -Name "cert01" -CertificateFile <full path to .pfx file> -Password <password for certificate file>

Passaggio 5Step 5

Creare il listener HTTP per il gateway applicazione.Create the HTTP listener for the Application Gateway. Assegnare la configurazione IP, la porta e il certificato SSL front-end da usare.Assign the front-end IP configuration, port, and ssl certificate to it.

$listener = New-AzureRmApplicationGatewayHttpListener -Name "listener01" -Protocol "Https" -FrontendIPConfiguration $fipconfig01 -FrontendPort $fp01 -SslCertificate $cert

Passaggio 6Step 6

Creare un probe personalizzato per l'endpoint del dominio proxy ContosoApi del servizio Gestione API.Create a custom probe to the API Management service ContosoApi proxy domain endpoint. Il percorso /status-0123456789abcdef è un endpoint di integrità predefinito ospitato in tutti i servizi Gestione API.The path /status-0123456789abcdef is a default health endpoint hosted on all the API Management services. Impostare api.contoso.net come nome host probe personalizzato per assicurare la protezione con il certificato SSL.Set api.contoso.net as a custom probe hostname to secure it with SSL certificate.

Nota

Il nome host contosoapi.azure-api.net è il nome host proxy predefinito configurato quando viene creato un servizio contosoapi nell'ambiente Azure pubblico.The hostname contosoapi.azure-api.net is the default proxy hostname configured when a service named contosoapi is created in public Azure.

$apimprobe = New-AzureRmApplicationGatewayProbeConfig -Name "apimproxyprobe" -Protocol "Https" -HostName "api.contoso.net" -Path "/status-0123456789abcdef" -Interval 30 -Timeout 120 -UnhealthyThreshold 8

Passaggio 7Step 7

Caricare il certificato da usare per le risorse del pool back-end abilitate per SSL.Upload the certificate to be used on the SSL-enabled backend pool resources. È lo stesso certificato configurato nel passaggio 4.This is the same certificate which you provided in Step 4 above.

$authcert = New-AzureRmApplicationGatewayAuthenticationCertificate -Name "whitelistcert1" -CertificateFile <full path to .cer file>

Passaggio 8Step 8

Configurare le impostazioni di back-end HTTP per il gateway applicazione.Configure HTTP backend settings for the Application Gateway. Questo passaggio include l'impostazione di un limite di timeout per la richiesta del back-end, raggiunto il quale verrà annullata.This includes setting a time-out limit for backend request after which they are cancelled. Questo valore è diverso dal timeout del probe.This value is different from the probe time-out.

$apimPoolSetting = New-AzureRmApplicationGatewayBackendHttpSettings -Name "apimPoolSetting" -Port 443 -Protocol "Https" -CookieBasedAffinity "Disabled" -Probe $apimprobe -AuthenticationCertificates $authcert -RequestTimeout 180

Passaggio 9:Step 9

Configurare il pool di indirizzi IP back-end denominato apimbackend con l'indirizzo IP virtuale interno del servizio Gestione API creato in precedenza.Configure a back-end IP address pool named apimbackend with the internal virtual IP address of the API Management service created above.

$apimProxyBackendPool = New-AzureRmApplicationGatewayBackendAddressPool -Name "apimbackend" -BackendIPAddresses $apimService.StaticIPs[0]

Passaggio 10Step 10

Creare le impostazioni per un back-end fittizio (inesistente).Create settings for a dummy (non-existent) backend. Le richieste ai percorsi dell'API che non si vogliono esporre da Gestione API tramite il gateway applicazione raggiungeranno questo back-end e restituiranno l'errore 404.Requests to API paths that we do not want to expose from API Management via Application Gateway will hit this backend and return 404.

Configurare le impostazioni HTTP per il back-end fittizio.Configure HTTP settings for the dummy backend.

$dummyBackendSetting = New-AzureRmApplicationGatewayBackendHttpSettings -Name "dummySetting01" -Port 80 -Protocol Http -CookieBasedAffinity Disabled

Configurare un back-end fittizio dummyBackendPool, con rifermento a un indirizzo FQDN dummybackend.com. Questo indirizzo FQDN non esiste nella rete virtuale.Configure a dummy backend dummyBackendPool, which points to a FQDN address dummybackend.com. This FQDN address does not exist in the virtual network.

$dummyBackendPool = New-AzureRmApplicationGatewayBackendAddressPool -Name "dummyBackendPool" -BackendFqdns "dummybackend.com"

Creare un'impostazione della regola che il gateway applicazione userà per impostazione predefinita e che fa riferimento al back-end inesistente dummybackend.com nella rete virtuale.Create a rule setting that the Application Gateway will use by default which points to the non-existent backend dummybackend.com in the Virtual Network.

$dummyPathRule = New-AzureRmApplicationGatewayPathRuleConfig -Name "nonexistentapis" -Paths "/*" -BackendAddressPool $dummyBackendPool -BackendHttpSettings $dummyBackendSetting

Passaggio 11Step 11

Configurare i percorsi della regola per gli URL per i pool back-end.Configure URL rule paths for the back-end pools. È così possibile selezionare solo alcune API di Gestione API da esporre al pubblico.This enables selecting only some of the APIs from API Management for being exposed to the public. Ad esempio, se esistono Echo API (/echo/), Calculator API (/calc/) e così via, è possibile rendere accessibile da Internet solo Echo API.For example, if there are Echo API (/echo/), Calculator API (/calc/) etc. make only Echo API accessible from Internet).

L'esempio seguente crea una semplice regola per il percorso "/echo/" che instrada il traffico al back-end "apimProxyBackendPool".The following example creates a simple rule for the "/echo/" path routing traffic to the back-end "apimProxyBackendPool".

$echoapiRule = New-AzureRmApplicationGatewayPathRuleConfig -Name "externalapis" -Paths "/echo/*" -BackendAddressPool $apimProxyBackendPool -BackendHttpSettings $apimPoolSetting

In caso di mancata corrispondenza con le regole di percorso che devono essere abilitate da Gestione API, la configurazione del mapping dei percorsi della regola definisce anche un pool di indirizzi del back-end predefinito denominato dummyBackendPool.If the path doesn't match the path rules we want to enable from API Management, the rule path map configuration also configures a default back-end address pool named dummyBackendPool. Ad esempio, http://api.contoso.net/calc/* accede a dummyBackendPool in quanto è definito come il pool predefinito per traffico senza corrispondenza.For example, http://api.contoso.net/calc/* goes to dummyBackendPool as it is defined as the default pool for un-matched traffic.

$urlPathMap = New-AzureRmApplicationGatewayUrlPathMapConfig -Name "urlpathmap" -PathRules $echoapiRule, $dummyPathRule -DefaultBackendAddressPool $dummyBackendPool -DefaultBackendHttpSettings $dummyBackendSetting

Il passaggio precedente assicura che solo le richieste per il percorso "/echo" siano consentite attraverso il gateway applicazione.The above step ensures that only requests for the path "/echo" are allowed through the Application Gateway. Le richieste ad altre API configurate in Gestione API genereranno errori 404 del gateway applicazione in caso di accesso da Internet.Requests to other APIs configured in API Management will throw 404 errors from Application Gateway when accessed from the Internet.

Passaggio 12Step 12

Creare un'impostazione della regola per il gateway applicazione per usare il routing basato su percorso URL.Create a rule setting for the Application Gateway to use URL path-based routing.

$rule01 = New-AzureRmApplicationGatewayRequestRoutingRule -Name "rule1" -RuleType PathBasedRouting -HttpListener $listener -UrlPathMap $urlPathMap

Passaggio 13Step 13

Configurare il numero di istanze e le dimensioni per il gateway applicazione.Configure the number of instances and size for the Application Gateway. In questo caso si usa lo SKU del WAF per aumentare la sicurezza della risorsa di Gestione API.Here we are using the WAF SKU for increased security of the API Management resource.

$sku = New-AzureRmApplicationGatewaySku -Name "WAF_Medium" -Tier "WAF" -Capacity 2

Passaggio 14Step 14

Configurare il Web application firewall in modalità "prevenzione".Configure WAF to be in "Prevention" mode.

$config = New-AzureRmApplicationGatewayWebApplicationFirewallConfiguration -Enabled $true -FirewallMode "Prevention"

Creare il gateway applicazioneCreate Application Gateway

Creare un gateway applicazione con tutti gli oggetti di configurazione illustrati nei passaggi precedenti.Create an Application Gateway with all the configuration objects from the preceding steps.

$appgw = New-AzureRmApplicationGateway -Name $applicationGatewayName -ResourceGroupName $resourceGroupName  -Location $location -BackendAddressPools $apimProxyBackendPool, $dummyBackendPool -BackendHttpSettingsCollection $apimPoolSetting, $dummyBackendSetting  -FrontendIpConfigurations $fipconfig01 -GatewayIpConfigurations $gipconfig -FrontendPorts $fp01 -HttpListeners $listener -UrlPathMaps $urlPathMap -RequestRoutingRules $rule01 -Sku $sku -WebApplicationFirewallConfig $config -SslCertificates $cert -AuthenticationCertificates $authcert -Probes $apimprobe

Creare un mapping CNAME del nome host proxy di Gestione API al nome DNS pubblico della risorsa gateway applicazioneCNAME the API Management proxy hostname to the public DNS name of the Application Gateway resource

Dopo avere creato il gateway, il passaggio successivo prevede la configurazione del front-end per la comunicazione.Once the gateway is created, the next step is to configure the front end for communication. Quando si usa un IP pubblico, il gateway applicazione richiede un nome DNS assegnato in modo dinamico, che potrebbe non essere facile da usare.When using a public IP, Application Gateway requires a dynamically assigned DNS name, which may not be easy to use.

Il nome DNS del gateway applicazione dovrà essere usato per creare un record CNAME che associa il nome host proxy di Gestione API (negli esempi precedenti, api.contoso.net) a questo nome DNS.The Application Gateway's DNS name should be used to create a CNAME record which points the APIM proxy host name (e.g. api.contoso.net in the examples above) to this DNS name. Per configurare il record CNAME per l'IP front-end, recuperare i dettagli del gateway applicazione e il nome DNS e l'IP associati usando l'elemento PublicIPAddress.To configure the frontend IP CNAME record, retrieve the details of the Application Gateway and its associated IP/DNS name using the PublicIPAddress element. Non è consigliabile usare record A perché l'indirizzo VIP può cambiare al riavvio del gateway.The use of A-records is not recommended since the VIP may change on restart of gateway.

Get-AzureRmPublicIpAddress -ResourceGroupName "apim-appGw-RG" -Name "publicIP01"

Riepilogo Summary

Il servizio Gestione API di Azure configurato in una rete virtuale offre un'interfaccia a gateway singolo per tutte le API, che siano ospitate in locale o nel cloud.Azure API Management configured in a VNET provides a single gateway interface for all configured APIs, whether they are hosted on-prem or in the cloud. L'integrazione del gateway applicazione con Gestione API offre la possibilità di rendere accessibili su Internet determinate API in modo selettivo, nonché di fornire un Web application firewall come front-end all'istanza di Gestione API.Integrating Application Gateway with API Management provides the flexibility of selectively enabling particular APIs to be accessible on the Internet, as well as providing a Web Application Firewall as a frontend to your API Management instance.

Passaggi successivi Next steps