0

저는 자원 생성 프로세스를 완전히 자동화하고 싶습니다. 불행히도 새로운 구독에는 기본적으로 등록 된 소수의 리소스 공급자가 없습니다. 예 : SQL. 여기에 설명 된대로 쉽게 해결할 수 있습니다. https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-common-deployment-errors#noregisteredproviderfoundAzure 유창한 리소스 관리를 사용하여 리소스 공급자를 등록하는 방법은 무엇입니까?

그러나이 방법은 수동으로 포털을 사용하거나 Powershell을 사용하는 방법만을 설명합니다.

나는 Microsoft.Azure.Management.ResourceManager.Fluent

그것은 내가 C#을 사용을 할 수 없을 것이라고 일치하지 않는 것 같다 사용하여 솔루션을 찾고 있어요,하지만 난 아무 기능을 찾을 수있을 수없는 것.

Azure 유창한 리소스 관리를 사용하여 새로운 구독에 리소스 공급자를 등록하는 방법은 무엇입니까?

답변

4

Azure 유창한 리소스 관리를 사용하여 새로운 구독에 리소스 공급자를 등록하는 방법은 무엇입니까?

우리는 공급자를 레지스트리에 Azure fluent resource management에 다음과 같은 기능을 사용할 수 있습니다.

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

나도 데모를 해.

Preparetion :

1.Create C# 콘솔 프로젝트를하고 Microsoft.Azure.Management.ResourceManager.Fluent

참조 :

Registry Azure Active Directory application and assign Role

그리고 우리가 tenantId, 클라이언트 ID, clientSecretKey

단계를 얻을 수 있습니다 (210)

2.Get

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.Registry 자원 제공자 accesstoken

우리는 또한 unregistied 제공자를 나열 할 수 있습니다

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

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

enter image description here

5. Azure 포털에서 확인하십시오.

enter image description here

코드 :

 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); 
     } 

패키지.구성 :

<?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> 
1

공급자 자동 등록 기능은 Azure Management SDK (Fluent) v. 1.1의 다음 릴리스에 추가되었습니다.