簡體   English   中英

如何使用Azure流利的資源管理注冊資源提供者?

[英]How to register resource providers using Azure fluent resource management?

我想完全自動化我的資源創建過程。 不幸的是,默認情況下,全新的訂閱沒有注冊一些資源提供者。 例如SQL。 如此處所述,很容易解決: https : //docs.microsoft.com/zh-cn/azure/azure-resource-manager/resource-manager-common-deployment-errors#noregisteredproviderfound

但是,這僅概述了使用門戶網站或Powershell手動使用的方法。

我正在尋找使用Microsoft.Azure.Management.ResourceManager.Fluent的解決方案

似乎無法使用C#做到這一點,但是似乎無法在任何地方找到該功能。

如何使用Azure流利的資源管理為新訂閱注冊資源提供者?

如何使用Azure流利的資源管理為新訂閱注冊資源提供者?

我們可以在Azure流利的資源管理器中為注冊表提供者使用以下功能。

var result=resourceManagementClient.Providers.Register("provider name");

我也為此做一個演示。

准備:

注冊表Azure Active Directory應用程序並分配角色

然后我們可以獲取tenantId,clientId,clientSecretKey

腳步:

1.創建一個C#控制台項目並引用Microsoft.Azure.Management.ResourceManager.Fluent

2.獲取訪問令牌

 public static async Task<string> GetAccessToken(string tenantId, string clientId, string clientSecretKey)
    {

        var context = new AuthenticationContext("https://login.windows.net/" + tenantId);
        ClientCredential clientCredential = new ClientCredential(clientId, clientSecretKey);
        var tokenResponse = await context.AcquireTokenAsync("https://management.azure.com/", clientCredential);
        var accessToken = tokenResponse.AccessToken;
        return accessToken;
    }

3.初始化resourceManagementClient對象

TokenCredentials ccCredentials = new TokenCredentials(GetAccessToken(tenantId, appId, secretKey).Result);
            var resourceManagementClient = new ResourceManagementClient(ccCredentials)
            {
                SubscriptionId = subscriptionId
            };

4.注冊資源提供者

我們還可以列出未注冊的提供商

 var resources = resourceManagementClient.Providers.List().ToList(x => x.RegistrationState.Equals("NotRegistered"));

var result=resourceManagementClient.Providers.Register("provider name");

在此處輸入圖片說明

5.從Azure門戶對其進行檢查。

在此處輸入圖片說明

碼:

        static string appId = "Registried Azure AD Appliction Id";
        static string secretKey = "Client secret Key";
        static string tenantId = "tenant Id ";
        private static string subscriptionId = "subscription Id ";
        public static async Task<string> GetAccessToken(string azureTenantId, string azureAppId, string azureSecretKey)
        {

            var context = new AuthenticationContext("https://login.windows.net/" + tenantId);
            ClientCredential clientCredential = new ClientCredential(appId, secretKey);
            var tokenResponse = await context.AcquireTokenAsync("https://management.azure.com/", clientCredential);
            var accessToken = tokenResponse.AccessToken;
            return accessToken;
        }
        static void Main(string[] args)
        {
            TokenCredentials ccCredentials = new TokenCredentials(GetAccessToken(tenantId, appId, secretKey).Result);
            var resourceManagementClient = new ResourceManagementClient(ccCredentials)
            {
                SubscriptionId = subscriptionId
            };
            var list1 = resourceManagementClient.Providers.List().ToList();
            var resource = resourceManagementClient.Providers.List().ToList().FirstOrDefault(x => x.NamespaceProperty.Equals("TrendMicro.DeepSecurity") && x.RegistrationState.Equals("NotRegistered"));
            var registry =resourceManagementClient.Providers.Register(resource?.NamespaceProperty);
        }

Packages.config:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Microsoft.Azure.Management.ResourceManager.Fluent" version="1.0.0" targetFramework="net452" />
  <package id="Microsoft.IdentityModel.Clients.ActiveDirectory" version="2.28.3" targetFramework="net452" />
  <package id="Microsoft.Rest.ClientRuntime" version="2.3.5" targetFramework="net452" />
  <package id="Microsoft.Rest.ClientRuntime.Azure" version="3.3.5" targetFramework="net452" />
  <package id="Microsoft.Rest.ClientRuntime.Azure.Authentication" version="2.2.12" targetFramework="net452" />
  <package id="Newtonsoft.Json" version="6.0.8" targetFramework="net452" />
</packages>

在即將發布的Azure Management SDK(Fluent)1.1版中添加了提供程序自動注冊功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM