是否可以通过编程方式扩展Azure应用服务

我正在寻找一种以编程方式扩展/缩小Azure应用服务实例的方法。 这个问题之前已被问过(例如在下面的链接中)几个月前,当时无法回答,所以我只是想知道是否有什么变化和/或现在有一些新function可用。

是否可以以编程方式扩展Azure实例?

请注意,我们希望在“Azure应用服务”上执行此操作,而不是旧式“Azure云服务”。

我们希望以编程方式进行扩展的原因是我们可以使用自定义指标来控制它。 我们没有找到将自定义指标发布到Azure的方法,然后Azure也可以使用它来执行自动扩展。

我们确实发现Azure自动缩放规则可以接受Azure存储队列长度,因此理论上我们可以通过向队列添加/删除消息来控制队列长度,但它只是一种破解,并且只有在创建队列时它才有效在经典的Azure Web门户中,而不是新的Azure门户。

是否可以通过编程方式扩展Azure应用服务

是的,我们可以使用REST API或SDK。 我使用fiddler测试REST API,详情请参考快照,如何获得授权,请参阅文档 。

标题信息:

在此处输入图像描述

身体信息:

在此处输入图像描述

如果可以使用C#代码,请尝试使用
Microsoft.Azure.Management.WebSites用于扩展Azure应用服务。 有关SDK的更多详细信息,请参阅packages.config文件。 如何注册Azure AD App以及如何获取Application ID,secretKey和tenantId请参阅该文档 。 以下是演示代码。

var subscriptionId = "Your subscrption"; var appId = "Registried Azure Application Id"; var secretKey = "Secret Key"; var tenantId = "tenant Id"; var resourceGroup = "resource group name"; var servicePlanName = "service plan name"; var context = new AuthenticationContext("https://login.windows.net/" + tenantId); ClientCredential clientCredential = new ClientCredential(appId, secretKey); var tokenResponse = context.AcquireTokenAsync("https://management.azure.com/", clientCredential).Result; var accessToken = tokenResponse.AccessToken; TokenCredentials credential = new TokenCredentials(accessToken); var webSiteManagementClient = new Microsoft.Azure.Management.WebSites.WebSiteManagementClient(credential); webSiteManagementClient.SubscriptionId = subscriptionId; var servicePlan = webSiteManagementClient.AppServicePlans.ListByResourceGroupWithHttpMessagesAsync(resourceGroup).Result.Body.Where(x=>x.Name.Equals(servicePlanName)).FirstOrDefault(); //scale up/down servicePlan.Sku.Family = "P"; servicePlan.Sku.Name = "P1"; servicePlan.Sku.Size = "P1"; servicePlan.Sku.Tier = "Premium"; servicePlan.Sku.Capacity = 2; // scale out: number of instances var updateResult = webSiteManagementClient.AppServicePlans.CreateOrUpdateWithHttpMessagesAsync(resourceGroup, servicePlanName, servicePlan).Result; 

packages.config文件:

         

检查门户网站的结果。

在此处输入图像描述

注意:如果Azure服务计划已更新,则它将应用于服务计划中的所有WebApp。