Доступ к информации о веб-заданиях через Microsoft.Azure.Management.Fluent на C #

Использование информации через Microsoft.Azure.Management.Fluent Я пытаюсь получить информацию о веб-вакансиях. Я могу использовать его для получения информации о веб-приложениях, служебных шинах, группах ресурсов, службах приложений и т. Д.

Но я не смог найти способ добраться до уровня Web Job. В Azure веб-задания расположены на уровне

https://ms.portal.azure.com/#resource/subscriptions/ {SubId} / resourceGroups / {ApServiceName} /providers/Microsoft.Web/sites/ {ApServiceName} / webJobs

Используя Microsoft.Azure.Management.Fluent, я не смог найти способ перейти на уровень веб-заданий. Возможно ли это через Microsoft.Azure.Management.Fluent?


person mike w    schedule 20.10.2017    source источник


Ответы (2)


Возможно ли это через Microsoft.Azure.Management.Fluent?

Исходя из моего опыта, Нет. Согласно исходному коду Azure SDK , похоже, нет возможности получить уровень WebJob.

Если мы хотим получить уровень веб-задания, Azure предоставляет нам API веб-задания, чтобы работать с WebJob. Что касается авторизации для API WebJob, мы могли бы обратиться к this блог.

person Tom Sun - MSFT    schedule 23.10.2017

Мне нужно было выполнить некоторый код API управления для WebJobs, и я обнаружил, что теперь это возможно, хотя найти это в документации по API непросто.

Вы можете сделать это, установив пакет Microsoft.Azure.Management.AppService.Fluent (я думаю, что это также можно сделать и с некорректным SDK управления, хотя я этого не пробовал).

Получить доступ к методам управления веб-заданием можно так:

using Microsoft.Azure.Management.Fluent;
using Microsoft.Azure.Management.ResourceManager.Fluent;
using Microsoft.Azure.Management.ResourceManager.Fluent.Authentication;

class MyWebJobsManagementClass
{
    public async Task DoSomeWebJobsManagement()
    {
        var jobs = await Azure
            .Authenticate() // See the docs for how to authenticate with this SDK
            .WithSubscription("your-subscription-id")
            .AppServices
            .Inner 
            .WebApps
            .ListWebJobsWithHttpMessagesAsync("resource-group-name", "app-service-name")
    }
}

Благодаря неочевидному AppServices.Inner вы можете получить ссылку на _ 4_, который затем позволяет выполнять ряд операций с веб-заданиями, включая их запуск и остановку.

Примечание об аутентификации

Если вы ищете способ аутентификации с помощью Azure.Identity вместо подхода к учетным данным на основе файлов, который они использовали с этими более старыми SDK, то есть способ добиться этого, даже если он не поддерживается изначально.

Есть репозиторий GitHub, который содержит пример того, как этого добиться. Я думаю, что это один из разработчиков из команды Microsoft, но официально Microsoft не поддерживает. Для него нет пакета NuGet, и они рекомендуют просто скопировать нужные вам биты.

На самом деле я обнаружил, что код в этом образце репозитория был слишком сложным для моих нужд, и в моем случае все, что мне было нужно, было это. Обратите внимание: я скопировал это из моего проекта F #, не тестируя его, поэтому я мог сделать ошибку при преобразовании в C #, но, надеюсь, это достаточно близко, чтобы вы поняли идею.

class AzureIdentityFluentCredentialAdapter : AzureCredentials
{
    public AzureIdentityFluentCredentialAdapter(string tenantId)
        : base(default(DeviceCredentialInformation), tenantId, AzureEnvironment.AzureGlobalCloud)
    {
    }

    public override Task ProcessHttpRequestAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        var creds = DefaultAzureCredential() // Use the new Azure.Identity library to get access tokens

        var accessToken = await creds.GetTokenAsync(
            new TokenRequestContent(new [] { "https://management.azure.com/.default" }), 
            cancellationToken);

        return await TokenCredentials(accessToken.Token)
            .ProcessHttpRequestAsync(request, cancellationToken);
    }
}

В этом примере не выполняется кеширование токенов, но для моих целей меня это особо не беспокоило. Также жестко запрограммирована область действия, для которой я запрашиваю токен, потому что я знал, что буду использовать ее только с API управления Azure.

person Choc13    schedule 10.05.2021