Začínáme s knihovnou Azure CDN pro .NET

Důležité

30. září 2027 bude vyřazena služba Azure CDN Standard od Microsoftu (Classic). Abyste se vyhnuli přerušení služeb, je důležité do 30. září 2027 migrovat profily Azure CDN Standard z Microsoftu (classic) na úroveň Azure Front Door Standard nebo Premium. Další informace najdete v tématu Azure CDN Standard (klasický) od Microsoftu ukončení.

15. ledna 2025 byla vyřazena služba Azure CDN z Edgio. Další informace najdete v nejčastějších dotazech týkajících se vyřazení služby Azure CDN z Edgio.

Knihovnu Azure CDN pro .NET můžete použít k automatizaci vytváření a správy profilů a koncových bodů CDN. Tento kurz vás provede vytvořením jednoduché konzolové aplikace .NET, která ukazuje několik dostupných operací. Tento kurz není určený k podrobnému popisu všech aspektů knihovny Azure CDN pro .NET.

K dokončení tohoto kurzu potřebujete Visual Studio 2015. Visual Studio Community 2015 je volně dostupné ke stažení.

Tip

Dokončený projekt z tohoto kurzu je k dispozici ke stažení na webu MSDN.

Požadavky

Než začnete psát kód pro správu CDN, musíte udělat určitou přípravu, abyste umožnili kódu interakci s Azure Resource Managerem. Pokud chcete tuto přípravu provést, musíte:

  • Vytvořte skupinu prostředků, která bude obsahovat profil CDN vytvořený v tomto kurzu.
  • Nakonfigurujte ID Microsoft Entra tak, aby poskytovalo ověřování pro aplikaci.
  • Aplikujte oprávnění na skupinu prostředků, aby s profilem CDN mohli interagovat jenom autorizovaní uživatelé z vašeho tenanta Microsoft Entra.

Vytvoření skupiny prostředků

  1. Přihlaste se do Azure Portalu.

  2. Vyberte Vytvořit prostředek.

  3. Vyhledejte skupinu prostředků a v podokně Skupina prostředků vyberte Vytvořit.

    Vytvoření nové skupiny prostředků

  4. Pojmenujte skupinu prostředků CdnConsoleTutorial. Vyberte své předplatné a zvolte umístění blízko vás. Pokud chcete, můžete zaškrtnout políčko Připnout na řídicí panel a připnout skupinu prostředků na řídicí panel portálu. Připnutí usnadňuje pozdější vyhledání. Po provedení výběru vyberte Vytvořit.

    Snímek obrazovky s dialogovým oknem Skupina prostředků

  5. Po vytvoření skupiny prostředků ji můžete najít kliknutím na Procházet, pak Skupiny prostředků, pokud jste ji nepřipnuli na řídicí panel. Otevřete ji tak, že vyberete skupinu prostředků. Poznamenejte si ID předplatného. Potřebujeme to později.

    Snímek obrazovky části tutoriálu konzole C D N.

Vytvoření aplikace Microsoft Entra a použití oprávnění

Existují dva přístupy k ověřování aplikací pomocí Microsoft Entra ID: jednotliví uživatelé nebo služební účet. Hlavní objekt služby je podobný účtu služby ve Windows. Místo udělení oprávnění konkrétnímu uživateli pro interakci s profily CDN jsou oprávnění udělena objektu služby. Instanční objekty se obvykle používají pro automatizované neinteraktivní procesy. V tomto kurzu píšeme interaktivní konzolovou aplikaci, ale zaměřujeme se na přístup služebního uživatele.

Vytvoření objektu služby se skládá z několika kroků, včetně vytvoření aplikace v systému Microsoft Entra. Abychom ho vytvořili, budeme postupovat podle tohoto kurzu.

Důležité

Nezapomeňte postupovat podle všech kroků v propojeném kurzu. Je důležité , abyste ho dokončili přesně podle popisu. Nezapomeňte si poznamenat ID tenanta, název domény tenanta (obvykle doménu .onmicrosoft.com , pokud nezadáte vlastní doménu), ID klienta a ověřovací klíč klienta, protože tyto informace potřebujeme později. Dávejte pozor na zabezpečení ID klienta a ověřovacího klíče klienta, protože tyto přihlašovací údaje může kdokoli použít k provádění operací jako principál služby.

Až se dostanete ke kroku Konfigurovat aplikaci s více tenanty, vyberte Ne.

Když se dostanete ke kroku Přiřadit aplikaci k roli, použijte skupinu prostředků vytvořenou dříve, CdnConsoleTutorial, ale místo role Čtenář přiřaďte roli Přispěvatel profilu CDN. Po přiřazení aplikaci role Přispěvatel profilu CDN ve vaší skupině prostředků se vraťte k tomuto návodu.

Po vytvoření instančního objektu a přiřazení role Přispěvatel profilu CDN by okno Uživatelé pro vaši skupinu prostředků mělo vypadat podobně jako na následujícím obrázku.

Okno Uživatelé

Interaktivní ověřování uživatelů

Pokud byste namísto hlavní služby raději dali přednost interaktivnímu ověřování jednotlivých uživatelů, proces je podobný jako u hlavní služby. Ve skutečnosti musíte postupovat stejným postupem, ale provést několik menších změn.

Důležité

Pokud se rozhodnete místo principála služby použít ověřování jednotlivých uživatelů, řiďte se těmito kroky.

  1. Při vytváření aplikace místo webové aplikace zvolte Nativní aplikace.

    Nativní aplikace

  2. Na další stránce budete vyzváni k zadání adresy URI přesměrování. Identifikátor URI se neověří, ale zapamatujte si, co jste zadali. Budete ho potřebovat později.

  3. Není nutné vytvářet ověřovací klíč klienta.

  4. Místo přiřazení služebního principála k roli Přispěvatel profilu CDN přiřadíme jednotlivé uživatele nebo skupiny. Tento příklad přiřadí ukázkového uživatele CDN k roli Přispěvatel profilu CDN .

    Přístup jednotlivých uživatelů

