A .NET-hez készült Azure CDN-kódtár használatának első lépései

A .NET-hez készült Azure CDN-kódtár használatával automatizálhatja a CDN-profilok és -végpontok létrehozását és kezelését. Ez az oktatóanyag egy egyszerű .NET-konzolalkalmazás létrehozását mutatja be, amely számos elérhető műveletet mutat be. Ez az oktatóanyag nem a .NET-hez készült Azure CDN-kódtár minden aspektusát ismerteti részletesen.

Az oktatóanyag elvégzéséhez a Visual Studio 2015-re van szüksége. A Visual Studio Community 2015 ingyenesen letölthető.

Tipp.

Az oktatóanyag befejezett projektje letölthető az MSDN-ről.

Előfeltételek

A CDN-felügyeleti kód írása előtt el kell végeznie némi előkészítést ahhoz, hogy a kód működjön együtt az Azure Resource Managerrel. A felkészüléshez a következőkre van szükség:

  • Az oktatóanyagban létrehozott CDN-profilt tartalmazó erőforráscsoport létrehozása
  • A Microsoft Entra ID konfigurálása az alkalmazás hitelesítésének biztosítására
  • Engedélyek alkalmazása az erőforráscsoportra, hogy csak a Microsoft Entra-bérlő által engedélyezett felhasználók használhassák a CDN-profilt

Az erőforráscsoport létrehozása

  1. Jelentkezzen be az Azure Portal.

  2. Kattintson az Erőforrás létrehozása gombra.

  3. Keresse meg az Erőforráscsoportot, és az Erőforráscsoport panelen kattintson a Létrehozás gombra.

    Új erőforráscsoport létrehozása

  4. Nevezze el az erőforráscsoportot a CdnConsoleTutorial névvel. Válassza ki az előfizetését, és válasszon egy Önhöz közeli helyet. Ha szeretné, a Rögzítés az irányítópulton jelölőnégyzetre kattintva rögzítheti az erőforráscsoportot a portál irányítópultján. A rögzítés megkönnyíti a későbbi keresést. Miután kiválasztotta a beállításokat, kattintson a Létrehozás gombra.

    Képernyőkép az Erőforráscsoport párbeszédpanelről.

  5. Az erőforráscsoport létrehozása után, ha nem rögzítette az irányítópulton, a Tallózás, majd az Erőforráscsoportok elemre kattintva megtalálhatja. A megnyitásához kattintson az erőforráscsoportra. Jegyezze fel az előfizetés azonosítóját. Később szükségünk lesz rá.

    Képernyőkép a C D N konzol oktatóanyag szakaszáról.

A Microsoft Entra-alkalmazás létrehozása és engedélyek alkalmazása

Az alkalmazáshitelesítésnek két módszere van a Microsoft Entra-azonosítóval: egyéni felhasználókkal vagy szolgáltatásnévvel. A szolgáltatásnév hasonló a Windows szolgáltatásfiókhoz. A CDN-profilok használatához adott felhasználói engedélyek megadása helyett az engedélyeket a szolgáltatásnév kapja meg. A szolgáltatásnevek általában automatizált, nem interaktív folyamatokhoz használatosak. Annak ellenére, hogy ez az oktatóanyag interaktív konzolalkalmazást ír, a szolgáltatásnév megközelítésére összpontosítunk.

A szolgáltatásnév létrehozása több lépésből áll, beleértve a Microsoft Entra-alkalmazások létrehozását is. Ennek létrehozásához ezt az oktatóanyagot fogjuk követni.

Fontos

Mindenképpen kövesse a csatolt oktatóanyag összes lépését. Fontos, hogy a leírásnak megfelelően végezze el. Ügyeljen arra, hogy jegyezze fel a bérlőazonosítót, a bérlő tartománynevét (általában .onmicrosoft.com tartományt, hacsak nem adott meg egyéni tartományt), ügyfél-azonosítót és ügyfél-hitelesítési kulcsot, mivel később szükségünk lesz ezekre az adatokra. Ügyeljen az ügyfél-azonosító és az ügyfél-hitelesítési kulcs védelme érdekében, mivel ezeket a hitelesítő adatokat bárki használhatja szolgáltatásnévként végzett műveletek végrehajtásához.

Amikor a Több-bérlős alkalmazás konfigurálása nevű lépéshez ér, válassza a Nem lehetőséget.

Amikor eljutunk a lépéshez : Az alkalmazás hozzárendelése szerepkörhöz, használja a korábban létrehozott erőforráscsoportot, a CdnConsoleTutorialt, de az Olvasó szerepkör helyett rendelje hozzá a CDN-profil közreműködői szerepkörét. Miután hozzárendelte az alkalmazást a CDN-profil közreműködői szerepköréhez az erőforráscsoportban, térjen vissza ehhez az oktatóanyaghoz.

Miután létrehozta a szolgáltatásnevet, és hozzárendelte a CDN-profil közreműködői szerepkörét, az erőforráscsoport Felhasználók paneljének az alábbi képhez hasonlóan kell kinéznie.

Felhasználók panel

Interaktív felhasználói hitelesítés

Ha szolgáltatásnév helyett inkább interaktív egyéni felhasználóhitelesítéssel rendelkezik, a folyamat hasonló a szolgáltatásnévhez. Valójában ugyanezt az eljárást kell követnie, de néhány kisebb módosítást kell végrehajtania.

Fontos

Csak akkor kövesse ezeket a következő lépéseket, ha egyéni felhasználói hitelesítést választ a szolgáltatásnév helyett.

  1. Az alkalmazás létrehozásakor webalkalmazás helyett válassza a natív alkalmazást.

    Natív alkalmazás

  2. A következő lapon a rendszer átirányítási URI-t kér. Az URI nem lesz érvényesítve, de ne feledje, hogy mit adott meg. Később szüksége lesz rá.

  3. Nincs szükség ügyfél-hitelesítési kulcs létrehozására.

  4. Ahelyett, hogy szolgáltatásnevet rendelnénk a CDN-profil közreműködői szerepköréhez, egyéni felhasználókat vagy csoportokat fogunk hozzárendelni. Ebben a példában láthatja, hogy CDN-bemutató felhasználót rendeltem hozzá a CDN-profil közreműködői szerepköréhez.

    Egyéni felhasználói hozzáférés

A projekt létrehozása és NuGet-csomagok hozzáadása

Most, hogy létrehoztunk egy erőforráscsoportot a CDN-profiljainkhoz, és a Microsoft Entra-alkalmazás engedélyt kapott a CDN-profilok és -végpontok ezen csoporton belüli kezelésére, megkezdhetjük az alkalmazás létrehozását.

Fontos

A Microsoft.IdentityModel.Clients.ActiveDirectory NuGet csomag és Azure AD hitelesítési kódtár (ADAL) elavult. 2020. június 30. óta nem adtunk hozzá új funkciókat. Határozottan javasoljuk, hogy frissítsen. További információkért tekintse meg a migrálási útmutatót.

A Visual Studio 2015-ben válassza a Fájl, Új, Projekt... lehetőséget az új projekt párbeszédpanel megnyitásához. Bontsa ki a Visual C# elemet, majd válassza a Windows lehetőséget a bal oldali panelen. Válassza a Konzolalkalmazás lehetőséget a középső panelen. Nevezze el a projektet, majd kattintson az OK gombra.

Új projekt

A projektünk a NuGet-csomagokban található Azure-kódtárakat fogja használni. Vegyük fel ezeket a kódtárakat a projektbe.

  1. Válassza az Eszközök menüt, a Nuget Csomagkezelő, majd Csomagkezelő konzolt.

    Nuget-csomagok kezelése

  2. A Csomagkezelő konzolon hajtsa végre a következő parancsot az Active Directory Authentication Library (ADAL) telepítéséhez:

    Install-Package Microsoft.Identity.Client

  3. Hajtsa végre a következőket az Azure CDN felügyeleti kódtár telepítéséhez:

    Install-Package Microsoft.Azure.Management.Cdn

Irányelvek, állandók, fő módszer és segédmetódusok

Nézzük meg a program alapstruktúráját.

  1. A Program.cs lapon cserélje le using a felül lévő irányelveket a következő parancsra:

    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. Meg kell határoznunk néhány állandót, amelyet a metódusok használnak. Az osztályban Program , de a Main metódus előtt adja hozzá a következő kódblokkokat. Szükség esetén cserélje le a helyőrzőket, beleértve a <szögletes zárójeleket> is.

    //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. Az osztály szintjén is definiálja ezt a két változót. Ezeket a változókat később használjuk annak meghatározására, hogy a profilunk és a végpontunk már létezik-e.

    static bool profileAlreadyExists = false;
    static bool endpointAlreadyExists = false;
    
  4. Cserélje le a metódust az Main alábbiak szerint:

    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. Néhány más módszerünk "Igen/Nem" kérdésekkel fogja kérni a felhasználót. Adja hozzá a következő módszert, hogy egy kicsit egyszerűbb legyen:

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

Most, hogy megírtuk a program alapvető struktúráját, létre kell hoznunk a metódus által Main hívott metódusokat.

Hitelesítés

Az Azure CDN Felügyeleti kódtár használatához hitelesíteni kell a szolgáltatásnevet, és le kell szereznünk egy hitelesítési jogkivonatot. Ez a metódus az Active Directory authentication Library használatával kéri le a jogkivonatot.

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

Ha egyéni felhasználói hitelesítést használ, a GetAccessToken módszer kissé eltérőnek tűnik.

Fontos

Csak akkor használja ezt a kódmintát, ha szolgáltatásnév helyett egyéni felhasználói hitelesítést választ.

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

Mindenképpen cserélje le <redirect URI> az átirányítási URI-t, amit az alkalmazás Microsoft Entra-azonosítóban való regisztrálásakor adott meg.

CDN-profilok és -végpontok listázása

Most már készen állunk a CDN-műveletek végrehajtására. A módszer első lépéseként felsorolja az erőforráscsoport összes profilját és végpontját, és ha talál egyezést az állandóinkban megadott profilokkal és végpontnevekkel, jegyezze fel később, hogy ne próbáljunk duplikációkat létrehozni.

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

CDN-profilok és -végpontok létrehozása

Ezután létrehozunk egy profilt.

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

A profil létrehozása után létrehozunk egy végpontot.

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

Feljegyzés

A fenti példa egy Contoso nevű forrást rendel a végponthoz egy gazdagépnévvelwww.contoso.com. Ezt úgy kell módosítania, hogy a saját forrás gazdanevére mutasson.

Végpont törlése

Feltételezve, hogy a végpont létrejött, az egyik gyakori feladat, amelyet a programunkban el szeretnénk végezni, az a végpont tartalmainak törlése.

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

Feljegyzés

A korábbi példában a sztring /* azt jelzi, hogy a végpont elérési útjának gyökerében lévő összes elemet ki szeretném üríteni. Ez egyenértékű az Összes törlése az Azure Portal "törlés" párbeszédpanelén való ellenőrzésével. A metódusban azure CreateCdnProfile CDN-ként hoztam létre profilunkat az Edgio-profilból a kód Sku = new Sku(SkuName.StandardVerizon)használatával, így ez sikeres lesz.

CDN-profilok és -végpontok törlése

Az utolsó metódusok törlik a végpontot és a profilt.

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

A program futtatása

Most már lefordíthatjuk és futtathatjuk a programot a Visual Studióban a Start gombra kattintva.

Futó program

Amikor a program eléri a fenti kérést, vissza kell tudnia térnie az erőforráscsoporthoz az Azure Portalon, és látnia kell, hogy a profil létrejött.

Sikerült!

Ezután megerősíthetjük a program többi részének futtatására vonatkozó utasításokat.

Program befejezése

Következő lépések

Az útmutatóban szereplő befejezett projekt megtekintéséhez töltse le a mintát.

A .NET-hez készült Azure CDN Felügyeleti kódtár további dokumentációját az MSDN-en találja.

CDN-erőforrások kezelése a PowerShell-lel.