.NET için Azure CDN Kitaplığı'nı kullanmaya başlama

CDN profillerinin ve uç noktalarının oluşturulmasını ve yönetimini otomatikleştirmek için .NET için Azure CDN Kitaplığı'nı kullanabilirsiniz. Bu öğreticide, kullanılabilir işlemlerden birkaçını gösteren basit bir .NET konsol uygulaması oluşturma adımları gösterilmektedir. Bu öğretici, .NET için Azure CDN Kitaplığı'nın tüm yönlerini ayrıntılı olarak açıklamaya yönelik değildir.

Bu öğreticiyi tamamlamak için Visual Studio 2015 gerekir. Visual Studio Community 2015 ücretsiz olarak indirilebilir.

İpucu

Bu öğreticide tamamlanan proje MSDN'de indirilebilir.

Önkoşullar

CDN yönetim kodu yazmadan önce, kodun Azure Resource Manager ile etkileşim kurmasını sağlamak için bazı hazırlıklar yapmanız gerekir. Bu hazırlığı yapmak için şunları yapmanız gerekir:

  • Bu öğreticide oluşturulan CDN profilini içerecek bir kaynak grubu oluşturun
  • Microsoft Entra Id'yi uygulama için kimlik doğrulaması sağlayacak şekilde yapılandırma
  • Yalnızca Microsoft Entra kiracınızdaki yetkili kullanıcıların CDN profiliyle etkileşim kurabilmesi için kaynak grubuna izinler uygulayın

Kaynak grubunu oluşturma

  1. Azure Portal’da oturum açın.

  2. Kaynak oluştur’a tıklayın.

  3. Kaynak grubu için arama yapın ve Kaynak grubu bölmesinde Oluştur'a tıklayın.

    Yeni kaynak grubu oluşturma

  4. Kaynak grubunuz için CdnConsoleTutorial adını verin. Aboneliğinizi seçin ve size yakın bir konum seçin. İsterseniz kaynak grubunu portaldaki panoya sabitlemek için Panoya sabitle onay kutusuna tıklayabilirsiniz. Sabitleme, daha sonra bulmayı kolaylaştırır. Seçimlerinizi yaptıktan sonra Oluştur'a tıklayın.

    Kaynak grubu iletişim kutusunun ekran görüntüsü.

  5. Kaynak grubu oluşturulduktan sonra panonuza sabitlemediyseniz Gözat'a ve ardından Kaynak Grupları'na tıklayarak bu grubu bulabilirsiniz. Açmak için kaynak grubuna tıklayın. Abonelik Kimliğinizi not edin. Daha sonra lazım olacak.

    C D N Konsol Öğreticisi bölümünün ekran görüntüsü.

Microsoft Entra uygulamasını oluşturma ve izinleri uygulama

Microsoft Entra ID ile uygulama kimlik doğrulamasına yönelik iki yaklaşım vardır: Bireysel kullanıcılar veya hizmet sorumlusu. Hizmet sorumlusu, Windows'taki bir hizmet hesabına benzer. CdN profilleriyle etkileşime geçmek için belirli bir kullanıcıya izin vermek yerine, hizmet sorumlusuna izinler verilir. Hizmet sorumluları genellikle otomatik, etkileşimli olmayan işlemler için kullanılır. Bu öğretici etkileşimli bir konsol uygulaması yazıyor olsa da hizmet sorumlusu yaklaşımına odaklanacağız.

Hizmet sorumlusu oluşturmak, Microsoft Entra uygulaması oluşturma da dahil olmak üzere çeşitli adımlardan oluşur. Oluşturmak için bu öğreticiyi izleyeceğiz.

Önemli

Bağlantılı öğreticideki tüm adımları izlediğinden emin olun. Tam olarak açıklandığı gibi tamamlamanız önemlidir. Bu bilgilere daha sonra ihtiyacımız olduğu için kiracı kimliğinizi, kiracı etki alanı adınızı (özel bir etki alanı belirtmediğiniz sürece genellikle .onmicrosoft.com etki alanı), istemci kimliğinizi ve istemci kimlik doğrulama anahtarınızı not edin. Bu kimlik bilgileri herkes tarafından hizmet sorumlusu olarak işlemleri yürütmek için kullanılabildiği için istemci kimliğinizi ve istemci kimlik doğrulama anahtarınızı korumaya dikkat edin.

