你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用专用链接将 Azure Front Door Premium 连接到 Azure API 管理

适用于: ✔️ Front Door Premium

本文会指导你完成配置 Azure Front Door Premium 以使用 Azure 专用链接私密连接到 Azure API 管理源的步骤。

Prerequisites

  • 具有活动订阅的 Azure 帐户。 免费创建帐户

  • 一个 Azure API 管理实例。 有关如何创建 API 管理实例的详细信息,请参阅 创建新的 Azure API 管理实例。 对于 v1 层,实例应部署在公共模式下,而不是在虚拟网络模式下部署。

  • Azure Front Door Premium 配置文件和终结点。 有关如何创建 Azure Front Door 配置文件的详细信息,请参阅 使用 Azure PowerShell 创建 Front Door

  • Azure Cloud Shell 或 Azure PowerShell。

    本文中的步骤在 Azure Cloud Shell 中以交互方式运行 Azure PowerShell cmdlet。 若要在 Cloud Shell 中运行 cmdlet,请选择代码块右上角的“打开 Cloud Shell”。 选择 “复制” 以复制代码,然后将其粘贴到 Cloud Shell 中以运行它。 也可以从 Azure 门户中运行 Cloud Shell。

    还可以 在本地安装 Azure PowerShell 以运行 cmdlet。 如果在本地运行 PowerShell,请使用 Connect-AzAccount cmdlet 登录到 Azure。

  • Azure Front Door Premium 配置文件和终结点。 有关如何创建 Azure Front Door 配置文件的详细信息,请参阅 使用 Azure CLI 创建 Front Door

  • Azure Cloud Shell 或 Azure CLI。

    本文中的步骤在 Azure Cloud Shell 中以交互方式运行 Azure CLI 命令。 要在 Cloud Shell 中运行命令,请选择代码块右上角的“打开 Cloud Shell”。 选择 “复制” 以复制代码,然后将其粘贴到 Cloud Shell 中以运行它。 也可以从 Azure 门户中运行 Cloud Shell。

    还可以 在本地安装 Azure CLI 以运行命令。 如果在本地运行 Azure CLI,请使用 az login 命令登录到 Azure。

创建源组,并将 API 管理实例添加为源

  1. 在 Azure Front Door Premium 配置文件 的设置 下,选择 “源组”。

  2. 选择 “添加”

  3. 输入源组的名称。

  4. 选择“+ 添加源”

  5. 使用下表配置源设置:

    设置
    名称 输入名称以标识此源。
    原点类型 选择 API 管理
    主机名 从下拉列表中选择要用作源的主机。
    源主机标头 将自动填入所选 API 管理实例的主机地址。
    HTTP 端口 80 (默认值)。
    HTTPS 端口 443 (默认值)。
    优先度 为源分配不同的优先级,以用于主要、次要和备份目的。
    重量 1000(默认值)。 使用权重在不同源之间分配流量。
    区域 选择与源匹配或最接近的区域。
    目标子资源 选择“网关”。
    请求消息 输入将在批准专用终结点时显示的自定义消息。

    配置 API 管理为私有源时的源设置屏幕截图。

  6. 选择“添加”以保存源设置

  7. 选择“添加”以保存源组设置

批准专用终结点

  1. 转到在上一部分使用专用链接配置的 API 管理实例。

  2. 在“部署 + 基础结构”下,选择“网络”

  3. 选择“入站专用终结点连接”选项卡

  4. 找到 Azure Front Door Premium 中挂起的专用终结点请求,然后选择“批准”

  5. 批准后,连接状态将更新。 可能需要几分钟时间才能完全建立连接。 建立后,即可通过 Front Door 访问 API 管理。

    API 管理门户中专用终结点连接选项卡的屏幕截图。

