Мне нужно было выполнить некоторый код 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