MemulaiMulai menggunakan Pustaka Microsoft Azure Content Delivery Network untuk .NET

Anda dapat menggunakan Pustaka Microsoft Azure Content Delivery Network untuk .NET untuk mengotomatiskan pembuatan dan pengelolaan profil dan titik akhir Microsoft Azure Content Delivery Network. Tutorial ini berjalan melalui pembuatan aplikasi konsol .NET sederhana yang menunjukkan beberapa operasi yang tersedia. Tutorial ini tidak dimaksudkan untuk menjelaskan semua aspek Pustaka Azure CDN untuk .NET secara rinci.

Anda memerlukan Visual Studio 2015 untuk menyelesaikan tutorial ini. Komunitas Visual Studio 2015 tersedia secara gratis untuk diunduh.

Tip

Proyek yang selesai dari tutorial ini tersedia untuk diunduh di MSDN.

Prasyarat

Sebelum menulis kode manajemen CDN, Anda harus melakukan beberapa persiapan agar kode dapat berinteraksi dengan Azure Resource Manager. Untuk menyelesaikan persiapan ini, Anda perlu:

  • Membuat grup sumber daya untuk memuat profil CDN yang dibuat dalam tutorial ini
  • Mengonfigurasi ID Microsoft Entra untuk menyediakan autentikasi untuk aplikasi
  • Terapkan izin ke grup sumber daya sehingga hanya pengguna yang berwenang dari penyewa Microsoft Entra Anda yang dapat berinteraksi dengan profil CDN

Membuat grup sumber daya

  1. Masuk ke Portal Azure.

  2. Klik Buat sumber daya.

  3. Cari Grup sumber daya,lalu klik Buat di panel Grup sumber daya.

    Membuat grup sumber daya baru

  4. Beri nama grup sumber daya Anda CdnConsoleTutorial. Pilih langganan Anda, lalu pilih lokasi di dekat Anda. Jika mau, Anda dapat mengklik kotak centang Sematkan ke dasbor untuk menyematkan grup sumber daya ke dasbor di portal. Penyematan akan membuat grup sumber daya lebih mudah ditemukan nanti. Setelah membuat pilihan, klik Buat.

    Cuplikan layar kotak dialog Grup sumber daya.

  5. Setelah grup sumber daya dibuat, jika tidak menyematkannya ke dasbor, Anda dapat menemukannya dengan mengklik Telusuri, lalu Grup Sumber Daya. Untuk membukanya, klik grup sumber daya. Catat ID Langganan Anda. Kita membutuhkannya nanti.

    Cuplikan layar bagian Tutorial Konsol C D N.

Membuat aplikasi Microsoft Entra dan menerapkan izin

Ada dua pendekatan untuk autentikasi aplikasi dengan ID Microsoft Entra: Pengguna individual atau perwakilan layanan. Perwakilan layanan mirip dengan akun layanan di Windows. Alih-alih memberikan izin kepada pengguna tertentu agar dapat berinteraksi dengan profil CDN, izin malah diberikan kepada perwakilan layanan. Perwakilan layanan biasanya digunakan untuk proses non-interaktif otomatis. Meskipun tutorial ini menulis aplikasi konsol interaktif, kami akan fokus pada pendekatan perwakilan layanan.

Membuat perwakilan layanan terdiri dari beberapa langkah, termasuk membuat aplikasi Microsoft Entra. Untuk membuatnya, kita akan mengikuti tutorial ini.

Penting

Pastikan untuk mengikuti semua langkah dalam tutorial yang ditautkan. Penting bagi Anda untuk menyelesaikannya persis seperti yang dijelaskan. Pastikan untuk mencatat ID penyewa, nama domain penyewa (biasanya domain .onmicrosoft.com, kecuali Anda telah menentukan domain kustom), ID klien, dan kunci autentikasi klien, karena kita akan memerlukan informasi ini nanti. Jaga ID klien dan kunci autentikasi klien Anda dengan hati-hati, karena informasi masuk tersebut dapat digunakan oleh siapa saja untuk menjalankan operasi sebagai perwakilan layanan.

Saat Anda masuk ke langkah bernama Konfigurasikan aplikasi multi-penyewa, pilih Tidak.

Saat Anda masuk ke langkah Menetapkan aplikasi ke peran, gunakan grup sumber daya yang dibuat sebelumnya, CdnConsoleTutorial, tetapi alih-alih peran Pembaca, tetapkan Peran Kontributor Profil CDN. Setelah Anda menetapkan peran Kontributor Profil CDN pada aplikasi di grup sumber daya, kembali ke tutorial ini.

Setelah Anda membuat perwakilan layanan dan menetapkan peran Kontributor Profil CDN, bilah Pengguna untuk grup sumber daya Anda akan terlihat seperti gambar berikut.

Bilah pengguna

Autentikasi pengguna interaktif

Jika Anda lebih memilih autentikasi pengguna individu interaktif daripada perwakilan layanan, prosesnya mirip dengan perwakilan layanan. Bahkan, Anda harus mengikuti prosedur yang sama, tetapi dengan beberapa perubahan kecil.

Penting

Hanya ikuti langkah berikut ini jika Anda memilih untuk menggunakan autentikasi pengguna individu alih-alih perwakilan layanan.

  1. Saat membuat aplikasi, alih-alih Aplikasi Web, pilih Aplikasi asli.

    Aplikasi asli

  2. Di laman berikutnya, Anda akan diminta untuk URI pengalihan. URI tidak akan divalidasi, tetapi ingat apa yang Anda masukkan. Anda akan membutuhkannya nanti.

  3. Tidak perlu membuat kunci autentikasi klien.

  4. Alih-alih menetapkan peran Kontributor Profil CDN untuk perwakilan layanan, kita akan menetapkan pengguna individu atau grup. Dalam contoh ini, Anda dapat melihat bahwa saya telah menetapkan Pengguna Demo CDN ke peran Kontributor Profil CDN.

    Akses pengguna individu

Buat proyek Anda dan tambahkan paket NuGet

Sekarang setelah kita membuat grup sumber daya untuk profil CDN kita dan diberikan izin aplikasi Microsoft Entra untuk mengelola profil CDN dan titik akhir dalam grup itu, kita dapat mulai membuat aplikasi kita.

Penting

Paket Microsoft.IdentityModel.Clients.ActiveDirectory NuGet dan Azure AD pustaka otentikasi (ADAL) telah ditolak. Tidak ada fitur baru yang ditambahkan sejak 30 Juni 2020. Kami sangat mendorong Anda untuk melakukan peningkatan. Untuk informasi selengkapnya, lihat panduan migrasi.

Dari dalam Visual Studio 2015, pilih File, Baru, Proyek... untuk membuka dialog proyek baru. Memperluas Visual C#, lalu pilih Windows di panel sebelah kiri. Pilih Aplikasi Konsol di panel tengah. Beri nama proyek Anda, lalu pilih OK.

Proyek Baru

Proyek kami akan menggunakan beberapa pustaka Azure yang terkandung dalam paket NuGet. Mari kita tambahkan pustaka tersebut ke proyek.

  1. Pilih menu Alat, Pengelola Paket Nuget, lalu Konsol Manajer Paket.

    Mengelola Paket Nuget

  2. Di dalam Konsol Pengelola Paket, jalankan perintah berikut untuk memasang Pustaka Autentikasi Active Directory (ADAL):

    Install-Package Microsoft.Identity.Client

  3. Jalankan yang berikut ini untuk memasang Pustaka Manajemen Microsoft Azure Content Delivery Network:

    Install-Package Microsoft.Azure.Management.Cdn

Direktif, konstanta, metode utama, dan metode pembantu

Mari kita tulis struktur dasar dari program kita.

  1. Kembali ke tab Program.cs, ganti arahan using di bagian atas dengan perintah berikut:

    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. Kita perlu mendefinisikan beberapa konstanta yang digunakan metode kita. Program Di kelas , tetapi sebelum Main metode , tambahkan blok kode berikut. Pastikan untuk mengganti tempat penampung, termasuk <kurung sudut>, dengan nilai Anda sendiri sesuai kebutuhan.

    //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. Juga di tingkat kelas, tentukan dua variabel ini. Kami menggunakan variabel ini nanti untuk menentukan apakah profil dan titik akhir kami sudah ada.

    static bool profileAlreadyExists = false;
    static bool endpointAlreadyExists = false;
    
  4. Ganti metode Main sebagai berikut:

    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. Beberapa metode kita yang lain akan memberikan pengguna pertanyaan "Ya/Tidak". Tambahkan metode berikut untuk membuatnya sedikit lebih mudah:

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

Sekarang struktur dasar program kita telah ditulis, kita harus membuat metode yang disebut dengan metode Main.

Autentikasi

Sebelum kita dapat menggunakan Pustaka Manajemen Microsoft Azure Content Delivery Network, kita perlu mengautentikasi perwakilan layanan kita dan mendapatkan token autentikasi. Metode ini menggunakan Pustaka Autentikasi Direktori Aktif untuk mengambil token.

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

Jika Anda menggunakan autentikasi pengguna individual, GetAccessToken metode ini terlihat sedikit berbeda.

Penting

Hanya menggunakan sampel kode ini jika Anda memilih untuk memiliki autentikasi pengguna individual alih-alih perwakilan layanan.

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

Pastikan untuk mengganti <redirect URI> dengan URI pengalihan yang Anda masukkan saat mendaftarkan aplikasi di ID Microsoft Entra.

Daftarkan profil dan titik akhir Microsoft Azure Content Delivery Network

Sekarang kita siap untuk melakukan operasi Microsoft Azure Content Delivery Network. Hal pertama yang dilakukan metode kami adalah mencantumkan semua profil dan titik akhir dalam grup sumber daya kami, dan jika menemukan kecocokan untuk nama profil dan titik akhir yang ditentukan dalam konstanta kami, buat catatan untuk nanti sehingga kami tidak mencoba membuat duplikat.

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

Membuat profil dan titik akhir CDN

Selanjutnya, kita membuat 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);
    }
}

Setelah profil dibuat, kita membuat titik akhir.

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

Catatan

Contoh di atas menetapkan titik akhir ke sebuah asal bernama Contoso dengan nama host www.contoso.com. Anda harus mengubah ini untuk menunjuk ke nama host asal Anda sendiri.

Menghapus menyeluruh titik akhir

Dengan asumsi titik akhir telah dibuat, satu tugas umum yang mungkin ingin kita lakukan dalam program kita adalah membersihkan konten di titik akhir kita.

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

Catatan

Dalam contoh sebelumnya, string /* menunjukkan bahwa saya ingin menghapus menyeluruh semuanya di akar jalur titik akhir. Hal ini setara dengan mencentang Hapus Semua dalam dialog "hapus menyeluruh" portal Microsoft Azure. Dalam metode ini CreateCdnProfile , saya membuat profil kami sebagai Azure CDN dari profil Edgio menggunakan kode Sku = new Sku(SkuName.StandardVerizon), sehingga ini akan berhasil.

Hapus profil dan titik akhir Microsoft Azure Content Delivery Network

Metode terakhir menghapus titik akhir dan profil kami.

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

Menjalankan program

Kita sekarang dapat membuat kompilasi dan menjalankan program dengan mengklik tombol Mulai di Visual Studio.

Program berjalan

Saat program mencapai permintaan di atas, Anda harus dapat kembali ke grup sumber daya Anda di portal Microsoft Azure dan melihat bahwa profil telah dibuat.

Berhasil!

Kita kemudian dapat mengonfirmasi permintaan untuk menjalankan sisa program.

Penyelesaian program

Langkah berikutnya

Untuk melihat proyek yang selesai dari penelusuran ini, unduh sampelnya.

Untuk menemukan dokumentasi lainnya di Pustaka Manajemen Azure CDN untuk .NET, lihat referensi di MSDN.

Mengelola sumber daya Microsoft Azure Content Delivery Network Anda dengan PowerShell.