Çok kiracılı uygulamayı yapılandır adlı adıma gittiğiniz zaman Hayır'ı seçin.

Uygulamayı bir role atama adımına gittiğiniz zaman, daha önce oluşturulan CdnConsoleTutorial kaynak grubunu kullanın, ancak Okuyucu rolü yerine CDN Profili Katkıda Bulunanı rolünü atayın. Uygulamaya kaynak grubunuz üzerinde CDN Profili Katkıda Bulunanı rolünü atadıktan sonra bu öğreticiye dönün.

Hizmet sorumlunuzu oluşturduktan ve CDN Profili Katkıda Bulunanı rolünü atadıktan sonra kaynak grubunuzun Kullanıcılar dikey penceresi aşağıdaki görüntüye benzer olmalıdır.

Kullanıcılar dikey penceresi

Etkileşimli kullanıcı kimlik doğrulaması

Bir hizmet sorumlusu yerine etkileşimli bireysel kullanıcı kimlik doğrulamasına sahip olmayı tercih ediyorsanız, işlem hizmet sorumlusu için de buna benzer. Aslında, aynı yordamı izlemeniz, ancak birkaç küçük değişiklik yapmanız gerekir.

Önemli

Bu sonraki adımları yalnızca hizmet sorumlusu yerine tek tek kullanıcı kimlik doğrulaması kullanmayı tercih ediyorsanız uygulayın.

  1. Uygulamanızı oluştururken Web Uygulaması yerine Yerel uygulama'yı seçin.

    Yerel uygulama

  2. Sonraki sayfada yeniden yönlendirme URI'sini girmeniz istenir. URI doğrulanmaz, ancak ne girdiğinizi unutmayın. Daha sonra lazım olacak.

  3. İstemci kimlik doğrulama anahtarı oluşturmanıza gerek yoktur.

  4. CDN Profili Katkıda Bulunanı rolüne hizmet sorumlusu atamak yerine tek tek kullanıcılar veya gruplar atayacağız. Bu örnekte, CDN Profili Katkıda Bulunanı rolüne CDN Tanıtım Kullanıcısı atadığım görebilirsiniz.

    Bireysel kullanıcı erişimi

Projenizi oluşturma ve NuGet paketleri ekleme

CDN profillerimiz için bir kaynak grubu oluşturduğumuza ve Microsoft Entra uygulamamıza bu grup içindeki CDN profillerini ve uç noktalarını yönetme iznini verdiğinize göre, uygulamamızı oluşturmaya başlayabiliriz.

Önemli

Microsoft.IdentityModel.Clients.ActiveDirectory NuGet paketi ve Azure AD Kimlik Doğrulama Kitaplığı (ADAL) kullanım dışı bırakıldı. 30 Haziran 2020'den bu yana yeni özellik eklenmedi. Yükseltmenizi kesinlikle öneririz. Daha fazla bilgi için geçiş kılavuzuna bakın.

Visual Studio 2015'in içinden Dosya, Yeni, Proje... öğesini seçerek yeni proje iletişim kutusunu açın. Visual C# öğesini genişletin ve soldaki bölmede Windows'ı seçin. Orta bölmede Konsol Uygulaması'nı seçin. Projenizi adlandırarak Tamam'ı seçin.

Yeni Proje

Projemiz NuGet paketlerinde bulunan bazı Azure kitaplıklarını kullanacak. Şimdi bu kitaplıkları projeye ekleyelim.

  1. Araçlar menüsü, Nuget Paket Yöneticisi ve ardından Konsol'Paket Yöneticisi seçin.

    Nuget Paketlerini Yönetme

  2. Paket Yöneticisi Konsolu'nda aşağıdaki komutu yürüterek Active Directory Kimlik Doğrulama Kitaplığı'nı (ADAL) yükleyin:

    Install-Package Microsoft.Identity.Client

  3. Azure CDN Yönetim Kitaplığı'nı yüklemek için aşağıdakileri yürütür:

    Install-Package Microsoft.Azure.Management.Cdn

Yönergeler, sabitler, ana yöntem ve yardımcı yöntemler

Programımızın temel yapısını yazalım.

  1. Program.cs sekmesine geri dönün, üstteki yönergeleri aşağıdaki komutla değiştirin using :

    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. Yöntemlerimizin kullandığı bazı sabitleri tanımlamamız gerekir. sınıfına Program , ancak yönteminden Main önce aşağıdaki kod bloklarını ekleyin. Köşeli ayraçlar da dahil olmak üzere <yer tutucuları> gerektiği gibi kendi değerlerinizle değiştirmeyi unutmayın.

    //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. Ayrıca sınıf düzeyinde bu iki değişkeni tanımlayın. Bu değişkenleri daha sonra profilimizin ve uç noktamızın zaten var olup olmadığını belirlemek için kullanırız.

    static bool profileAlreadyExists = false;
    static bool endpointAlreadyExists = false;
    
  4. Main yöntemini aşağıdaki gibi değiştirin:

    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. Diğer yöntemlerimizden bazıları kullanıcıya "Evet/Hayır" soruları sorar. Bunu biraz kolaylaştırmak için aşağıdaki yöntemi ekleyin:

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

Artık programımızın temel yapısı yazılmıştır, yöntemi tarafından Main çağrılan yöntemleri oluşturmalıyız.

Kimlik Doğrulaması

Azure CDN Yönetim Kitaplığı'nı kullanabilmemiz için önce hizmet sorumlumuzun kimliğini doğrulamamız ve bir kimlik doğrulama belirteci edinmemiz gerekir. Bu yöntem, belirteci almak için Active Directory Kimlik Doğrulama Kitaplığı'nı kullanır.

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

Tek tek kullanıcı kimlik doğrulaması kullanıyorsanız yöntem GetAccessToken biraz farklı görünür.

Önemli

Bu kod örneğini yalnızca hizmet sorumlusu yerine tek tek kullanıcı kimlik doğrulamasına sahip olmak istiyorsanız kullanın.

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

yerine uygulamayı Microsoft Entra Kimliği'ne kaydettiğinizde girdiğiniz yeniden yönlendirme URI'siyle değiştirmeyi <redirect URI> unutmayın.

CDN profillerini ve uç noktalarını listeleme

Artık CDN işlemleri gerçekleştirmeye hazırız. Yöntemimizin ilk yaptığı şey, kaynak grubumuzdaki tüm profilleri ve uç noktaları listelemektir ve sabitlerimizde belirtilen profil ve uç nokta adları için bir eşleşme bulursa, yinelenenleri oluşturmayı denememek için daha sonra için bir not alır.

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 profilleri ve uç noktaları oluşturma

Ardından bir profil oluşturacağız.

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

Profil oluşturulduktan sonra bir uç nokta oluştururuz.

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

Not

Yukarıdaki örnekte uç noktaya contoso adlı bir kaynak ve bir konak adı www.contoso.comatanır. Bunu kendi kaynağınızın ana bilgisayar adına işaret eden şekilde değiştirmeniz gerekir.

Uç noktayı temizleme

Uç noktanın oluşturulduğunu varsayarsak, programımızda gerçekleştirmek isteyebileceğimiz yaygın görevlerden biri, uç noktamızdaki içeriği temizlemektir.

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

Not

Önceki örnekte dize /* , uç nokta yolunun kökündeki her şeyi temizlemek istediğimi belirtir. Bu, Azure portalının "temizleme" iletişim kutusunda Tümünü Temizle'yi denetlemeye eşdeğerdir. yöntemindeCreateCdnProfile, kodunu Sku = new Sku(SkuName.StandardVerizon)kullanarak profilimizi Edgio profilinden Azure CDN olarak oluşturdum, bu nedenle bu başarılı olacaktır.

CDN profillerini ve uç noktalarını silme

Son yöntemler uç noktamızı ve profilimizi siler.

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

Programı çalıştırma

Artık Visual Studio'da Başlat düğmesine tıklayarak programı derleyebilir ve çalıştırabiliriz.

Program çalışıyor

Program yukarıdaki istemine ulaştığında, Azure portalında kaynak grubunuzla geri dönebilmeniz ve profilin oluşturulduğunu görebilmeniz gerekir.

Başarılı!

Ardından programın geri kalanını çalıştırmak için istemleri onaylayabiliriz.

Program tamamlanıyor

Sonraki Adımlar

Bu kılavuzda tamamlanan projeyi görmek için örneği indirin.

.NET için Azure CDN Yönetim Kitaplığı'nda daha fazla belge bulmak için MSDN'de başvuruyu görüntüleyin.

CDN kaynaklarınızı PowerShell ile yönetin.