是否可以通过 Az Cmdlet 以编程方式路由槽流量?

Is it possible to route Slot traffic programmatically via an Az Cmdlet?

我希望能够通过 powershell 将流量从 "production" 插槽路由到 Azure 中的另一个插槽。我该如何解决不使用 RampUpRules 的问题?

我们在 Azure 中有一个应用程序,目前有 3 个插槽(生产插槽和 2 个附加插槽),我们希望通过发布管道自动将所有流量路由到这两个插槽之一。

我发现 "RampUpRule" 可以实现此目的(如代码片段所示),但它是根据给定规则通过 x-ms-routing-name cookie 实现的。我也知道插槽流量可以通过应用程序服务上的部署插槽 UI 完成,但我想自动执行此操作(如果可能)。

到目前为止,我自己无法找到使用现有 Az cmdlet 来完成此操作的方法 - 所以我想知道是否有人知道这样做的方法。

$appName = "myapp"
$appService = Get-AzWebApp -Name $appName
$appConfig = $appService.SiteConfig

$rulesList = New-Object -TypeName System.Collections.Generic.List[Microsoft.Azure.Management.WebSites.Models.RampUpRule]
$rule = New-Object -TypeName Microsoft.Azure.Management.WebSites.Models.RampUpRule
$rule.Name = "LiveTraffic"
$rule.ActionHostName = "myapp-staging.azurewebsites.net"
$rule.ReroutePercentage = 100
$rulesList.Add($rule)

$appConfig.Experiments.RampUpRules = $rulesList

Set-AzWebApp -WebApp $appService

RampUpRules 实现了我们想要的,但我不确定通过设置的 cookie 完成它是否可以接受。

您的脚本似乎有效。如果您将暂存槽的 ReroutePercentage 设置为 100,您的用户将被自动路由到暂存槽,因为生产的路由百分比设置为 0。除非你提供一个 link 和 x-ms-routing-name=self<a href="<webappname>.azurewebsites.net/?x-ms-routing-name=self">Go back to production app</a>.

更多细节,你可以参考这篇link