Erste Schritte mit der Azure CDN-Bibliothek für .NET

Sie können die Azure CDN-Bibliothek für .NET verwenden, um die Erstellung und Verwaltung von CDN-Profilen und -Endpunkten zu automatisieren. Dieses Tutorial führt Sie durch die Erstellung einer einfachen .NET-Konsolenanwendung, die einige der verfügbaren Vorgänge demonstriert. In diesem Tutorial werden nicht sämtliche Aspekte der Azure-CDN-Bibliothek für .NET ausführlich beschrieben.

Für dieses Tutorial benötigen Sie Visual Studio 2015. Visual Studio Community 2015 steht kostenlos zum Download zur Verfügung.

Tipp

Das vervollständigte Projekt aus diesem Tutorial steht auf MSDN zum Download bereit.

Voraussetzungen

Bevor Sie CDN-Verwaltungscode schreiben können, müssen Sie einige Vorbereitungsschritte ausführen, damit der Code mit Azure Resource Manager interagieren kann. Dies umfasst die folgenden Vorbereitungsmaßnahmen:

  • Erstellen einer Ressourcengruppe für das CDN-Profil, das in diesem Tutorial erstellt wird
  • Konfigurieren von Microsoft Entra ID zur Bereitstellung der Authentifizierung für die Anwendung
  • Anwenden der Berechtigungen auf die Ressourcengruppe, sodass nur autorisierte Benutzer aus Ihrem Microsoft Entra-Mandanten mit dem CDN-Profil interagieren können

Erstellen der Ressourcengruppe

  1. Melden Sie sich beim Azure-Portalan.

  2. Klicken Sie auf Ressource erstellen.

  3. Suchen Sie nach Ressourcengruppe, und klicken Sie im Bereich „Ressourcengruppe“ auf Erstellen.

    Erstellen einer neuen Ressourcengruppe

  4. Benennen Sie die Ressourcengruppe CdnConsoleTutorial. Wählen Sie Ihr Abonnement aus, und wählen Sie einen Standort in Ihrer Nähe. Wenn Sie möchten, können Sie das Kontrollkästchen An Dashboard anheften aktivieren, um die Ressourcengruppe an das Dashboard im Portal anzuheften. Durch das Anheften lässt sie sich später einfacher wiederfinden. Nachdem Sie Ihre Auswahl getroffen haben, klicken Sie auf Erstellen.

    Screenshot: Dialogfeld „Ressourcengruppe“

  5. Wenn Sie die Ressourcengruppe nicht an Ihr Dashboard angeheftet haben, können Sie nach der Erstellung danach suchen, indem Sie auf Durchsuchen > Ressourcengruppen klicken. Klicken Sie auf die Ressourcengruppe, um sie zu öffnen. Notieren Sie sich Ihre Abonnement-ID. Sie benötigen sie später.

    Screenshot: Abschnitt „CdnConsoleTutorial“

Erstellen der Microsoft Entra-Anwendung und Anwenden von Berechtigungen

Es gibt zwei Ansätze für die App-Authentifizierung mit Microsoft Entra ID: Einzelne Benutzer oder ein Dienstprinzipal. Ein Dienstprinzipal ähnelt einem Dienstkonto in Windows. Anstatt einem bestimmten Benutzer Berechtigungen für die Interaktion mit den CDN-Profilen zu gewähren, erteilen Sie die Berechtigungen dem Dienstprinzipal. Dienstprinzipale werden im Allgemeinen für automatisierte, nicht interaktive Prozesse verwendet. Auch wenn in diesem Tutorial eine interaktive Konsolen-App erstellt wird, verwenden wir hier einen Dienstprinzipal.

Die Erstellung eines Dienstprinzipals umfasst mehrere Schritte, einschließlich der Erstellung einer Microsoft Entra-Anwendung. Absolvieren Sie dieses Tutorial, um die Erstellung durchzuführen.

Wichtig