Vytvoření projektu a přidání balíčků NuGet

Teď, když jsme vytvořili skupinu prostředků pro naše profily CDN a udělili aplikaci Microsoft Entra oprávnění ke správě profilů a koncových bodů CDN v této skupině, můžeme začít vytvářet naši aplikaci.

Důležité

Balíček NuGet Microsoft.IdentityModel.Clients.ActiveDirectory a Knihovna Azure AD Authentication Library (ADAL) jsou zastaralé a již nejsou podporovány. Od 30. června 2020 nebyly přidány žádné nové funkce. Důrazně doporučujeme upgradovat. Další informace najdete v průvodci migrací.

V sadě Visual Studio 2015 vyberte Soubor, Nový, Projekt... a otevřete tak dialogové okno nový projekt. Rozbalte Visual C# a pak v podokně vlevo vyberte Windows . V prostředním podokně vyberte Konzolová aplikace . Pojmenujte projekt a pak vyberte OK.

Nový projekt

Náš projekt bude používat některé knihovny Azure obsažené v balíčcích NuGet. Pojďme tyto knihovny přidat do projektu.

  1. Vyberte nabídku Nástroje, Správce balíčků NuGet a pak Konzola správce balíčků.

    Správa balíčků NuGet

  2. V konzole Správce balíčků spusťte následující příkaz, který nainstaluje knihovnu Active Directory Authentication Library (ADAL):

    Install-Package Microsoft.Identity.Client

  3. Spuštěním následujícího příkazu nainstalujte knihovnu pro správu Azure CDN:

    Install-Package Microsoft.Azure.Management.Cdn

Direktivy, konstanty, hlavní metody a pomocné metody

Pojďme napsat základní strukturu našeho programu.

  1. Vraťte se do karty Program.cs a nahraďte direktivy using v horní části tímto příkazem:

    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. Potřebujeme definovat některé konstanty, které naše metody používají. Program Do třídy, ale před metodu Main přidejte následující bloky kódu. Podle potřeby nahraďte zástupné symboly, včetně <úhlových závorek>, vlastními hodnotami.

    //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. Na úrovni třídy také definujte tyto dvě proměnné. Tyto proměnné použijeme později k určení, jestli už náš profil a koncový bod existují.

    static bool profileAlreadyExists = false;
    static bool endpointAlreadyExists = false;
    
  4. Nahraďte metodu Main následujícím způsobem:

    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ěkteré z našich dalších metod zobrazí uživateli výzvu s dotazem "Ano/Ne". Přidejte následující metodu, která vám usnadní práci:

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

Teď, když je napsána základní struktura našeho programu, bychom měli vytvořit metody volané metodou Main .

Ověřování

Než budeme moct použít knihovnu pro správu Azure CDN, musíme autentizovat služebního principála a získat autentizační token. Tato metoda používá k načtení tokenu knihovnu Active Directory Authentication Library.

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

Pokud používáte ověřování jednotlivých uživatelů, metoda GetAccessToken vypadá trochu jinak.

Důležité

Ukázku kódu použijte pouze v případě, že se rozhodnete mít ověřování jednotlivých uživatelů namísto principála služby.

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

Nezapomeňte nahradit <redirect URI> identifikátorem URI přesměrování, který jste zadali při registraci aplikace v Microsoft Entra ID.

Výpis profilů a koncových bodů CDN

Teď jsme připraveni provádět operace CDN. První věc, kterou naše metoda provede, je výpis všech profilů a koncových bodů v naší skupině prostředků. Pokud najde shodu pro názvy profilů a koncových bodů zadaných v našich konstantách, poznamená si je, abychom se automaticky nepokoušeli vytvářet duplicity.

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

Vytvoření profilů a koncových bodů CDN

V dalším kroku vytvoříme 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);
    }
}

Po vytvoření profilu vytvoříme koncový bod.

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

Poznámka:

Výše uvedený příklad přiřadí koncovému bodu původ s názvem Contoso a hostitelským jménem www.contoso.com. Měli byste to změnit tak, aby odkazovalo na název hostitele vaší vlastní původní sítě.

Vymazat koncový bod

Za předpokladu, že se koncový bod vytvořil, je jednou z běžných úloh, kterou můžeme v našem programu provést, vyprázdnění obsahu v našem koncovém bodu.

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

Poznámka:

V předchozím příkladu řetězec /* označuje, že chci vyprázdnit všechno v kořenovém adresáři cesty ke koncovému bodu. To je ekvivalent zaškrtnutí Vyprázdnit vše v dialogovém okně "vyprázdnění" na portálu Azure.

Odstranění profilů a koncových bodů CDN

Poslední metody odstraní náš koncový bod a profil.

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

Spuštění programu

Teď můžeme program zkompilovat a spustit kliknutím na tlačítko Start v sadě Visual Studio.

Program spuštěný

Jakmile program dosáhne výše uvedené výzvy, měli byste se vrátit ke skupině prostředků na webu Azure Portal a zjistit, že byl profil vytvořen.

Výborně!

Pak můžeme potvrdit výzvy ke spuštění zbytku programu.

Dokončení programu

Další kroky

Další dokumentaci ke knihovně pro správu Azure CDN pro .NET najdete v referenčních informacích na webu MSDN.

Správa prostředků CDN pomocí PowerShellu