步骤 3 - 进行设置,以迁移到 V3 REST API 或客户端 SDK
下文描述了将环境设置为使用媒体服务 V3 API 需要执行的步骤。
SDK 模型
V2 API 中有两个不同的客户端 SDK,一个用于管理 API,可同构它以编程方式创建帐户,而另一个用于管理资源。
以前,除了 AMS 帐户的特定 V2 REST API 终结点,开发人员还会使用 Azure 服务主体客户端 ID 和客户端密码。
V3 API 基于 Azure 资源管理 (ARM)。 它使用 Azure Active Directory (Azure AD) 服务主体 ID 和密钥连接到 API。 开发人员将需要创建服务主体或托管标识才能连接到 API。 在 V3 API 中,API 会使用标准 ARM 终结点,对其他所有 Azure 服务使用相似且一致的模型。
以前使用 2015-10-01 版本的 ARM 管理 API 来管理其 V2 帐户的客户应使用 2020-05-01(或更新)版本的 ARM 管理 API,新版本支持 V3 API 访问。
在门户中查找租户和订阅 ID,并创建媒体服务帐户。 然后,选择 API 访问和服务主体身份验证,来生成用于此测试帐户的新的 Azure AD 应用程序 ID 和机密。
创建媒体服务帐户。
获取用于访问媒体服务 API 的凭据。
下载所选的客户端 SDK 并设置环境
注意
社区 PHP SDK 无法再用于 V3 上的 Azure 媒体服务。 如果正在 V2 中使用 PHP,应直接在代码中迁移到 REST API。
Open API 规范
V3 基于统一的 API 接口,该接口公开了在 Azure 资源管理器之上构建的管理和操作功能。 Azure 资源管理器模板可用于创建和部署转换、流式处理终结点、直播活动等等。
OpenAPI 规范(之前称为 Swagger)文档说明了所有服务组件的架构。
所有客户端 SDK 都是从 GitHub 上发布的 Open API 规范派生和生成的。 在本文发布时,最新的 Open API 规范在 GitHub 中公开进行维护。 2020-05-01 版本是最新的稳定版本。
若要设置环境,请阅读使用 .NET 连接到媒体服务 v3 API 一文。
如果只想使用 PackageManager 安装最新的 SDK,请使用以下命令:
Install-Package Microsoft.Azure.Management.Media
若要使用 .NET CLI 安装最新的 SDK,请使用以下命令:
dotnet add package Microsoft.Azure.Management.Media
此外,对于各种方案,都可在 Azure-Samples/media-services-v3-dotnet 中找到完整的 .NET 示例。 此存储库中的项目演示了如何使用 v3 版本实现不同的 Azure 媒体服务方案。
开始调整代码
在代码库中搜索 CloudMediaContext
使用实例,开始升级到 V3 API 的过程。
下面的代码演示了以前是如何使用 v2 .NET SDK 访问 v2 API 的。 开发人员会先创建一个 CloudMediaContext
和一个包含 AzureAdTokenCredentials
对象的实例。
class Program
{
// Read values from the App.config file.
private static readonly string _AADTenantDomain =
ConfigurationManager.AppSettings["AMSAADTenantDomain"];
private static readonly string _RESTAPIEndpoint =
ConfigurationManager.AppSettings["AMSRESTAPIEndpoint"];
private static readonly string _AMSClientId =
ConfigurationManager.AppSettings["AMSClientId"];
private static readonly string _AMSClientSecret =
ConfigurationManager.AppSettings["AMSClientSecret"];
private static CloudMediaContext _context = null;
static void Main(string[] args)
{
try
{
AzureAdTokenCredentials tokenCredentials =
new AzureAdTokenCredentials(_AADTenantDomain,
new AzureAdClientSymmetricKey(_AMSClientId, _AMSClientSecret),
AzureEnvironments.AzureChinaCloudEnvironment);
var tokenProvider = new AzureAdTokenProvider(tokenCredentials);
_context = new CloudMediaContext(new Uri(_RESTAPIEndpoint), tokenProvider);