Usare i profili delle versioni dell'API con .NET nell'hub Azure StackUse API version profiles with .NET in Azure Stack Hub

.NET SDK per l'hub Azure Stack Gestione risorse fornisce strumenti che semplificano la creazione e la gestione dell'infrastruttura.The .NET SDK for the Azure Stack Hub Resource Manager provides tools to help you build and manage your infrastructure. I provider di risorse nell'SDK includono calcolo, rete, archiviazione, servizi app e Key Vault.Resource providers in the SDK include Compute, Networking, Storage, App Services, and Key Vault. .NET SDK include 14 pacchetti NuGet.The .NET SDK includes 14 NuGet packages. È necessario scaricare questi pacchetti nella soluzione ogni volta che si compila il progetto.You must download these packages to your solution every time you compile your project. Tuttavia, è possibile scaricare in modo specifico il provider di risorse da usare per le versioni ibride 2019-03-01 o 2018-03-01 per ottimizzare la memoria per l'app.However, you can specifically download which resource provider you'll use for the 2019-03-01-hybrid or 2018-03-01-hybrid versions in order to optimize the memory for your app. Ogni pacchetto è costituito da un provider di risorse, dalla rispettiva versione dell'API e dal profilo API a cui appartiene.Each package consists of a resource provider, the respective API version, and the API profile to which it belongs. I profili API in .NET SDK abilitano lo sviluppo cloud ibrido consentendo di passare tra le risorse e le risorse di Azure globali nell'hub Azure Stack.API profiles in the .NET SDK enable hybrid cloud development by helping you switch between global Azure resources and resources on Azure Stack Hub.

Profili delle versioni di .NET e API.NET and API version profiles

Un profilo API è una combinazione di provider di risorse e versioni API.An API profile is a combination of resource providers and API versions. Usare un profilo API per ottenere la versione più recente e stabile di ogni tipo di risorsa in un pacchetto del provider di risorse.Use an API profile to get the latest, most stable version of each resource type in a resource provider package.

  • Per utilizzare le versioni più recenti di tutti i servizi, utilizzare l' ultimo profilo dei pacchetti.To make use of the latest versions of all the services, use the latest profile of the packages. Questo profilo fa parte del pacchetto NuGet Microsoft. Azure. Management .This profile is part of the Microsoft.Azure.Management NuGet package.

  • Per usare i servizi compatibili con Azure Stack Hub, usare uno dei pacchetti seguenti:To use the services compatible with Azure Stack Hub, use one of the following packages:

    • Microsoft. Azure. Management. Profiles. Hybrid _ 2019 _ 03 _ 01. <ResourceProvider>.0.9.0-Preview. nupkgMicrosoft.Azure.Management.Profiles.hybrid_2019_03_01.<ResourceProvider>.0.9.0-preview.nupkg
    • Microsoft. Azure. Management. Profiles. Hybrid _ 2018 _ 03 _ 01. <ResourceProvider>.0.9.0-Preview. nupkgMicrosoft.Azure.Management.Profiles.hybrid_2018_03_01.<ResourceProvider>.0.9.0-preview.nupkg

    Assicurarsi che la parte ResourceProvider del pacchetto NuGet sopra venga modificata nel provider corretto.Ensure that the ResourceProvider portion of the above NuGet package is changed to the correct provider.

  • Per usare la versione più recente dell'API di un servizio, usare il profilo più recente del pacchetto NuGet specifico.To use the latest API version of a service, use the Latest profile of the specific NuGet package. Se ad esempio si vuole usare la versione più recente dell'API del servizio di calcolo, usare il profilo più recente del pacchetto di calcolo .For example, if you want to use the latest-API version of the Compute service alone, use the latest profile of the Compute package. Il profilo più recente fa parte del pacchetto NuGet Microsoft. Azure. Management .The latest profile is part of the Microsoft.Azure.Management NuGet package.

  • Per usare versioni API specifiche per un tipo di risorsa in un provider di risorse specifico, usare le versioni API specifiche definite nel pacchetto.To use specific API versions for a resource type in a specific resource provider, use the specific API versions defined inside the package.

È possibile combinare tutte le opzioni nella stessa applicazione.You can combine all of the options in the same application.

Installare Azure .NET SDKInstall the Azure .NET SDK

  • Installare Git.Install Git. Per istruzioni, vedere Introduzione-installazione di git.For instructions, see Getting Started - Installing Git.

  • Per installare i pacchetti NuGet corretti, vedere ricerca e installazione di un pacchetto.To install the correct NuGet packages, see Finding and installing a package.

  • I pacchetti che devono essere installati dipendono dalla versione del profilo che si vuole usare.The packages that need to be installed depend on the profile version you want to use. I nomi dei pacchetti per le versioni del profilo sono:The package names for the profile versions are:

    • Microsoft. Azure. Management. Profiles. Hybrid _ 2019 _ 03 _ 01. <ResourceProvider>.0.9.0-Preview. nupkgMicrosoft.Azure.Management.Profiles.hybrid_2019_03_01.<ResourceProvider>.0.9.0-preview.nupkg

    • Microsoft. Azure. Management. Profiles. Hybrid _ 2018 _ 03 _ 01. <ResourceProvider>.0.9.0-Preview. nupkgMicrosoft.Azure.Management.Profiles.hybrid_2018_03_01.<ResourceProvider>.0.9.0-preview.nupkg

  • Per installare i pacchetti NuGet corretti per Visual Studio Code, vedere il collegamento seguente per scaricare le istruzioni di gestione pacchetti NuGet.To install the correct NuGet packages for Visual Studio Code, see the following link to download the NuGet Package Manager instructions.

  • Se non è disponibile, creare una sottoscrizione e salvare l'ID sottoscrizione da usare in un secondo momento.If not available, create a subscription and save the subscription ID to be used later. Per informazioni su come creare una sottoscrizione, vedere creare sottoscrizioni per le offerte nell'Hub Azure stack.For information about how to create a subscription, see Create subscriptions to offers in Azure Stack Hub.

  • Creare un'entità servizio e salvare l'ID client e il segreto client.Create a service principal and save the client ID and the client secret. Per informazioni su come creare un'entità servizio per Azure Stack Hub, vedere [consentire alle applicazioni di accedere all'hub Azure stack][].For information about how to create a service principal for Azure Stack Hub, see Provide applications access to Azure Stack Hub. L'ID client è noto anche come ID applicazione quando si crea un'entità servizio.The client ID is also known as the application ID when creating a service principal.

  • Verificare che l'entità servizio disponga del ruolo Collaboratore/proprietario per la sottoscrizione.Make sure your service principal has the contributor/owner role on your subscription. Per informazioni su come assegnare un ruolo a un'entità servizio, vedere [consentire alle applicazioni di accedere all'Hub Azure stack][].For information about how to assign a role to service principal, see Provide applications access to Azure Stack Hub.

PrerequisitiPrerequisites

Per usare .NET Azure SDK con Azure Stack Hub, è necessario specificare i valori seguenti e quindi impostare i valori con le variabili di ambiente.To use the .NET Azure SDK with Azure Stack Hub, you must supply the following values, and then set the values with environment variables. Per impostare le variabili di ambiente, vedere le istruzioni che seguono la tabella per il sistema operativo specifico.To set the environmental variables, see the instructions following the table for your specific operating system.

valoreValue Variabili di ambienteEnvironment variables DescrizioneDescription
tenant_idTenant ID AZURE_TENANT_ID Valore dell' [ID tenant][]dell'hub Azure stack.The value of your Azure Stack Hub [tenant ID][].
ID clientClient ID AZURE_CLIENT_ID ID app dell'entità servizio salvato quando l'entità servizio è stata creata nella sezione precedente di questo articolo.The service principal app ID saved when the service principal was created in the previous section of this article.
ID sottoscrizioneSubscription ID AZURE_SUBSCRIPTION_ID L' [ID sottoscrizione][] è il modo in cui si accede alle offerte nell'hub Azure stack.The [subscription ID][] is how you access offers in Azure Stack Hub.
Client SecretClient Secret AZURE_CLIENT_SECRET Il segreto dell'app dell'entità servizio è stato salvato quando è stata creata l'entità servizio.The service principal app secret saved when the service principal was created.
Endpoint Gestione risorseResource Manager Endpoint ARM_ENDPOINT Vedere [l'endpoint dell'Hub Azure Stack gestione risorse][].See [the Azure Stack Hub Resource Manager endpoint][].
LocalitàLocation RESOURCE_LOCATION Percorso dell'hub Azure Stack.Location of Azure Stack Hub.

Per trovare l'ID tenant per l'hub Azure Stack, seguire le istruzioni riportate in questo articolo.To find the tenant ID for your Azure Stack Hub, follow the instructions in this article. Per impostare le variabili di ambiente, procedere come segue:To set your environment variables, do the following:

WindowsWindows

Per impostare le variabili di ambiente in un prompt dei comandi di Windows, usare il formato seguente:To set the environment variables in a Windows command prompt, use the following format:

set Azure_Tenant_ID=Your_Tenant_ID

Sistemi basati su MacOS, Linux e UNIXMacOS, Linux, and Unix-based systems

Nei sistemi basati su UNIX usare il comando seguente:In Unix-based systems, use the following command:

export Azure_Tenant_ID=Your_Tenant_ID

Endpoint Gestione risorse dell'hub Azure StackThe Azure Stack Hub Resource Manager endpoint

Azure Resource Manager è un Framework di gestione che consente agli amministratori di distribuire, gestire e monitorare le risorse di Azure.Azure Resource Manager is a management framework that enables administrators to deploy, manage, and monitor Azure resources. Azure Resource Manager possibile gestire queste attività come un gruppo, anziché singolarmente, in un'unica operazione.Azure Resource Manager can handle these tasks as a group, rather than individually, in a single operation.

È possibile ottenere le informazioni sui metadati dall'endpoint Gestione risorse.You can get the metadata info from the Resource Manager endpoint. L'endpoint restituisce un file JSON con le informazioni necessarie per eseguire il codice.The endpoint returns a JSON file with the info required to run your code.

Tenere presenti le seguenti considerazioni:Note the following considerations:

  • ResourceManagerUrl nella Azure stack Development Kit (Gabriele) è: https://management.local.azurestack.external/ .The ResourceManagerUrl in the Azure Stack Development Kit (ASDK) is: https://management.local.azurestack.external/.

  • Il ResourceManagerUrl in sistemi integrati è: https://management.region.<fqdn>/ , dove <fqdn> è il nome di dominio completo.The ResourceManagerUrl in integrated systems is: https://management.region.<fqdn>/, where <fqdn> is your fully qualified domain name. Per recuperare i metadati necessari: <ResourceManagerUrl>/metadata/endpoints?api-version=1.0 .To retrieve the metadata required: <ResourceManagerUrl>/metadata/endpoints?api-version=1.0.

File JSON di esempio:Sample JSON file:

{
   "galleryEndpoint": "https://portal.local.azurestack.external:30015/",
   "graphEndpoint": "https://graph.windows.net/",
   "portal Endpoint": "https://portal.local.azurestack.external/",
   "authentication": 
      {
         "loginEndpoint": "https://login.windows.net/",
         "audiences": ["https://management.yourtenant.onmicrosoft.com/3cc5febd-e4b7-4a85-a2ed-1d730e2f5928"]
      }
}

Profili API esistentiExisting API profiles

  • Microsoft. Azure. Management. Profiles. hybrid _ 2019 _ 03 _ 01. <ResourceProvider>.0.9.0-Preview. nupkg: profilo più recente creato per Azure stack Hub.Microsoft.Azure.Management.Profiles.hybrid_2019_03_01.<ResourceProvider>.0.9.0-preview.nupkg: Latest profile built for Azure Stack Hub. Usare questo profilo per la maggior compatibilità dei servizi con Azure Stack Hub, purché si sia alla versione 1904 o successiva.Use this profile for services to be most compatible with Azure Stack Hub, as long as you're on version 1904 or later.

  • Microsoft. Azure. Management. Profiles. hybrid _ 2018 _ 03 _ 01. <ResourceProvider>.0.9.0-Preview. nupkg: usare questo profilo per la compatibilità dei servizi con Azure stack hub per le versioni 1808 o successive.Microsoft.Azure.Management.Profiles.hybrid_2018_03_01.<ResourceProvider>.0.9.0-preview.nupkg: Use this profile for services to be compatible with Azure Stack Hub for versions 1808 or later.

  • Latest: profilo costituito dalle versioni più recenti di tutti i servizi.Latest: Profile consisting of the latest versions of all services. Usare le versioni più recenti di tutti i servizi.Use the latest versions of all the services. Questo profilo fa parte del pacchetto NuGet Microsoft. Azure. Management .This profile is part of the Microsoft.Azure.Management NuGet package.

Per altre informazioni sui profili API e dell'hub Azure Stack, vedere il [Riepilogo dei profili API][].For more information about Azure Stack Hub and API profiles, see the [Summary of API profiles][].

Utilizzo del profilo API di Azure .NET SDKAzure .NET SDK API profile usage

Usare il codice seguente per creare un'istanza di un client di gestione delle risorse.Use the following code to instantiate a resource management client. È possibile usare codice simile per creare un'istanza di altri client del provider di risorse, ad esempio calcolo, rete e archiviazione.Similar code can be used to instantiate other resource provider clients (such as Compute, Network, and Storage).

var client = new ResourceManagementClient(armEndpoint, credentials)
{
    SubscriptionId = subscriptionId;
};

Il credentials parametro in questo codice è necessario per creare un'istanza di un client.The credentials parameter in this code is required to instantiate a client. Il codice seguente genera un token di autenticazione dall'ID tenant e dall'entità servizio:The following code generates an authentication token by the tenant ID and the service principal:

var azureStackSettings = getActiveDirectoryServiceSettings(armEndpoint);
var credentials = ApplicationTokenProvider.LoginSilentAsync(tenantId, servicePrincipalId, servicePrincipalSecret, azureStackSettings).GetAwaiter().GetResult();

La getActiveDirectoryServiceSettings chiamata nel codice recupera gli endpoint dell'Hub Azure stack dall'endpoint dei metadati.The getActiveDirectoryServiceSettings call in the code retrieves Azure Stack Hub endpoints from the metadata endpoint. Indica le variabili di ambiente dalla chiamata eseguita:It states the environment variables from the call that's made:

public static ActiveDirectoryServiceSettings getActiveDirectoryServiceSettings(string armEndpoint)
{
    var settings = new ActiveDirectoryServiceSettings();
    try
    {
        var request = (HttpWebRequest)HttpWebRequest.Create(string.Format("{0}/metadata/endpoints?api-version=1.0", armEndpoint));
        request.Method = "GET";
        request.UserAgent = ComponentName;
        request.Accept = "application/xml";
        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
        {
            using (StreamReader sr = new StreamReader(response.GetResponseStream()))
            {
                var rawResponse = sr.ReadToEnd();
                var deserialized = JObject.Parse(rawResponse);
                var authenticationObj = deserialized.GetValue("authentication").Value<JObject>();
                var loginEndpoint = authenticationObj.GetValue("loginEndpoint").Value<string>();
                var audiencesObj = authenticationObj.GetValue("audiences").Value<JArray>();
                settings.AuthenticationEndpoint = new Uri(loginEndpoint);
                settings.TokenAudience = new Uri(audiencesObj[0].Value<string>());
                settings.ValidateAuthority = loginEndpoint.TrimEnd('/').EndsWith("/adfs", StringComparison.OrdinalIgnoreCase) ? false : true;
            }
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(String.Format("Could not get AD service settings. Exception: {0}", ex.Message));
    }
    return settings;
}

Questi passaggi consentono di usare i pacchetti NuGet del profilo API per distribuire correttamente l'applicazione nell'hub Azure Stack.These steps enable you to use the API profile NuGet packages to deploy your application successfully to Azure Stack Hub.

Esempi di utilizzo dei profili APISamples using API Profiles

È possibile usare gli esempi seguenti come riferimento per la creazione di soluzioni con .NET e i profili API dell'hub Azure Stack:You can use the following samples as a reference for creating solutions with .NET and the Azure Stack Hub API profiles:

Passaggi successiviNext steps

Altre informazioni sui profili API:Learn more about API profiles: