Tutorial: Memberikan akses aplikasi Azure Function ke akun Azure Media Services
Peringatan
Azure Media Services akan dihentikan pada 30 Juni 2024. Untuk informasi selengkapnya, lihat Panduan Penghentian AMS.
Misalkan Anda ingin mengizinkan pengunjung ke situs web atau aplikasi Anda agar mengetahui bahwa Anda "On Air" di studio siaran Anda. Anda dapat menentukan kapan Acara Langsung Media Services berjalan menggunakan API Media Services tetapi ini mungkin sulit untuk dipanggil dari perangkat yang disematkan. Sebagai gantinya, Anda dapat mengekspos API HTTP untuk perangkat yang disematkan menggunakan Azure Functions. Azure Functions kemudian dapat memanggil Media Services untuk mendapatkan status Acara Langsung.
Tutorial ini menggunakan API Media Services 2020-05-01.
Masuk ke Azure
Untuk menggunakan salah satu perintah dalam artikel ini, pertama-tama Anda harus masuk ke langganan yang ingin Anda gunakan.
Masuk ke Azure. Saat Anda menggunakan perintah ini, Anda akan diminta untuk berlangganan yang ingin Anda gunakan.
az login
Atur langganan
Jalankan perintah berikut untuk memilih langganan yang ingin Anda kerjakan.
Mengatur langganan Azure dengan CLI
Dalam perintah berikut ini, berikan ID langganan Azure yang ingin Anda gunakan untuk akun Media Services.
az account set --subscription <subscriptionName>
Prasyarat
Penting
Anda sangat dianjurkan untuk bekerja melalui Mulai cepat membuat fungsi C# di Azure dari baris perintah sebelum mencoba tutorial ini. Itu dikarenakan langkah-langkah penyiapan yang termasuk di dalamnya merupakan langkah yang sama dengan yang diperlukan di sini. Ini juga akan memberi Anda kesempatan untuk bekerja dengan contoh sederhana yang menjadi dasar tutorial ini.
Nama sumber daya
Sebelum memulai, tentukan nama sumber daya yang akan Anda buat. Nama ini harus mudah diidentifikasi sebagai satu set, terutama jika Anda tidak berencana untuk menggunakannya setelah Anda selesai menguji. Aturan penamaan berbeda untuk berbagai jenis sumber daya sehingga yang terbaik adalah tetap menggunakan huruf kecil semua. Misalnya, "mediatest1rg" untuk nama grup sumber daya Anda dan "mediatest1stor" untuk nama akun penyimpanan Anda. Gunakan nama yang sama untuk setiap langkah dalam artikel ini.
Anda akan melihat nama-nama ini direferensikan dalam perintah di bawah ini. Nama sumber daya yang Anda perlukan adalah:
- myRG
- myStorageAccount
- myAmsAccount
- lokasi
- myFunction: use "OnAir"
- myLiveEvent: use "live1"
- ipaddresses use: "0.0.0./32"
Catatan
Tanda hubung di atas hanya digunakan untuk memisahkan kata-kata penjelas. Karena ketidakkonsistenan penamaan sumber daya di layanan Azure, jangan gunakan tanda hubung saat Anda memberi nama sumber daya Anda.
Apa pun yang diwakili oleh 00000000-0000-0000-0000000000 adalah pengidentifikasi unik sumber daya. Nilai ini biasanya dikembalikan oleh respons JSON. Anda juga disarankan untuk menyalin dan menempelkan respons JSON di Notepad atau editor teks lainnya, karena respons tersebut akan berisi nilai yang Anda perlukan untuk perintah CLI nanti.
Selain itu, Anda tidak membuat nama wilayah. Nama wilayah ditentukan oleh Azure.
Daftar wilayah Azure
Jika Anda tidak yakin nama kawasan aktual untuk digunakan, gunakan perintah ini untuk mendapatkan daftar:
Gunakan perintah ini untuk mencantumkan wilayah yang tersedia untuk akun Anda.
az account list-locations --query "[].{DisplayName:displayName, Name:name}" -o table
Urutan
Setiap langkah di bawah ini dilakukan dalam urutan tertentu karena satu atau beberapa nilai dari respons JSON digunakan dalam langkah berikutnya dalam urutan.
Membuat akun Penyimpanan
Akun Media Services yang akan Anda buat harus memiliki akun penyimpanan yang terkait dengannya. Buat akun penyimpanan untuk akun Media Services terlebih dahulu. Anda akan menggunakan your-storage-account-name
untuk langkah berikutnya.
Membuat akun Azure Storage dengan CLI
Gunakan perintah berikut untuk membuat akun Azure Storage.
Untuk membuat akun penyimpanan, Anda harus terlebih dahulu membuat grup sumber daya dalam suatu lokasi.
Untuk mencantumkan lokasi yang tersedia, gunakan perintah berikut:
Mencantumkan lokasi yang tersedia dengan CLI
Untuk mencantumkan lokasi yang tersedia, gunakan perintah berikut:
az account list-locations
Membuat grup sumber daya dengan CLI
Untuk membuat grup sumber daya, gunakan perintah berikut:
az group create -n <resourceGroupName> --location chooseLocation
Pilih SKU
Anda juga perlu memilih SKU untuk akun penyimpanan. Anda dapat mencantumkan akun penyimpanan.
Pilih SKU dari daftar berikut: Standard_LRS, Standard_GRS, Standard_RAGRS, Standard_ZRS, Premium_LRS, Premium_ZRS, Standard_GZRS, Standard_RAGZRS.
- Ubah
myStorageAccount
menjadi nama unik dengan panjang kurang dari 24 karakter. - Ubah
chooseLocation
menjadi wilayah tempat Anda ingin bekerja. - Ubah
chooseSKU
ke SKU pilihan Anda.
az storage account create -n <myStorageAccount> -g <resourceGroup> --location <chooseLocation> --sku <chooseSKU>
Membuat Akun Azure Media Services
Sekarang buat akun Media Services. Carilah `
Untuk informasi selengkapnya tentang perintah ini, lihat referensi CLI Azure Media Services.
Menyiapkan Azure Function
Di bagian ini, Anda akan menyiapkan Azure Function Anda.
Mendapatkan kode
Gunakan Azure Functions untuk membuat proyek fungsi Anda dan mengambil kode dari templat HTTP.
func init MediaServicesLiveMonitor –dotnet
Mengubah direktori
Pastikan Anda mengubah direktori kerja anda ke direktori proyek. Jika tidak, Anda akan mengalami kesalahan.
cd .\MediaServicesLiveMonitor\
Memberi nama fungsi Anda
func new --name OnAir --template "HTTP trigger" --authlevel "anonymous"
Mengonfigurasi proyek fungsi
Instal Azure Media Services dan ekstensi lainnya
Jalankan perintah paket penambahan dotnet di jendela Terminal untuk memasang paket ekstensi yang Anda butuhkan dalam proyek Anda. Perintah berikut menginstal paket Azure Media Services dan Identitas Azure.
dotnet add package Microsoft.Azure.Management.Media
dotnet add package Azure.Identity
Mengedit kode OnAir.cs
Ubah file OnAir.cs
. Ubah variabel subscriptionId
, resourceGroup
, dan mediaServicesAccountName
ke variabel Anda putuskan sebelumnya.
using Azure.Core;
using Azure.Identity;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.Management.Media;
using Microsoft.Azure.Management.Media.Models;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Extensions.Logging;
using Microsoft.Rest;
using System.Threading.Tasks;
namespace MediaServicesLiveMonitor
{
public static class OnAir
{
[FunctionName("OnAir")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string name = req.Query["name"];
if (string.IsNullOrWhiteSpace(name))
{
return new BadRequestObjectResult("Missing 'name' URL parameter");
}
var credential = new ManagedIdentityCredential();
var accessTokenRequest = await credential.GetTokenAsync(
new TokenRequestContext(
scopes: new string[] { "https://management.core.windows.net" + "/.default" }
)
);
ServiceClientCredentials credentials = new TokenCredentials(accessTokenRequest.Token, "Bearer");
var subscriptionId = "00000000-0000-0000-000000000000"; // Update
var resourceGroup = "<your-resource-group-name>"; // Update
var mediaServicesAccountName = "<your-media-services-account-name>"; // Update
var mediaServices = new AzureMediaServicesClient(credentials)
{
SubscriptionId = subscriptionId
};
var liveEvent = await mediaServices.LiveEvents.GetAsync(resourceGroup, mediaServicesAccountName, name);
if (liveEvent == null)
{
return new NotFoundResult();
}
return new OkObjectResult(liveEvent.ResourceState == LiveEventResourceState.Running ? "On air" : "Off air");
}
}
}
Membuat Aplikasi Fungsi
Buat Aplikasi Fungsi untuk menghosting fungsi. Namanya sama dengan yang telah Anda unduh sebelumnya, MediaServicesLiveMonitorApp
.
az functionapp create --resource-group <your-resource-group-name> --consumption-plan-location your-region --runtime dotnet --functions-version 3 --name MediaServicesLiveMonitorApp --storage-account mediatest3store --assign-identity "[system]"
Carilah principalId
dalam respons JSON:
{
...
"identity": {
//Note the principalId value for the following step
"principalId": "00000000-0000-0000-000000000000",
"tenantId": "00000000-0000-0000-000000000000",
"type": "SystemAssigned",
"userAssignedIdentities": null
}
...
Memberikan akses aplikasi fungsi ke sumber daya akun Media Services
Untuk permintaan ini:
assignee
adalahprincipalId
yang ada dalam respons JSON dariaz functionapp create
scope
adalahid
yang ada dalam respons JSON dariaz ams account create
. Lihat contoh respons JSON di atas.
az role assignment create --assignee 00000000-0000-0000-000000000000 --role "Media Services Account Administrator" --scope "/subscriptions/<the-subscription-id>/resourceGroups/<your-resource-group>/providers/Microsoft.Media/mediaservices/<your-media-services-account-name>"
Menerbitkan fungsi
func azure functionapp publish MediaServicesLiveMonitorApp
Validasi
Dalam browser, buka URL fungsi, misalnya:
https://mediaserviceslivemonitorapp.azurewebsites.net/api/onair?name=live1
Ini harus mengembalikan kesalahan 404 (Tidak Ditemukan) karena Acara Langsung belum ada.
Membuat Acara Langsung
az ams live-event create --resource-group test3 --account-name mediatest3 --name live1 --streaming-protocol RTMP
Dalam browser, buka URL fungsi, misalnya:
https://mediaserviceslivemonitorapp.azurewebsites.net/api/onair?name=live1
Ini sekarang harus menunjukkan "Off Air".
Memulai acara langsung
Jika Anda memulai Acara Langsung, fungsi harus menampilkan "On Air".
az ams live-event start live1
Fungsi ini memungkinkan akses ke siapa pun. Mengamankan akses ke Azure Function dan kabel lampu "On Air" berada di luar cakupan untuk dokumen ini.
Membersihkan sumber daya
Jika Anda tidak berencana menggunakan sumber daya yang Anda buat, hapus grup sumber daya.
Menghapus grup sumber daya dengan CLI
az group delete --name <your-resource-group-name>
Dapatkan bantuan dan dukungan
Anda dapat menghubungi Media Services dengan pertanyaan atau mengikuti pembaruan kami dengan salah satu metode berikut:
- T & A
- Stack Overflow. Beri tag pertanyaan dengan
azure-media-services
. - @MSFTAzureMedia atau gunakan @AzureSupport untuk meminta dukungan.
- Buka tiket dukungan melalui portal Azure.