通过Microsoft.Azure.Management.Fluent使用信息我正在尝试获取有关Web Jobs的信息。我可以用它来获取有关Web应用程序,服务总线,资源组,应用程序服务等的信息。
但是我找不到进入Web Job级别的方法。在Azure中,Web作业位于
级别https://ms.portal.azure.com/#resource/subscriptions/ {SubId} / resourceGroups / {ApServiceName} /providers/Microsoft.Web/sites/ {ApServiceName} / webJobs
使用Microsoft.Azure.Management.Fluent我无法找到进入Web作业级别的方法。这可以通过Microsoft.Azure.Management.Fluent吗?
答案 0 :(得分:0)
这可以通过Microsoft.Azure.Management.Fluent吗?
根据我的经历,否。根据{{3}}源代码,似乎没有办法获得WebJob级别。
如果我们想要获得WebJob级别,Azure会为我们提供Azure SDK以在WebJob上运行。关于WebJob API的授权,我们可以参考此WebJob API。
答案 1 :(得分:0)
我需要为 WebJobs 执行一些管理 API 代码,发现现在可以了,虽然在 API 文档中不容易找到。
您可以通过安装 Microsoft.Azure.Management.AppService.Fluent
包来实现(我认为也可以通过非流畅的管理 SDK 来实现,尽管我没有尝试过)。
可以这样访问管理 WebJob 的方法:
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
,您可以获得对 IWebAppsOperations
实例的引用,然后您可以在该实例上对 WebJobs 执行相当多的操作,包括启动和停止它们。
如果您正在寻找一种使用 Azure.Identity
进行身份验证的方法,而不是他们过去用于这些旧 SDK 的基于文件的凭据方法,那么即使不支持,也有一种方法可以实现这一点“开箱即用”。
有一个 GitHub repo 包含如何实现此目标的示例。我认为它是由 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);
}
}
这个例子没有做任何令牌缓存,但就我的目的而言,我并没有太在意这个。它还对我请求令牌的范围进行了硬编码,因为我知道我只会将其与 Azure 管理 API 一起使用。