创建源组,并将 API 管理实例添加为源

  1. 使用 New-AzFrontDoorCdnOriginGroupHealthProbeSettingObject 创建用于存储运行状况探测设置的内存中对象。

    $healthProbeSetting = New-AzFrontDoorCdnOriginGroupHealthProbeSettingObject `
        -ProbeIntervalInSecond 60 `
        -ProbePath "/" `
        -ProbeRequestType GET `
        -ProbeProtocol Http
    
  2. 使用 New-AzFrontDoorCdnOriginGroupLoadBalancingSettingObject 创建用于存储负载均衡设置的内存中对象。

    $loadBalancingSetting = New-AzFrontDoorCdnOriginGroupLoadBalancingSettingObject `
        -AdditionalLatencyInMillisecond 50 `
        -SampleSize 4 `
        -SuccessfulSamplesRequired 3
    
  3. 运行 New-AzFrontDoorCdnOriginGroup 以创建包含 API 管理实例的源组。

    $origingroup = New-AzFrontDoorCdnOriginGroup `
        -OriginGroupName myOriginGroup `
        -ProfileName myFrontDoorProfile `
        -ResourceGroupName myResourceGroup `
        -HealthProbeSetting $healthProbeSetting `
        -LoadBalancingSetting $loadBalancingSetting
    
  4. 使用 New-AzFrontDoorCdnOrigin 命令将 API 管理实例添加到源组。

    New-AzFrontDoorCdnOrigin ` 
        -OriginGroupName myOriginGroup ` 
        -OriginName myAPIMOrigin ` 
        -ProfileName myFrontDoorProfile ` 
        -ResourceGroupName myResourceGroup ` 
        -HostName myapim.azure-api.net ` 
        -HttpPort 80 ` 
        -HttpsPort 443 ` 
        -OriginHostHeader myapim.azure-api.net ` 
        -Priority 1 ` 
        -PrivateLinkId /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.ApiManagement/service/myAPIM ` 
        -SharedPrivateLinkResourceGroupId Gateway ` 
        -SharedPrivateLinkResourcePrivateLinkLocation CentralUS ` 
        -SharedPrivateLinkResourceRequestMessage 'Azure Front Door private connectivity request' ` 
        -Weight 1000 `
    

批准专用终结点

  1. 运行 Get-AzPrivateEndpointConnection 以检索需要批准的专用终结点连接的连接名称。

    $PrivateEndpoint = Get-AzPrivateEndpointConnection -ResourceGroupName myResourceGroup -ServiceName myAPIM -PrivateLinkResourceType Microsoft.ApiManagement/service
    
  2. 运行 Approve-AzPrivateEndpointConnection 以批准专用终结点连接详细信息。 使用上一步的输出中的“名称”值来批准连接。

    Get-AzPrivateEndpointConnection -Name $PrivateEndpoint.Name -ResourceGroupName myResourceGroup -ServiceName myAPIM -PrivateLinkResourceType Microsoft.ApiManagement/service
    

完成 Azure Front Door 设置

使用 New-AzFrontDoorCdnRoute 命令来创建一个路由,该路由将终结点映射到源组。 此路由会将来自终结点的请求转发到源组。

# Create a route to map the endpoint to the origin group

$Route = New-AzFrontDoorCdnRoute `
    -EndpointName myFrontDoorEndpoint `
    -Name myRoute `
    -ProfileName myFrontDoorProfile `
    -ResourceGroupName myResourceGroup `
    -ForwardingProtocol MatchRequest `
    -HttpsRedirect Enabled `
    -LinkToDefaultDomain Enabled `
    -OriginGroupId $origingroup.Id `
    -SupportedProtocol Http,Https

完成最后一步后,Azure Front Door 配置文件现已完全正常运行。

创建源组,并将 API 管理实例添加为源

  1. 运行 az afd origin-group create 以创建源组。

    az afd origin-group create \
        --resource-group myResourceGroup \
        --origin-group-name myOriginGroup \
        --profile-name myFrontDoorProfile \
        --probe-request-type GET \
        --probe-protocol Http \
        --probe-interval-in-seconds 60 \
        --probe-path / \
        --sample-size 4 \
        --successful-samples-required 3 \
        --additional-latency-in-milliseconds 50
    
  2. 运行 az afd origin create ,将 API 管理实例作为源添加到源组。

    az afd origin create \
        --enabled-state Enabled \
        --resource-group myResourceGroup \
        --origin-group-name myOriginGroup \
        --origin-name myAPIMOrigin \
        --profile-name myFrontDoorProfile \
        --host-name myapim.azure-api.net \
        --origin-host-header myapim.azure-api.net \
        --http-port 80  \
        --https-port 443 \
        --priority 1 \
        --weight 500 \
        --enable-private-link true \
        --private-link-location centralus \
        --private-link-request-message 'Azure Front Door private connectivity request.' \
        --private-link-resource /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.ApiManagement/service/myAPIM \
        --private-link-sub-resource-type Gateway
    

批准专用终结点连接

  1. 运行 az network private-endpoint-connection list 以获取需要批准的专用终结点连接 的名称

    az network private-endpoint-connection list --name myAPIM --resource-group myResourceGroup --type Microsoft.ApiManagement/service
    
  2. 运行 az network private-endpoint-connection approve,以使用上一步中的名称批准专用终结点连接。

    az network private-endpoint-connection approve --id /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.ApiManagement/service/myAPIM/privateEndpointConnections/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
    

完成 Azure Front Door 设置

运行 az afd route create ,创建将终结点映射到源组的路由。 此路由会将来自终结点的请求转发到源组。

az afd route create \
    --resource-group myResourceGroup \
    --profile-name myFrontDoorProfile \
    --endpoint-name myFrontDoorEndpoint \
    --forwarding-protocol MatchRequest \
    --route-name myRoute \
    --https-redirect Enabled \
    --origin-group myOriginGroup \
    --supported-protocols Http Https \
    --link-to-default-domain Enabled

完成最后一步后,Azure Front Door 配置文件现已完全正常运行。

要避免的常见错误

配置启用了 Azure 专用链接的 Azure API 管理源时,常见错误如下:

  • 使用 Azure 专用链接将 Azure API 管理源添加到包含公共源的现有源组。 Azure Front Door 不允许在同一源组中混合公共和专用源。

后续步骤