Stellen Sie sicher, dass Sie alle Schritte in diesem Tutorialausführen. Es ist von großer Bedeutung, dass Sie die Schritte genau wie beschrieben ausführen. Notieren Sie sich die folgenden Angaben, da Sie diese später benötigen werden: Mandanten-ID, Domänenname des Mandanten (üblicherweise eine .onmicrosoft.com-Domäne, sofern Sie keine benutzerdefinierte Domäne angegeben haben), Client-ID und Clientauthentifizierungsschlüssel. Schützen Sie die Client-ID und den Clientauthentifizierungsschlüssel sorgfältig, da diese Anmeldeinformationen verwendet werden können, um Vorgänge als Dienstprinzipal auszuführen.

Wenn Sie zum Schritt „Mehrinstanzenfähige Anwendung konfigurieren“ gelangen, wählen Sie Nein aus.

Im Schritt Zuweisen einer Anwendung zur Rolle verwenden Sie die zuvor erstellte Ressourcengruppe CdnConsoleTutorial. Weisen Sie ihr aber nicht die Rolle Leser, sondern die Rolle Mitwirkender für das CDN-Profil zu. Nachdem Sie die Anwendung in Ihrer Ressourcengruppe der Rolle Mitwirkender von CDN-Profil zugewiesen haben, kehren Sie zu diesem Tutorial zurück.

Nachdem Sie den Dienstprinzipal erstellt und die Rolle Mitwirkender von CDN-Profil zugewiesen haben, sollte das Blatt Benutzer für Ihre Ressourcengruppe in etwa wie in der folgenden Abbildung aussehen.

Blatt „Benutzer“

Interaktive Benutzerauthentifizierung

Wenn Sie statt eines Dienstprinzipals lieber eine interaktive individuelle Benutzerauthentifizierung einrichten möchten, ähnelt der Prozess dem der Erstellung eines Dienstprinzipals. Sie wenden im Grunde das gleiche Verfahren an, nehmen aber einige kleinere Änderungen vor.

Wichtig

Führen Sie die nächsten Schritte nur aus, wenn Sie die individuelle Benutzerauthentifizierung anstelle eines Dienstprinzipals verwenden möchten.

  1. Wählen Sie beim Erstellen der Anwendung anstelle von Webanwendung die Option Native Anwendung aus.

    Native Anwendung

  2. Auf der nächsten Seite werden Sie zur Eingabe eines Umleitungs-URI aufgefordert. Der URI wird nicht überprüft, merken Sie sich jedoch, was Sie eingegeben haben. Sie benötigen ihn später.

  3. Sie müssen keinen Clientauthentifizierungsschlüsselerstellen.

  4. Anstatt der Rolle Mitwirkender von CDN-Profil einen Dienstprinzipal zuzuweisen, weisen Sie einzelne Benutzer oder Gruppen zu. In diesem Beispiel sehen Sie, dass ich den Benutzer CDN-Demobenutzer der Rolle Mitwirkender von CDN-Profil zugewiesen habe.

    Individueller Benutzerzugriff

Erstellen Ihres Projekts und Hinzufügen von NuGet-Paketen

Nachdem Sie nun eine Ressourcengruppe für Ihre CDN-Profile erstellt und der Microsoft Entra-Anwendung die Berechtigung zum Verwalten von CDN-Profilen und -Endpunkten innerhalb dieser Gruppe erteilt haben, können Sie damit beginnen, Ihre Anwendung zu erstellen.

Wichtig

Das Microsoft.IdentityModel.Clients.ActiveDirectory NuGet Paket und Azure AD-Authentifizierungsbibliothek (ADAL) sind veraltet. Seit dem 30. Juni 2020 wurden keine neuen Features mehr hinzugefügt. Wir raten Ihnen dringend zu einem Upgrade. Weitere Informationen finden Sie im Migrationshandbuch.

Wählen Sie in Visual Studio 2015 Datei, Neu, Projekt... aus, um das Dialogfeld „Neues Projekt“ zu öffnen. Erweitern Sie Visual C# , und wählen Sie im linken Bereich Windows aus. Wählen Sie im mittleren Bereich Konsolenanwendung aus. Benennen Sie Ihr Projekt, und wählen Sie OK aus.

Neues Projekt

