【问题标题】:Query azure application gateway settings or whole ARM template from azure从 azure 查询 azure 应用程序网关设置或整个 ARM 模板
【发布时间】:2020-09-29 06:09:34
【问题描述】:

您好,我想构建后端 C#,我将能够在其中查询我已经配置的 azure 应用程序网关的所有设置。我尝试过使用 Frontdoor 并使用 Frontdoorclient 连接到前门并能够查询所有负载均衡器设置和其他设置。这对我有帮助,因为 Azure.management.Fluent.Frontdoor.dlll 的前门有客户端,而对于 azure.mamgement.network.dll,我找不到 azure 应用程序网关的客户端。

【问题讨论】:

标签: c# asp.net azure azure-api-management


【解决方案1】:

Azure SDK 不提供直接管理 Azure 应用程序网关的管理客户端。如果我们想管理它,我们应该使用NetworkManagementClient.ApplicationGateways来管理它。更多详情请参考document

  1. 创建服务主体并将角色分配给 sp
az login
az account set --subscription "<your subscription id>"
# the sp will have Azure Contributor role
az ad sp create-for-rbac -n "readMetric" 

  1. 代码
# use msal get token
var app = ConfidentialClientApplicationBuilder.Create(<sp app id>)
           .WithAuthority(AzureCloudInstance.AzurePublic, "<sp tenantID>")
           .WithClientSecret(<sp password>)
           .Build();
string[] scopes = new string[] { "https://management.azure.com/.default" };
var  result = await app.AcquireTokenForClient(scopes)
                   .ExecuteAsync();
TokenCredentials tokenCredentials = new TokenCredentials(result.AccessToken,"Bearer");

 NetworkManagementClient networkManagementClient = new NetworkManagementClient(tokenCredentials);
ApplicationGateway appgateway =await networkManagementClient.ApplicationGateways.GetAsync("<groupName>", "<resourceName>");

// get application gateway settings:https://docs.microsoft.com/en-us/dotnet/api/microsoft.azure.management.network.models.applicationgateway?view=azure-dotnet


【讨论】:

  • 如何通过您编写的内容来实现这一点,` this.credentials = SdkContext.AzureCredentialsFactory.FromServicePrincipal(this.cpSettings.AccessKey, this.cpSettings.AccessSecret, this.cpSettings.TenantId, AzureEnvironment. Azure全球云); var fdCredentials = this.credentials.WithDefaultSubscription(this.cpSettings.SubscriptionId); var azure = Microsoft.Azure.Management.Fluent.Azure.Configure() .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic) .Authenticate(fdCredentials).WithDefaultSubscription(); `
  • 然后 var clientList = azure.ApplicationGateways.ListAsync().GetAwaiter().GetResult().ToList();我可以这样做吗?
  • @burim 是的,你可以这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-12
  • 2022-10-25
  • 1970-01-01
  • 2020-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多