Share via


Oktatóanyag: Azure-függvényalkalmazás hozzáférésének biztosítása Media Services-fiókhoz

Media Services embléma v3


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.

Felügyelt identitások, amely egy függvényalkalmazásnak hozzáférést biztosít egy Media Services-fiókhoz

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 subscriptionIda , 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:

  • assigneeprincipalId az a, amely a JSON-válaszban szerepel a következőtől:az functionapp create
  • scope A az id , 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: