Media Services v3 API에 연결 - .NET
경고
Azure Media Services는 2024년 6월 30일에 사용 중지됩니다. 자세한 내용은 AMS 사용 중지 가이드를 참조하세요.
이 문서에서는 서비스 사용자 로그인 메서드를 사용하여 Azure Media Services v3 .NET SDK에 연결하는 방법을 보여 줍니다.
사전 요구 사항
- Media Services 계정 만들기 리소스 그룹 이름과 Media Services 계정 이름을 기억해 두어야 합니다.
- .NET 개발에 사용하려는 도구를 설치합니다. 이 문서의 단계에서는 Visual Studio 2019 Community Edition을 사용하는 방법을 보여 줍니다. Visual Studio Code를 사용할 수 있습니다. C# 작업을 참조하세요. 또는 다른 코드 편집기를 사용할 수 있습니다.
중요
명명 규칙을 검토합니다.
콘솔 애플리케이션 만들기
- Visual Studio를 시작합니다.
- 파일 메뉴에서 새로 만들기>프로젝트를 클릭합니다.
- .NET Core 콘솔 애플리케이션을 만듭니다.
이 항목의 샘플 앱은 netcoreapp2.0
을 대상으로 합니다. 이 코드에서는 C# 7.1부터 사용할 수 있는 'async main'을 사용합니다. 자세한 내용은 이 블로그를 참조하세요.
필요한 NuGet 패키지/어셈블리 추가
- Visual Studio에서 도구>NuGet 패키지 관리자>NuGet 관리자 콘솔을 선택합니다.
-
패키지 관리자 콘솔 창에서
Install-Package
명령을 사용하여 다음 NuGet 패키지를 추가합니다.Install-Package Microsoft.Azure.Management.Media
)을 입력합니다.
패키지 | Description |
---|---|
Microsoft.Azure.Management.Media |
Azure Media Services SDK 최신 Azure Media Services 패키지를 사용하고 있는지 확인하려면 Microsoft.Azure.Management.Media를 확인하세요. |
기타 필수 어셈블리
- Azure.Storage.Blobs
- Microsoft.Extensions.Configuration
- Microsoft.Extensions.Configuration.EnvironmentVariables
- Microsoft.Extensions.Configuration.Json
- Microsoft.Rest.ClientRuntime.Azure.Authentication
앱 설정 파일 만들기 및 구성
appsettings.json 만들기
- 일반>텍스트 파일로 이동합니다.
- "appsettings.json"으로 이름을 지정합니다.
- .json 파일의 "출력 디렉터리로 복사" 속성을 "변경된 내용만 복사"로 설정하여 애플리케이션이 게시될 때 액세스할 수 있도록 합니다.
appsettings.json의 값 설정
액세스 API에 설명된 대로 az ams account sp create
명령을 실행합니다. 명령은 "appsettings.json"에 복사해야 하는 json을 반환합니다.
구성 파일 추가
편의상 "appsettings.json"에서 값을 읽는 구성 파일을 추가합니다.
- 프로젝트에 새 .cs 클래스를 추가합니다. 이름을
ConfigWrapper
로 지정합니다. - 이 파일에 다음 코드를 붙여넣습니다(이 예제에서는 네임스페이스가
ConsoleApp1
인 것으로 가정).
using System;
using Microsoft.Extensions.Configuration;
namespace ConsoleApp1
{
public class ConfigWrapper
{
private readonly IConfiguration _config;
public ConfigWrapper(IConfiguration config)
{
_config = config;
}
public string SubscriptionId
{
get { return _config["SubscriptionId"]; }
}
public string ResourceGroup
{
get { return _config["ResourceGroup"]; }
}
public string AccountName
{
get { return _config["AccountName"]; }
}
public string AadTenantId
{
get { return _config["AadTenantId"]; }
}
public string AadClientId
{
get { return _config["AadClientId"]; }
}
public string AadSecret
{
get { return _config["AadSecret"]; }
}
public Uri ArmAadAudience
{
get { return new Uri(_config["ArmAadAudience"]); }
}
public Uri AadEndpoint
{
get { return new Uri(_config["AadEndpoint"]); }
}
public Uri ArmEndpoint
{
get { return new Uri(_config["ArmEndpoint"]); }
}
public string Location
{
get { return _config["Location"]; }
}
}
}
.NET 클라이언트에 연결
.NET으로 Media Services API를 사용하려면 AzureMediaServicesClient 개체를 만들어야 합니다. 개체를 만들려면 Azure AD를 사용하여 클라이언트가 Azure에 연결하는 데 필요한 자격 증명을 제공해야 합니다. 아래 코드에서 GetCredentialsAsync 함수는 로컬 구성 파일에 제공된 자격 증명에 따라 ServiceClientCredentials 개체를 만듭니다.
-
Program.cs
를 엽니다. - 다음 코드를 붙여 넣습니다.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Azure.Management.Media;
using Microsoft.Azure.Management.Media.Models;
using Microsoft.Extensions.Configuration;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using Microsoft.Rest;
using Microsoft.Rest.Azure.Authentication;
namespace ConsoleApp1
{
class Program
{
public static async Task Main(string[] args)
{
ConfigWrapper config = new ConfigWrapper(new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build());
try
{
IAzureMediaServicesClient client = await CreateMediaServicesClientAsync(config);
Console.WriteLine("connected");
}
catch (Exception exception)
{
if (exception.Source.Contains("ActiveDirectory"))
{
Console.Error.WriteLine("TIP: Make sure that you have filled out the appsettings.json file before running this sample.");
}
Console.Error.WriteLine($"{exception.Message}");
if (exception.GetBaseException() is ErrorResponseException apiException)
{
Console.Error.WriteLine(
$"ERROR: API call failed with error code '{apiException.Body.Error.Code}' and message '{apiException.Body.Error.Message}'.");
}
}
Console.WriteLine("Press Enter to continue.");
Console.ReadLine();
}
private static async Task<ServiceClientCredentials> GetCredentialsAsync(ConfigWrapper config)
{
// Use ApplicationTokenProvider.LoginSilentWithCertificateAsync or UserTokenProvider.LoginSilentAsync to get a token using service principal with certificate
//// ClientAssertionCertificate
//// ApplicationTokenProvider.LoginSilentWithCertificateAsync
// Use ApplicationTokenProvider.LoginSilentAsync to get a token using a service principal with symmetric key
ClientCredential clientCredential = new ClientCredential(config.AadClientId, config.AadSecret);
return await ApplicationTokenProvider.LoginSilentAsync(config.AadTenantId, clientCredential, ActiveDirectoryServiceSettings.Azure);
}
private static async Task<IAzureMediaServicesClient> CreateMediaServicesClientAsync(ConfigWrapper config)
{
var credentials = await GetCredentialsAsync(config);
return new AzureMediaServicesClient(config.ArmEndpoint, credentials)
{
SubscriptionId = config.SubscriptionId,
};
}
}
}
도움말 및 지원 보기
다음 방법 중 하나로 Media Services에 질문하거나 업데이트를 따를 수 있습니다.
- 질문과 대답
-
Stack Overflow. 를 사용하여 질문에 태그를 지정
azure-media-services
합니다. - @MSFTAzureMedia 또는 @AzureSupport 사용하여 지원을 요청합니다.
- Azure Portal 통해 지원 티켓을 엽니다.