Kurz: Udělení přístupu k účtu Media Services aplikaci Funkcí Azure
Upozornění
Služba Azure Media Services bude vyřazena 30. června 2024. Další informace najdete v průvodci vyřazením AMS.
Předpokládejme, že chcete návštěvníkům vašeho webu nebo aplikace dát vědět, že ve svém vysílacím studiu jste "On Air". Pomocí rozhraní API služby Media Services můžete určit, kdy živé události služby Media Services běží, ale může být obtížné volat z vloženého zařízení. Místo toho můžete pomocí Azure Functions zveřejnit rozhraní HTTP API pro vložené zařízení. Azure Functions pak můžete zavolat službu Media Services, aby získala stav živé události.
V tomto kurzu se používá rozhraní API media services z 2020-05-01.
Přihlášení k Azure
Pokud chcete použít některý z příkazů v tomto článku, musíte být nejprve přihlášeni k předplatnému, které chcete použít.
Přihlaste se k Azure. Při použití tohoto příkazu se zobrazí výzva k zadání předplatného, které chcete použít.
az login
Nastavení předplatného
Tento příkaz slouží k nastavení předplatného, se kterým chcete pracovat.
Nastavení předplatného Azure pomocí rozhraní příkazového řádku
V následujícím příkazu uveďte ID předplatného Azure, které chcete pro účet Media Services použít.
az account set --subscription <subscriptionName>
Požadavky
Důležité
Před pokusem o tento kurz důrazně doporučujeme projít si rychlý start Vytvoření funkce jazyka C# v Azure z příkazového řádku . Je to proto, že kroky nastavení, které zahrnují, jsou zde potřeba stejné kroky. Získáte také možnost pracovat s jednoduchým příkladem, na kterém je tento kurz založen.
Názvy prostředků
Než začnete, rozhodněte se o názvech prostředků, které vytvoříte. Měly by být snadno identifikovatelné jako sada, zejména pokud je neplánujete používat po dokončení testování. Pravidla pojmenování se u mnoha typů prostředků liší, takže je nejlepší držet se všech malých písmen. Například "mediatest1rg" pro název vaší skupiny prostředků a "mediatest1stor" pro název účtu úložiště. Pro každý krok v tomto článku použijte stejné názvy.
Na tyto názvy se odkazuje v následujících příkazech. Názvy prostředků, které budete potřebovat, jsou:
- myRG
- myStorageAccount
- myAmsAccount
- location
- myFunction: použijte "OnAir".
- myLiveEvent: použijte live1.
- ipaddresses use: "0.0.0./32"
Poznámka
Výše uvedené spojovníky se používají pouze k oddělení vodicích slov. Kvůli nekonzistenci pojmenování prostředků ve službách Azure nepoužívejte při pojmenování prostředků spojovníky.
Cokoli, co představuje 00000000-0000-0000-00000000000 je jedinečný identifikátor prostředku. Tuto hodnotu obvykle vrací odpověď JSON. Odpovědi JSON byste měli zkopírovat a vložit v Poznámkovém bloku nebo jiném textovém editoru, protože tyto odpovědi budou obsahovat hodnoty, které budete potřebovat pro pozdější příkazy rozhraní příkazového řádku.
Také nevytvoříte název oblasti. Název oblasti určuje Azure.
Výpis oblastí Azure
Pokud si nejste jistí skutečným názvem oblasti, který chcete použít, použijte tento příkaz k získání výpisu:
Pomocí tohoto příkazu zobrazíte seznam oblastí dostupných pro váš účet.
az account list-locations --query "[].{DisplayName:displayName, Name:name}" -o table
Sequence
Každý z následujících kroků se provádí v určitém pořadí, protože v dalším kroku v pořadí se použije jedna nebo více hodnot z odpovědí JSON.
Vytvoření účtu úložiště
Účet Media Services, který vytvoříte, musí mít přidružený účet úložiště. Nejprve vytvořte účet úložiště pro účet Media Services. Použijete your-storage-account-name
pro další kroky.
Vytvoření účtu služby Azure Storage pomocí rozhraní příkazového řádku
Pomocí následujících příkazů vytvořte účet služby Azure Storage.
Pokud chcete vytvořit účet úložiště, musíte nejprve vytvořit skupinu prostředků v rámci umístění.
Pokud chcete zobrazit seznam dostupných umístění, použijte následující příkaz:
Výpis dostupných umístění pomocí rozhraní příkazového řádku
Pokud chcete zobrazit seznam dostupných umístění, použijte následující příkaz:
az account list-locations
Vytvoření skupiny prostředků pomocí rozhraní příkazového řádku
Skupinu prostředků vytvoříte spuštěním následujícího příkazu:
az group create -n <resourceGroupName> --location chooseLocation
Volba skladové jednotky (SKU)
Musíte také zvolit skladovou položku pro váš účet úložiště. Můžete zobrazit seznam účtů úložiště.
Vyberte skladovou položku z následujícího seznamu: Standard_LRS, Standard_GRS, Standard_RAGRS, Standard_ZRS, Premium_LRS, Premium_ZRS, Standard_GZRS Standard_RAGZRS.
- Změňte
myStorageAccount
na jedinečný název o délce kratší než 24 znaků. - Přejděte
chooseLocation
na oblast, ve které chcete pracovat. - Přejděte
chooseSKU
na upřednostňovanou skladovou položku.
az storage account create -n <myStorageAccount> -g <resourceGroup> --location <chooseLocation> --sku <chooseSKU>
Vytvoření účtu Media Services
Teď vytvořte účet Media Services. Vyhledejte '
Další informace o tomto příkazu najdete v referenčních informacích k rozhraní příkazového řádku služby Media Services.
Nastavení funkce Azure Functions
V této části nastavíte funkci Azure Functions.
Získání kódu
Pomocí Azure Functions vytvořte projekt funkce a načtěte kód ze šablony HTTP.
func init MediaServicesLiveMonitor –dotnet
Změna adresáře
Ujistěte se, že jste změnili pracovní adresář na adresář projektu. V opačném případě se zobrazí chyby.
cd .\MediaServicesLiveMonitor\
Pojmenování funkce
func new --name OnAir --template "HTTP trigger" --authlevel "anonymous"
Konfigurace projektu functions
Instalace služby Media Services a dalších rozšíření
Spuštěním příkazu dotnet add package v okně Terminálu nainstalujte balíčky rozšíření, které potřebujete v projektu. Následující příkaz nainstaluje balíčky Media Services a Azure Identity.
dotnet add package Microsoft.Azure.Management.Media
dotnet add package Azure.Identity
Úprava kódu OnAir.cs
OnAir.cs
Změňte soubor. Změňte subscriptionId
proměnné , a mediaServicesAccountName
na proměnné, resourceGroup
o kterých jste se rozhodli dříve.
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");
}
}
}
Vytvoření aplikace funkcí
Vytvořte aplikaci funkcí pro hostování funkce. Název je stejný jako název, který jste stáhli dříve, 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]"
V odpovědi JSON vyhledejte principalId
:
{
...
"identity": {
//Note the principalId value for the following step
"principalId": "00000000-0000-0000-000000000000",
"tenantId": "00000000-0000-0000-000000000000",
"type": "SystemAssigned",
"userAssignedIdentities": null
}
...
Udělení přístupu k prostředku účtu Media Services aplikaci funkcí
Pro tuto žádost:
-
assignee
je hodnota ,principalId
která je v odpovědi JSON zaz functionapp create
-
scope
je hodnota ,id
která je v odpovědi JSON z .az ams account create
Podívejte se na ukázkovou odpověď JSON výše.
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>"
Publikování funkce
func azure functionapp publish MediaServicesLiveMonitorApp
Ověřování
V prohlížeči přejděte na adresu URL funkce, například:
https://mediaserviceslivemonitorapp.azurewebsites.net/api/onair?name=live1
Tato chyba by měla vrátit chybu 404 (Nenalezena), protože živá událost ještě neexistuje.
Vytvoření živé události
az ams live-event create --resource-group test3 --account-name mediatest3 --name live1 --streaming-protocol RTMP
V prohlížeči přejděte na adresu URL funkce, například:
https://mediaserviceslivemonitorapp.azurewebsites.net/api/onair?name=live1
Teď by se mělo zobrazit "Mimo vzduch".
Spuštění živé události
Pokud spustíte živou událost, měla by funkce vrátit "On Air".
az ams live-event start live1
Tato funkce umožňuje přístup komukoli. Zabezpečení přístupu k funkci Azure Functions a zapojení kontrolky "On Air" je v tomto dokumentu mimo rozsah.
Vyčištění prostředků
Pokud vytvořené prostředky neplánujete používat, odstraňte skupinu prostředků.
Odstranění skupiny prostředků pomocí rozhraní příkazového řádku
az group delete --name <your-resource-group-name>
Získání nápovědy a podpory
Službu Media Services můžete kontaktovat s dotazy nebo můžete sledovat naše aktualizace jedním z následujících způsobů:
- Q & A
-
Stack Overflow Označit otázky pomocí
azure-media-services
. - @MSFTAzureMedia nebo použijte @AzureSupport a požádejte o podporu.
- Otevřete lístek podpory prostřednictvím Azure Portal.