Vytvoření neinteraktivní aplikace .NET HDInsight

Spusťte aplikaci Microsoft .NET Azure HDInsight buď pod vlastní identitou aplikace (neinteraktivní), nebo pod identitou přihlášeného uživatele aplikace (interaktivní). V tomto článku se dozvíte, jak vytvořit neinteraktivní aplikaci .NET pro připojení k Azure a správu SLUŽBY HDInsight. Ukázku interaktivní aplikace najdete v tématu Připojení do Azure HDInsight.

Z neinteraktivní aplikace .NET potřebujete:

Předpoklady

Cluster HDInsight. Podívejte se na úvodní kurz.

Přiřazení role k aplikaci Microsoft Entra

Přiřaďte aplikaci Microsoft Entra roli, která jí udělí oprávnění k provádění akcí. Obor můžete nastavit na úrovni předplatného, skupiny prostředků nebo prostředku. Oprávnění se dědí do nižších úrovní oboru. Například přidání aplikace do role Čtenář pro skupinu prostředků znamená, že aplikace může číst skupinu prostředků a všechny prostředky v ní. V tomto článku nastavíte obor na úrovni skupiny prostředků. Další informace najdete v tématu Přiřazení rolí Azure ke správě přístupu k prostředkům předplatného Azure.

Přidání role Vlastník do aplikace Microsoft Entra

  1. Přihlaste se k portálu Azure.
  2. Přejděte do skupiny prostředků s clusterem HDInsight, na kterém spustíte dotaz Hive později v tomto článku. Pokud máte velký počet skupin prostředků, můžete pomocí filtru najít požadovanou skupinu prostředků.
  3. V nabídce skupiny prostředků vyberte Řízení přístupu (IAM).
  4. Výběrem karty Přiřazení rolí zobrazíte aktuální přiřazení rolí.
  5. V horní části stránky vyberte + Přidat.
  6. Podle pokynů přidejte roli Vlastník do aplikace Microsoft Entra. Po úspěšném přidání role se aplikace zobrazí pod rolí Vlastník.

Vývoj klientské aplikace HDInsight

  1. Vytvořte konzolovou aplikaci C#.

  2. Přidejte následující balíčky NuGet :

    • Install-Package Microsoft.Azure.Common.Authentication -Pre
    • Install-Package Microsoft.Azure.Management.HDInsight -Pre
    • Install-Package Microsoft.Azure.Management.Resources -Pre
  3. Spusťte následující kód:

    using System;
    using System.Security;
    using Microsoft.Azure;
    using Microsoft.Azure.Common.Authentication;
    using Microsoft.Azure.Common.Authentication.Factories;
    using Microsoft.Azure.Common.Authentication.Models;
    using Microsoft.Azure.Management.Resources;
    using Microsoft.Azure.Management.HDInsight;
    
    namespace CreateHDICluster
    {
        internal class Program
        {
            private static HDInsightManagementClient _hdiManagementClient;
    
            private static Guid SubscriptionId = new Guid("<Enter your Azure subscription ID>");
            private static string tenantID = "<Enter your tenant ID (also called directory ID)>";
            private static string applicationID = "<Enter your application ID>";
            private static string secretKey = "<Enter the application secret key>";
    
            private static void Main(string[] args)
            {
                var key = new SecureString();
                foreach (char c in secretKey) { key.AppendChar(c); }
    
                var tokenCreds = GetTokenCloudCredentials(tenantID, applicationID, key);
                var subCloudCredentials = GetSubscriptionCloudCredentials(tokenCreds, SubscriptionId);
    
                var resourceManagementClient = new ResourceManagementClient(subCloudCredentials);
                resourceManagementClient.Providers.Register("Microsoft.HDInsight");
    
                _hdiManagementClient = new HDInsightManagementClient(subCloudCredentials);
    
                var results = _hdiManagementClient.Clusters.List();
                foreach (var name in results.Clusters)
                {
                    Console.WriteLine("Cluster Name: " + name.Name);
                    Console.WriteLine("\t Cluster type: " + name.Properties.ClusterDefinition.ClusterType);
                    Console.WriteLine("\t Cluster location: " + name.Location);
                    Console.WriteLine("\t Cluster version: " + name.Properties.ClusterVersion);
                }
                Console.WriteLine("Press Enter to continue");
                Console.ReadLine();
            }
    
            /// Get the access token for a service principal and provided key.          
            public static TokenCloudCredentials GetTokenCloudCredentials(string tenantId, string clientId, SecureString secretKey)
            {
                var authFactory = new AuthenticationFactory();
                var account = new AzureAccount { Type = AzureAccount.AccountType.ServicePrincipal, Id = clientId };
                var env = AzureEnvironment.PublicEnvironments[EnvironmentName.AzureCloud];
                var accessToken =
                    authFactory.Authenticate(account, env, tenantId, secretKey, ShowDialog.Never).AccessToken;
    
                return new TokenCloudCredentials(accessToken);
            }
    
            public static SubscriptionCloudCredentials GetSubscriptionCloudCredentials(SubscriptionCloudCredentials creds, Guid subId)
            {
                return new TokenCloudCredentials(subId.ToString(), ((TokenCloudCredentials)creds).Token);
            }
        }
    }
    

Další kroky