Oktatóanyag: Azure-függvényalkalmazás hozzáférésének biztosítása Media Services-fiókhoz
Figyelmeztetés
Az Azure Media Services 2024. június 30-án megszűnik. További információkért lásd az AMS kivezetési útmutatóját.
Tegyük fel, hogy szeretné tudatni a webhely vagy alkalmazás látogatóival, hogy Ön "On Air" a szórási stúdióban. Meghatározhatja, hogy mikor futnak a Media Services élő eseményei a Media Services API-val, de ez egy beágyazott eszközről nehéz lehet meghívni. Ehelyett közzétehet egy HTTP API-t a beágyazott eszközhöz Azure Functions használatával. Azure Functions ezután meghívhatja a Media Servicest az élő esemény állapotának lekéréséhez.
Ez az oktatóanyag a 2020-05-01 Media Services API-t használja.
Bejelentkezés az Azure-ba
A cikkben szereplő parancsok bármelyikének használatához először be kell jelentkeznie a használni kívánt előfizetésbe.
Jelentkezzen be az Azure-ba. A parancs használatakor a rendszer kérni fogja a használni kívánt előfizetést.
az login
Előfizetés beállítása
Ezzel a paranccsal állíthatja be a használni kívánt előfizetést.
Az Azure-előfizetés beállítása a parancssori felülettel
Az alábbi parancsban adja meg a Media Services-fiókhoz használni kívánt Azure-előfizetés azonosítóját.
az account set --subscription <subscriptionName>
Előfeltételek
Fontos
Javasoljuk, hogy az oktatóanyag elvégzése előtt végezze el a C#-függvény létrehozása az Azure-ban című rövid útmutatót. Ennek az az oka, hogy az itt szereplő beállítási lépésekhez ugyanazokra a lépésekre van szükség. Emellett egy egyszerű példával is dolgozhat, amelyen ez az oktatóanyag alapul.
Erőforrások neve
Az első lépések előtt döntse el a létrehozni kívánt erőforrások nevét. Ezeknek könnyen azonosíthatóknak kell lenniük készletként, különösen akkor, ha nem tervezi használni őket a tesztelés befejezése után. Az elnevezési szabályok számos erőforrástípus esetében eltérőek, ezért érdemes az összes kisbetűs szabályt betartani. Az erőforráscsoport neve például "mediatest1rg", a tárfiók neve pedig "mediatest1stor". A cikk minden lépéséhez ugyanazokat a neveket használja.
Ezekre a nevekre az alábbi parancsok hivatkoznak. A szükséges erőforrások nevei a következők:
- myRG
- myStorageAccount
- myAmsAccount
- location
- myFunction: használja az "OnAir" parancsot
- myLiveEvent: használja a "live1" kifejezést
- Az ipaddresses a következőt használja: "0.0.0./32"
Megjegyzés
A fenti kötőjelek csak az útmutató szavak elválasztására szolgálnak. Az Azure-szolgáltatásokban az erőforrások elnevezésének inkonzisztenciája miatt ne használjon kötőjeleket az erőforrások elnevezésekor.
A 00000000-0000-0000-000000000000 által képviselt értékek az erőforrás egyedi azonosítója. Ezt az értéket általában egy JSON-válasz adja vissza. Másolja és illessze be a JSON-válaszokat a Jegyzettömbbe vagy más szövegszerkesztőbe, mivel ezek a válaszok olyan értékeket tartalmaznak, amelyek a későbbi CLI-parancsokhoz szükségesek.
Emellett nem hozza létre a régió nevét. A régió nevét az Azure határozza meg.
Azure-régiók listázása
Ha nem biztos abban, hogy a tényleges régiónevet kell használnia, a következő paranccsal kérhet le egy listát:
Ezzel a paranccsal listázhatja a fiókjához elérhető régiókat.
az account list-locations --query "[].{DisplayName:displayName, Name:name}" -o table
Sequence
Az alábbi lépések mindegyike egy adott sorrendben történik, mert a JSON-válaszokból egy vagy több érték lesz felhasználva a sorozat következő lépésében.
Storage-fiók létrehozása
A létrehozandó Media Services-fiókhoz társítva kell lennie egy tárfióknak. Először hozza létre a Media Services-fiókhoz tartozó tárfiókot. Ezt a következő lépésekhez fogja használni your-storage-account-name
.
Azure Storage-fiók létrehozása a parancssori felülettel
Az alábbi parancsokkal hozzon létre egy Azure Storage-fiókot.
Tárfiók létrehozásához először létre kell hoznia egy erőforráscsoportot egy helyen belül.
Az elérhető helyek listázásához használja a következő parancsot:
Elérhető helyek listázása a parancssori felülettel
Az elérhető helyek listázásához használja a következő parancsot:
az account list-locations
Erőforráscsoport létrehozása a parancssori felülettel
Egy erőforráscsoport létrehozásához használja a következő parancsot:
az group create -n <resourceGroupName> --location chooseLocation
SKU kiválasztása
Emellett ki kell választania egy termékváltozatot a tárfiókjához. A tárfiókokat listázhatja.
Válasszon termékváltozatot a következő listában: Standard_LRS, Standard_GRS, Standard_RAGRS, Standard_ZRS, Premium_LRS, Premium_ZRS, Standard_GZRS, Standard_RAGZRS.
- Váltson
myStorageAccount
24 karakternél rövidebb hosszúságú egyedi névre. - Váltson
chooseLocation
arra a régióra, amelyben dolgozni szeretne. - Váltson
chooseSKU
az előnyben részesített termékváltozatra.
az storage account create -n <myStorageAccount> -g <resourceGroup> --location <chooseLocation> --sku <chooseSKU>
Media Services-fiók létrehozása
Most hozza létre a Media Services-fiókot. Keresse meg a következőt: '
A parancsról további információt a Media Services parancssori felületének referenciájában talál.
Az Azure-függvény beállítása
Ebben a szakaszban az Azure-függvényt fogja beállítani.
A kód letöltése
A Azure Functions használatával hozza létre a függvényprojektet, és kérje le a kódot a HTTP-sablonból.
func init MediaServicesLiveMonitor –dotnet
Címtár módosítása
Ügyeljen arra, hogy a munkakönyvtárat a projektkönyvtárra módosítsa. Ellenkező esetben hibaüzenetek jelennek meg.
cd .\MediaServicesLiveMonitor\
A függvény neve
func new --name OnAir --template "HTTP trigger" --authlevel "anonymous"
A függvényprojekt konfigurálása
A Media Services és más bővítmények telepítése
Futtassa a dotnet add package parancsot a Terminál ablakban a projektben szükséges bővítménycsomagok telepítéséhez. A következő parancs telepíti a Media Services és az Azure Identity csomagokat.
dotnet add package Microsoft.Azure.Management.Media
dotnet add package Azure.Identity
A OnAir.cs kód szerkesztése
Módosítsa a OnAir.cs
fájlt. Módosítsa subscriptionId
a , resourceGroup
és mediaServicesAccountName
változókat a korábban meghatározottakra.
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");
}
}
}
A függvényalkalmazás létrehozása
Hozza létre a függvényalkalmazást a függvény üzemeltetéséhez. A név megegyezik a korábban letöltött névvel( 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]"
Keresse meg principalId
a következőt a JSON-válaszban:
{
...
"identity": {
//Note the principalId value for the following step
"principalId": "00000000-0000-0000-000000000000",
"tenantId": "00000000-0000-0000-000000000000",
"type": "SystemAssigned",
"userAssignedIdentities": null
}
...
A függvényalkalmazás hozzáférésének biztosítása a Media Services-fiók erőforrásához
Ehhez a kéréshez:
assignee
principalId
az a, amely a JSON-válaszban szerepel a következőtől:az functionapp create
scope
A azid
, amely a JSON-válaszában szerepel a következőtől:az ams account create
. Tekintse meg a fenti JSON-példaválaszt.
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>"
A függvény közzététele
func azure functionapp publish MediaServicesLiveMonitorApp
Érvényesítés
Egy böngészőben nyissa meg a függvény URL-címét, például:
https://mediaserviceslivemonitorapp.azurewebsites.net/api/onair?name=live1
Ennek 404-as (Nem található) hibát kell visszaadnia, mivel az élő esemény még nem létezik.
Élő esemény létrehozása
az ams live-event create --resource-group test3 --account-name mediatest3 --name live1 --streaming-protocol RTMP
Egy böngészőben nyissa meg a függvény URL-címét, például:
https://mediaserviceslivemonitorapp.azurewebsites.net/api/onair?name=live1
Ekkor megjelenik a "Off Air" (Off Air) felirat.
Az élő esemény indítása
Ha elindítja az élő eseményt, a függvénynek a "Levegőben" értéket kell visszaadnia.
az ams live-event start live1
Ez a függvény bárki számára lehetővé teszi a hozzáférést. A dokumentum hatókörén kívül esik az Azure-függvényhez való hozzáférés biztonságossá tétele és egy "On Air" jelzőfény bekötése.
Az erőforrások eltávolítása
Ha nem tervezi használni a létrehozott erőforrásokat, törölje az erőforráscsoportot.
Erőforráscsoport törlése a parancssori felülettel
az group delete --name <your-resource-group-name>
Súgó és támogatás
Kérdéseivel kapcsolatba léphet a Media Services szolgáltatással, vagy követheti a frissítéseket az alábbi módszerek egyikével:
- Q & A
- Stack Overflow. Kérdések címkézése a következővel:
azure-media-services
. - @MSFTAzureMediavagy @AzureSupport használatával kérhet támogatást.
- Nyisson meg egy támogatási jegyet a Azure Portal keresztül.