繁体   English   中英

从 C# 访问和管理 Azure 资源

[英]Access and manage Azure resources from C#

我正在编写二进制 cmdlet 以将记录添加到 CosmosDb 集合。 我需要用户登录到 Azure(用户凭据),我可以使用 PS 命令获取信息的 rest。 我可以在 Powershell 中使用Get-AzCosmosDbAccount执行此操作,前提是此人在 Azure 中具有查看资源的权限。

我找不到的是在 C# 代码中执行此操作的方法。 我发现了几个非常接近但无法实际工作的示例。 例如,我在 Azure SDK 中为 .NET 找到了这个示例,但找不到对Azure.ResourceManager.Resources库的引用。

我找到了这个例子,但它使用应用程序注册凭据来验证而不是用户凭据。 我需要使用用户凭据。

我想在 C# 中执行此 PS 脚本:

Login-AzAccount
Get-AzSubscription -SubscriptionId xxxxxxxx-xxxx-xxxx-xxxx-cxxxxxxxxxxx | Select-AzSubscription
$cosmosKey = Get-AzCosmosDBAccountKey -ResourceGroupName 'rg-temp' -Name 'doctemp'
$cosmosKey.PrimaryMasterKey

可悲的是,这是我无法理解的Login-AzAccount

关键是使用new DefaultAzureCredential(true) - true还将启用用户凭据的交互式身份验证。 您还可以查看此文档以获取有关身份验证的一般信息。

以下示例使用 nuget 包Azure.IdentityAzure.ResourceManager.CosmosDB 后者目前仅作为预发布版本提供。 您也可以尝试使用 Microsoft.Azure.Management.CosmosDB

var subscriptionId = Environment.GetEnvironmentVariable("AZURE_SUBSCRIPTION_ID");
var client = new Azure.ResourceManager.CosmosDB.CosmosDBManagementClient(
       subscriptionId, new DefaultAzureCredential(true));
var keys = client.DatabaseAccounts.ListKeys("resourcegroupName", "accountname");

如果需要切换到不同的租户,可以设置AZURE_TENANT_ID环境变量。

您需要的是Microsoft.Azure.Cosmos package。有了它,您可以使用CosmosClient class 连接到 Cosmos DB:

this.cosmosClient = new CosmosClient(EndpointUri, PrimaryKey);

你可以在这里看到更详细的教程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM