Erste Schritte mit der Azure CDN-Bibliothek für .NET
Wichtig
Azure CDN Standard von Microsoft (klassisch) wird am 30. September 2027 eingestellt. Um Dienstunterbrechungen zu vermeiden, ist es wichtig, dass Sie Ihre Profile von Azure CDN Standard von Microsoft (klassisch) bis zum 30. September 2027 auf die Dienstebene Azure Front Door Standard oder Premium migrieren. Weitere Informationen finden Sie unter Einstellung von Azure CDN Standard von Microsoft (klassisch).
Azure CDN von Edgio wird am 4. November 2025 eingestellt. Sie müssen Ihre Workload vor diesem Datum zu Azure Front Door migrieren, um Dienstunterbrechungen zu vermeiden. Weitere Informationen finden Sie unter Häufig gestellte Fragen zur Einstellung von Azure CDN von Edgio.
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
Melden Sie sich beim Azure-Portalan.
Klicken Sie auf Ressource erstellen.
Suchen Sie nach Ressourcengruppe, und klicken Sie im Bereich „Ressourcengruppe“ auf Erstellen.
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.
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.
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.
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.
Wählen Sie beim Erstellen der Anwendung anstelle von Webanwendung die Option Native Anwendung aus.
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.
Sie müssen keinen Clientauthentifizierungsschlüsselerstellen.
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.
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.
In Ihrem Projekt sollen einige Azure-Bibliotheken verwendet werden, die in NuGet-Paketen enthalten sind. Fügen Sie diese Bibliotheken dem Projekt hinzu.
Wählen Sie das Menü Extras, NuGet-Paket-Manager und dann Paket-Manager-Konsole aus.
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
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.
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;
Sie müssen einige Konstanten definieren, die von den Methoden verwendet werden. Fügen Sie in der
Program
-Klasse vor derMain
-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>";
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;
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(); }
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.
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.
Bestätigen Sie die Aufforderung, um den Rest des Programms auszuführen.
Nächste Schritte
Weitere Informationen zur Azure CDN-Verwaltungsbibliothek für .NET finden Sie in der Referenz auf MSDN.
Verwalten Sie Ihre CDN-Ressourcen mit PowerShell.