如何在Azure函数中使用Azure资源运行状况API?

如何在Azure函数中使用Azure资源运行状况API?,azure,azure-functions,Azure,Azure Functions,我想在公共论坛上展示我的Azure服务的运行状况,我正在尝试构建它。Azure计时器功能将获取资源的状态并转储到数据库中,该数据库可以通过调用API由外部应用程序显示。我尝试了一些东西,但Azure资源运行状况API受Azure保护安全性和期望Oauth2隐式流,我认为它是在浏览器中启动的,通过用户交互,我们是否有任何方法可以绕过它,只需访问Azure函数中的资源运行状况API,我们可以使用Azure MSI来要求令牌,然后我们可以使用令牌调用资源运行状况API 比如说 将Azure RAB

我想在公共论坛上展示我的Azure服务的运行状况,我正在尝试构建它。Azure计时器功能将获取资源的状态并转储到数据库中,该数据库可以通过调用API由外部应用程序显示。我尝试了一些东西,但Azure资源运行状况API受Azure保护安全性和期望Oauth2隐式流,我认为它是在浏览器中启动的,通过用户交互,我们是否有任何方法可以绕过它,只需访问Azure函数中的资源运行状况API,我们可以使用Azure MSI来要求令牌,然后我们可以使用令牌调用资源运行状况API

比如说

  • 将Azure RABC角色参与者角色分配给MSI

  • 代码

  • // Install package "Azure.Identity"
    private static HttpClient httpClient = new HttpClient();
            [FunctionName("Function2")]
            public static async Task Run([TimerTrigger("0 */5 * * * *", RunOnStartup=true)]TimerInfo myTimer, ILogger log)
            {
                log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
                var creds = new DefaultAzureCredential();
                var scopes = new string[] { "https://management.azure.com/.default" };
                AccessToken token= await creds.GetTokenAsync(new TokenRequestContext(scopes));
                string uri = " ";
                using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get,uri)) {
                    request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token.Token);
                    using (HttpResponseMessage response = await httpClient.SendAsync(request)) {
                        if (response.IsSuccessStatusCode) {
                            var str = await response.Content.ReadAsStringAsync();
                            log.LogInformation(str);
                        }
                    }
    
    
    
                }