In Ihrem Projekt sollen einige Azure-Bibliotheken verwendet werden, die in NuGet-Paketen enthalten sind. Fügen Sie diese Bibliotheken dem Projekt hinzu.

  1. Wählen Sie das Menü Extras, NuGet-Paket-Manager und dann Paket-Manager-Konsole aus.

    Verwalten von NuGet-Paketen

  2. Führen Sie in der Paket-Manager-Konsole den folgenden Befehl aus, um die Active Directory Authentication Library (ADAL) zu installieren:

    Install-Package Microsoft.Identity.Client

  3. Führen Sie den folgenden Befehl aus, um die Azure CDN-Verwaltungsbibliothekzu installieren:

    Install-Package Microsoft.Azure.Management.Cdn

Anweisungen, Konstanten, main-Methode und Hilfsmethoden

Schreiben Sie nun die Grundstruktur des Programms.

  1. Ersetzen Sie auf der Registerkarte „Program.cs“ die using-Anweisungen im oberen Bereich durch den folgenden Befehl:

    using System;
    using System.Collections.Generic;
    using Microsoft.Azure.Management.Cdn;
    using Microsoft.Azure.Management.Cdn.Models;
    using Microsoft.Azure.Management.Resources;
    using Microsoft.Azure.Management.Resources.Models;
    using Microsoft.Identity.Client;
    using Microsoft.Rest;
    
  2. Sie müssen einige Konstanten definieren, die von den Methoden verwendet werden. Fügen Sie in der Program-Klasse vor der Main-Methode die folgenden Codeblöcke hinzu. Ersetzen Sie die Platzhalter einschließlich der <spitzen Klammern> nach Bedarf durch Ihre eigenen Werte.

    //Tenant app constants
    private const string clientID = "<YOUR CLIENT ID>";
    private const string clientSecret = "<YOUR CLIENT AUTHENTICATION KEY>"; //Only for service principals
    private const string authority = "https://login.microsoftonline.com/<YOUR TENANT ID>/<YOUR TENANT DOMAIN NAME>";
    
    //Application constants
    private const string subscriptionId = "<YOUR SUBSCRIPTION ID>";
    private const string profileName = "CdnConsoleApp";
    private const string endpointName = "<A UNIQUE NAME FOR YOUR CDN ENDPOINT>";
    private const string resourceGroupName = "CdnConsoleTutorial";
    private const string resourceLocation = "<YOUR PREFERRED AZURE LOCATION, SUCH AS Central US>";
    
  3. Definieren Sie auf Ebene der Klasse diese beiden Variablen. Mithilfe dieser Variablen ermitteln Sie später, ob Ihr Profil und Endpunkt bereits vorhanden sind.

    static bool profileAlreadyExists = false;
    static bool endpointAlreadyExists = false;
    
  4. Ersetzen Sie die Main -Methode wie folgt:

    static void Main(string[] args)
    {
        //Get a token
        AuthenticationResult authResult = GetAccessToken();
    
        // Create CDN client
        CdnManagementClient cdn = new CdnManagementClient(new TokenCredentials(authResult.AccessToken))
            { SubscriptionId = subscriptionId };
    
        ListProfilesAndEndpoints(cdn);
    
        // Create CDN Profile
        CreateCdnProfile(cdn);
    
        // Create CDN Endpoint
        CreateCdnEndpoint(cdn);
    
        Console.WriteLine();
    
        // Purge CDN Endpoint
        PromptPurgeCdnEndpoint(cdn);
    
        // Delete CDN Endpoint
        PromptDeleteCdnEndpoint(cdn);
    
        // Delete CDN Profile
        PromptDeleteCdnProfile(cdn);
    
        Console.WriteLine("Press Enter to end program.");
        Console.ReadLine();
    }
    
  5. Einige Ihrer Methoden werden die Benutzer auffordern, Fragen mit Ja oder Nein zu beantworten. Fügen Sie die folgende Methode hinzu, um diesen Vorgang etwas zu erleichtern:

    private static bool PromptUser(string Question)
    {
        Console.Write(Question + " (Y/N): ");
        var response = Console.ReadKey();
        Console.WriteLine();
        if (response.Key == ConsoleKey.Y)
        {
            return true;
        }
        else if (response.Key == ConsoleKey.N)
        {
            return false;
        }
        else
        {
            // They pressed something other than Y or N.  Let's ask them again.
            return PromptUser(Question);
        }
    }
    

Nachdem wir die Grundstruktur für unser Programm geschrieben haben, müssen wir nun die Methoden erstellen, die von der Main -Methode aufgerufen werden.

Authentifizierung

Bevor Sie die Azure CDN Management Library verwenden können, müssen Sie den Dienstprinzipal authentifizieren und ein Authentifizierungstoken abrufen. Diese Methode verwendet die Active Directory-Authentifizierungsbibliothek zum Abrufen des Tokens.

private static AuthenticationResult GetAccessToken()
{
    AuthenticationContext authContext = new AuthenticationContext(authority);
    ClientCredential credential = new ClientCredential(clientID, clientSecret);
    AuthenticationResult authResult =
        authContext.AcquireTokenAsync("https://management.core.windows.net/", credential).Result;

    return authResult;
}

Wenn Sie die individuelle Benutzerauthentifizierung verwenden, sieht die GetAccessToken-Methode etwas anders aus.

Wichtig

Verwenden Sie dieses Codebeispiel nur, wenn Sie die individuelle Benutzerauthentifizierung anstelle eines Dienstprinzipals verwenden möchten.

private static AuthenticationResult GetAccessToken()
{
    AuthenticationContext authContext = new AuthenticationContext(authority);
    AuthenticationResult authResult = authContext.AcquireTokenAsync("https://management.core.windows.net/",
        clientID, new Uri("http://<redirect URI>"), new PlatformParameters(PromptBehavior.RefreshSession)).Result;

    return authResult;
}

Ersetzen Sie <redirect URI> durch den Umleitungs-URI, den Sie bei der Registrierung der Anwendung in Microsoft Entra ID eingegeben haben.

Auflisten von CDN-Profilen und -Endpunkten

Jetzt können Sie CDN-Vorgänge ausführen. Als Erstes listet die Methode sämtliche Profile und Endpunkte in Ihrer Ressourcengruppe auf. Wenn eine Übereinstimmung für die in den Konstanten angegebenen Profil- und Endpunktnamen gefunden wird, vermerkt die Methode diese Namen zur späteren Verwendung, damit keine Duplikate erstellt werden.

private static void ListProfilesAndEndpoints(CdnManagementClient cdn)
{
    // List all the CDN profiles in this resource group
    var profileList = cdn.Profiles.ListByResourceGroup(resourceGroupName);
    foreach (Profile p in profileList)
    {
        Console.WriteLine("CDN profile {0}", p.Name);
        if (p.Name.Equals(profileName, StringComparison.OrdinalIgnoreCase))
        {
            // Hey, that's the name of the CDN profile we want to create!
            profileAlreadyExists = true;
        }

        //List all the CDN endpoints on this CDN profile
        Console.WriteLine("Endpoints:");
        var endpointList = cdn.Endpoints.ListByProfile(p.Name, resourceGroupName);
        foreach (Endpoint e in endpointList)
        {
            Console.WriteLine("-{0} ({1})", e.Name, e.HostName);
            if (e.Name.Equals(endpointName, StringComparison.OrdinalIgnoreCase))
            {
                // The unique endpoint name already exists.
                endpointAlreadyExists = true;
            }
        }
        Console.WriteLine();
    }
}

Erstellen von CDN-Profilen und -Endpunkten

Als Nächstes erstellen Sie ein Profil.

private static void CreateCdnProfile(CdnManagementClient cdn)
{
    if (profileAlreadyExists)
    {
        Console.WriteLine("Profile {0} already exists.", profileName);
    }
    else
    {
        Console.WriteLine("Creating profile {0}.", profileName);
        ProfileCreateParameters profileParms =
            new ProfileCreateParameters() { Location = resourceLocation, Sku = new Sku(SkuName.StandardVerizon) };
        cdn.Profiles.Create(profileName, profileParms, resourceGroupName);
    }
}

Nachdem das Profil erstellt wurde, erstellen Sie einen Endpunkt.

private static void CreateCdnEndpoint(CdnManagementClient cdn)
{
    if (endpointAlreadyExists)
    {
        Console.WriteLine("Profile {0} already exists.", profileName);
    }
    else
    {
        Console.WriteLine("Creating endpoint {0} on profile {1}.", endpointName, profileName);
        EndpointCreateParameters endpointParms =
            new EndpointCreateParameters()
            {
                Origins = new List<DeepCreatedOrigin>() { new DeepCreatedOrigin("Contoso", "www.contoso.com") },
                IsHttpAllowed = true,
                IsHttpsAllowed = true,
                Location = resourceLocation
            };
        cdn.Endpoints.Create(endpointName, endpointParms, profileName, resourceGroupName);
    }
}

Hinweis

Das obige Beispiel weist dem Endpunkt einen Ursprung namens Contoso mit dem Hostnamen www.contoso.com zu. Ändern Sie dies in den Hostnamen Ihres Ursprungs.

Bereinigen eines Endpunkts

Eine häufige Aufgabe, die Sie auch in Ihr Programm aufnehmen sollten, ist das Löschen von Inhalten auf dem Endpunkt.

private static void PromptPurgeCdnEndpoint(CdnManagementClient cdn)
{
    if (PromptUser(String.Format("Purge CDN endpoint {0}?", endpointName)))
    {
        Console.WriteLine("Purging endpoint. Please wait...");
        cdn.Endpoints.PurgeContent(resourceGroupName, profileName, endpointName, new List<string>() { "/*" });
        Console.WriteLine("Done.");
        Console.WriteLine();
    }
}

Hinweis

Im vorstehenden Beispiel gibt die Zeichenfolge /* an, dass ich sämtliche Daten im Stammverzeichnis des Endpunktpfads löschen möchte. Dies entspricht der Option Alles bereinigen im Bereinigungsdialogfeld des Azure-Portals. In der CreateCdnProfile-Methode habe ich das Profil durch Angabe des Codes Sku = new Sku(SkuName.StandardVerizon) als Azure CDN from Edgio erstellt. Der Vorgang wird also erfolgreich ausgeführt.

Löschen von CDN-Profilen und -Endpunkten

Mit den letzten Methoden wird der Endpunkt und das Profil gelöscht.

private static void PromptDeleteCdnEndpoint(CdnManagementClient cdn)
{
    if(PromptUser(String.Format("Delete CDN endpoint {0} on profile {1}?", endpointName, profileName)))
    {
        Console.WriteLine("Deleting endpoint. Please wait...");
        cdn.Endpoints.DeleteIfExists(endpointName, profileName, resourceGroupName);
        Console.WriteLine("Done.");
        Console.WriteLine();
    }
}

private static void PromptDeleteCdnProfile(CdnManagementClient cdn)
{
    if(PromptUser(String.Format("Delete CDN profile {0}?", profileName)))
    {
        Console.WriteLine("Deleting profile. Please wait...");
        cdn.Profiles.DeleteIfExists(profileName, resourceGroupName);
        Console.WriteLine("Done.");
        Console.WriteLine();
    }
}

Ausführen des Programms

Jetzt können Sie das Programm kompilieren und ausführen, indem Sie in Visual Studio auf die Schaltfläche Starten klicken.

Ausgeführtes Programm

Wenn das Programm die obige Eingabeaufforderung erreicht, wechseln Sie zurück zu Ihrer Ressourcengruppe im Azure-Portal. Sie sollten feststellen, dass das Profil erstellt wurde.

Erfolgreich!

Bestätigen Sie die Aufforderung, um den Rest des Programms auszuführen.

Abgeschlossenes Programm

Nächste Schritte

Laden Sie das Beispiel herunter, um sich das abgeschlossene Projekt dieser exemplarischen Vorgehensweise anzusehen.

Weitere Informationen zur Azure CDN-Verwaltungsbibliothek für .NET finden Sie in der Referenz auf MSDN.

Verwalten Sie Ihre CDN-Ressourcen mit PowerShell.