簡體   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