Öğretici: Azure İşlevi uygulamasına Media Services hesabına erişim verme
Uyarı
Azure Media Services 30 Haziran 2024'de kullanımdan kaldırılacaktır. Daha fazla bilgi için bkz. AMS Kullanımdan Kaldırma Kılavuzu.
Web sitenizin veya uygulamanızın ziyaretçilerinin yayın stüdyonuzda "Yayında" olduğunuzu bilmelerini istediğinizi varsayalım. Media Services API'sini kullanarak Media Services Live Events'in ne zaman çalıştığını belirleyebilirsiniz, ancak ekli bir cihazdan bu çağrı yapmak zor olabilir. Bunun yerine, Azure İşlevleri kullanarak katıştırılmış cihazınız için bir HTTP API'sini kullanıma sunmanız gerekir. Azure İşlevleri canlı etkinliğin durumunu almak için Media Services'ı çağırabilir.
Bu öğreticide 2020-05-01 Media Services API'sini kullanır.
Azure'da oturum açma
Bu makaledeki komutlardan herhangi birini kullanmak için önce kullanmak istediğiniz abonelikte oturum açmanız gerekir.
Azure'da oturum açın. Bu komutu kullandığınızda, kullanmak istediğiniz abonelik istenir.
az login
Aboneliği ayarlama
Çalışmak istediğiniz aboneliği ayarlamak için bu komutu kullanın.
CLI ile Azure aboneliğini ayarlama
Aşağıdaki komutta, Media Services hesabı için kullanmak istediğiniz Azure abonelik kimliğini sağlayın.
az account set --subscription <subscriptionName>
Önkoşullar
Önemli
Bu öğreticiyi denemeden önce komut satırı hızlı başlangıcından Azure'da C# oluşturma işleviyle çalışmanız kesinlikle teşvik edilir. Bunun nedeni, kurulum adımlarının dahil olduğu adımların burada da gerekli olmasıdır. Ayrıca bu öğreticinin temel aldığı basit bir örnekle çalışma fırsatı da verir.
Kaynak adları
Başlamadan önce, oluşturacağınız kaynakların adlarına karar verin. Özellikle testleri tamamladıktan sonra kullanmayı planlamıyorsanız, küme olarak kolayca tanımlanabilir olmalıdır. Adlandırma kuralları birçok kaynak türü için farklıdır, bu nedenle en iyisi küçük harfle devam etmektir. Örneğin, kaynak grubu adınız için "mediatest1rg" ve depolama hesabı adınız için "mediatest1stor". Bu makaledeki her adım için aynı adları kullanın.
Aşağıdaki komutlarda bu adlara başvurulacak şekilde görürsünüz. İhtiyacınız olan kaynakların adları şunlardır:
- myRG
- myStorageAccount
- myAmsAccount
- location
- myFunction: "OnAir" kullanın
- myLiveEvent: "live1" kullanın
- ipaddresses use: "0.0.0./32"
Not
Yukarıdaki kısa çizgiler yalnızca kılavuz sözcükleri ayırmak için kullanılır. Azure hizmetlerindeki kaynakları adlandırma tutarsızlığı nedeniyle, kaynaklarınızı adlandırırken kısa çizgi kullanmayın.
000000000-0000-0000-000000000 ile temsil edilen her şey kaynağın benzersiz tanımlayıcısıdır. Bu değer genellikle bir JSON yanıtı tarafından döndürülür. JSON yanıtlarını Not Defteri'ne veya başka bir metin düzenleyicisine kopyalayıp yapıştırmalısınız, bu yanıtlar daha sonraki CLI komutları için ihtiyacınız olacak değerleri içerecektir.
Ayrıca, bölge adını oluşturmazsınız. Bölge adı Azure tarafından belirlenir.
Azure bölgelerini listeleme
Kullanılacak gerçek bölge adından emin değilseniz, bir liste almak için şu komutu kullanın:
Hesabınız için kullanılabilir bölgeleri listelemek için bu komutu kullanın.
az account list-locations --query "[].{DisplayName:displayName, Name:name}" -o table
Sequence
Aşağıdaki adımların her biri belirli bir sırada gerçekleştirilir çünkü JSON yanıtlarındaki bir veya daha fazla değer sıradaki bir sonraki adımda kullanılır.
Depolama hesabı oluşturma
Oluşturacağınız Media Services hesabının kendisiyle ilişkilendirilmiş bir depolama hesabı olmalıdır. Önce Media Services hesabı için depolama hesabını oluşturun. Sonraki adımlar için kullanacaksınız your-storage-account-name
.
CLI ile Azure Depolama hesabı oluşturma
Azure Depolama hesabı oluşturmak için aşağıdaki komutları kullanın.
Depolama hesabı oluşturmak için önce bir konumda bir kaynak grubu oluşturmanız gerekir.
Kullanılabilir konumları listelemek için aşağıdaki komutu kullanın:
CLI ile kullanılabilir konumları listeleme
Kullanılabilir konumları listelemek için aşağıdaki komutu kullanın:
az account list-locations
CLI ile kaynak grubu oluşturma
Kaynak grubu oluşturmak için aşağıdaki komutu kullanın:
az group create -n <resourceGroupName> --location chooseLocation
SKU seçme
Depolama hesabınız için bir SKU seçmeniz de gerekir. Depolama hesaplarını listeleyebilirsiniz.
Aşağıdaki listeden bir SKU seçin: Standard_LRS, Standard_GRS, Standard_RAGRS, Standard_ZRS, Premium_LRS, Premium_ZRS, Standard_GZRS Standard_RAGZRS.
- Uzunluğu 24 karakterden az olan benzersiz bir adla değiştirin
myStorageAccount
. - İçinde çalışmak istediğiniz bölgeye geçin
chooseLocation
. - Tercih ettiğiniz SKU'ya geçin
chooseSKU
.
az storage account create -n <myStorageAccount> -g <resourceGroup> --location <chooseLocation> --sku <chooseSKU>
Media Services hesabı oluşturma
Şimdi Media Services hesabını oluşturun. 'yi arayın
Bu komut hakkında daha fazla bilgi için bkz. Media Services CLI başvurusu.
Azure İşlevini ayarlama
Bu bölümde Azure İşlevinizi ayarlayacaksınız.
Kodu alma
İşlev projenizi oluşturmak ve KODU HTTP şablonundan almak için Azure İşlevleri kullanın.
func init MediaServicesLiveMonitor –dotnet
Dizini değiştir
Çalışma dizininizi proje dizini olarak değiştirdiğinizden emin olun. Aksi takdirde hata alırsınız.
cd .\MediaServicesLiveMonitor\
İşlevinizi adlandırma
func new --name OnAir --template "HTTP trigger" --authlevel "anonymous"
İşlevler projesini yapılandırma
Media Services ve diğer uzantıları yükleme
Projenizde ihtiyacınız olan uzantı paketlerini yüklemek için Terminal penceresinde dotnet add package komutunu çalıştırın. Aşağıdaki komut Media Services ve Azure Identity paketlerini yükler.
dotnet add package Microsoft.Azure.Management.Media
dotnet add package Azure.Identity
OnAir.cs kodunu düzenleme
OnAir.cs
Dosyayı değiştirin. , resourceGroup
ve mediaServicesAccountName
değişkenlerini daha önce karar verdikleriyle değiştirinsubscriptionId
.
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");
}
}
}
İşlev Uygulamasını Oluşturma
İşlevi barındırmak için İşlev Uygulamasını oluşturun. Ad, daha önce MediaServicesLiveMonitorApp
indirdiğiniz adla aynıdır.
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]"
JSON yanıtında arayın principalId
:
{
...
"identity": {
//Note the principalId value for the following step
"principalId": "00000000-0000-0000-000000000000",
"tenantId": "00000000-0000-0000-000000000000",
"type": "SystemAssigned",
"userAssignedIdentities": null
}
...
İşlev uygulamasına Media Services hesap kaynağına erişim verme
Bu istek için:
assignee
principalId
JSON yanıtında bulunanaz functionapp create
scope
id
, JSON yanıtında bulunan değeridiraz ams account create
. Yukarıdaki örnek JSON yanıtına bakın.
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>"
İşlevi yayımlama
func azure functionapp publish MediaServicesLiveMonitorApp
Doğrulama
Tarayıcıda işlev URL'sine gidin, örneğin:
https://mediaserviceslivemonitorapp.azurewebsites.net/api/onair?name=live1
Canlı Etkinlik henüz mevcut olmadığından bu 404 (Bulunamadı) hatası döndürmelidir.
Canlı Etkinlik Oluşturma
az ams live-event create --resource-group test3 --account-name mediatest3 --name live1 --streaming-protocol RTMP
Tarayıcıda işlev URL'sine gidin, örneğin:
https://mediaserviceslivemonitorapp.azurewebsites.net/api/onair?name=live1
Bu artık "Hava Açık" ifadesini göstermelidir.
Canlı etkinliği başlatma
Canlı Etkinliği başlatırsanız işlev "Yayında" değerini döndürmelidir.
az ams live-event start live1
Bu işlev herkese erişim sağlar. Azure İşlevi'ne erişimin güvenliğini sağlamak ve "Yayında" ışığını bağlamak bu belgenin kapsamı dışındadır.
Kaynakları temizleme
Oluşturduğunuz kaynakları kullanmayı planlamıyorsanız kaynak grubunu silin.
CLI ile kaynak grubunu silme
az group delete --name <your-resource-group-name>
Yardım ve destek alma
Sorularınız için Media Services ile iletişime geçebilir veya aşağıdaki yöntemlerden birini kullanarak güncelleştirmelerimizi izleyebilirsiniz:
- Q & A
- Stack Overflow. ile soruları etiketleme
azure-media-services
. - Destek istemek için @AzureSupport @MSFTAzureMedia veya kullanın.
- Azure portal üzerinden bir destek bileti açın.