連線到媒體服務 v3 API - Node.js
警告
Azure 媒體服務將於 2024 年 6 月 30 日淘汰。 如需詳細資訊,請參閱 AMS淘汰指南。
本文說明如何使用服務主體登入方法來連線到 Azure 媒體服務 v3 node.js SDK。 您將使用 media-services-v3-node-tutorials 範例存放庫中的檔案。 HelloWorld-ListAssets 範例包含用於連線的程式碼,然後列出帳戶中的資產。
必要條件
- Visual Studio Code 的安裝。
- 安裝 Node.js。
- 安裝 TypeScript。
- 建立媒體服務帳戶。 請務必記住資源群組名稱和「媒體服務」帳戶名稱。
- 建立應用程式的服務主體。 請參閱存取 API。
專業提示! 將此視窗保持開啟狀態,或將 JSON 索引標籤中的所有內容複製到記事本。 - 務必取得最新版的 AzureMediaServices SDK for JavaScript。
重要
請檢閱 Azure 媒體服務命名慣例,來了解實體的重要命名限制。
複製 Node.JS 範例存放庫
您將使用 Azure 範例中的一些檔案。 複製 Node.JS 範例存放庫。
git clone https://github.com/Azure-Samples/media-services-v3-node-tutorials.git
安裝 Node.js 套件
安裝 @azure/arm-mediaservices
npm install @azure/arm-mediaservices
針對此範例,您將使用 package.json
檔案中的下列套件。
套件 | 描述 |
---|---|
@azure/arm-mediaservices |
Azure 媒體服務 SDK。 若要確定您使用的是最新的 Azure 媒體服務套件,請檢查 npm install @azure/arm-mediaservices。 |
@azure/identity |
如需使用服務主體或受控識別進行 Azure AD 驗證,這是必要的 |
@azure/storage-blob |
儲存體 SDK。 將檔案上傳至資產時使用。 |
@azure/abort-controller |
與儲存體用戶端搭配使用,使長時間執行的下載作業逾時 |
建立 package.json 檔案
- 使用您慣用的編輯器建立
package.json
檔案。 - 開啟該檔案,並貼上下列程式碼:
{
"name": "media-services-node-sample",
"version": "0.1.0",
"description": "",
"main": "./index.ts",
"dependencies": {
"@azure/arm-mediaservices": "^10.0.0",
"@azure/abort-controller": "^1.0.2",
"@azure/identity": "^2.0.0",
"@azure/storage-blob": "^12.4.0"
}
}
使用 TypeScript 連線到 Node.js 用戶端
範例 .env 檔案
您會將驗證值保留在名為 .env 的檔案中。 (正確,沒有檔名,只要擴展名.) 讀取 存取 API ,以瞭解如何取得和複製這些值。 您可以從入口網站中媒體服務帳戶的 [API 存取] 頁面取得值,或使用 CLI 取得所需的值。
將值複製並貼到名為 .env 的檔案中。 檔案應該儲存在工作存放庫的根目錄。
一旦建立了 .env 檔案,您就可以開始使用範例。
執行範例應用程式 HelloWorld-ListAssets
- 從根資料夾啟動 Visual Studio Code。
cd media-services-v3-node-tutorials
code .
- 從終端機安裝 package.json 檔案中使用的套件
npm install
製作 sample.env 檔案的複本、將其重新命名為 .env,並更新該檔案中的值以符合您的帳戶和訂用帳戶資訊。 您可能首先需要從 Azure 入口網站收集此資訊。
將目錄變更為 HelloWorld-ListAssets 資料夾
cd HelloWorld-ListAssets
- 開啟 HelloWorld-ListAssets 資料夾中的 list-assets.ts 檔案,然後在 Visual Studio Code 中按 F5 鍵,開始執行指令碼。 如果您有資產已在帳戶中,則應該會看到顯示的資產清單。 如果帳戶是空的,您會看到空的清單。
若要快速查看列出的資產,請使用入口網站上傳一些影片檔案。 每個檔案將會自動建立資產,然後再次執行此指令碼,將會傳回其名稱。
仔細查看 HelloWorld-ListAssets 範例
HelloWorld-ListAssets 範例會說明如何使用服務主體連線到媒體服務用戶端,並列出帳戶中的資產。 如需其用途的詳細說明,請參閱程式碼中的註解。
import { DefaultAzureCredential } from "@azure/identity";
import {
AzureMediaServices
} from '@azure/arm-mediaservices';
// Load the .env file if it exists
import * as dotenv from "dotenv";
dotenv.config();
export async function main() {
// Copy the samples.env file and rename it to .env first, then populate it's values with the values obtained
// from your Media Services account's API Access page in the Azure portal.
const clientId: string = process.env.AADCLIENTID as string;
const secret: string = process.env.AADSECRET as string;
const tenantDomain: string = process.env.AADTENANTDOMAIN as string;
const subscriptionId: string = process.env.SUBSCRIPTIONID as string;
const resourceGroup: string = process.env.RESOURCEGROUP as string;
const accountName: string = process.env.ACCOUNTNAME as string;
// This sample uses the default Azure Credential object, which relies on the environment variable settings.
// If you wish to use User assigned managed identity, see the samples for v2 of @azure/identity
// Managed identity authentication is supported via either the DefaultAzureCredential or the ManagedIdentityCredential classes
// https://learn.microsoft.com/javascript/api/overview/azure/identity-readme?view=azure-node-latest
// See the following examples for how to authenticate in Azure with managed identity
// https://github.com/Azure/azure-sdk-for-js/blob/@azure/identity_2.0.1/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-in-azure-with-managed-identity
// const credential = new ManagedIdentityCredential("<USER_ASSIGNED_MANAGED_IDENTITY_CLIENT_ID>");
const credential = new DefaultAzureCredential();
let mediaServicesClient = new AzureMediaServices(credential, subscriptionId)
// List Assets in Account
console.log("Listing assets in account:")
for await (const asset of mediaServicesClient.assets.list(resourceGroup, accountName, { top:1000 })){
console.log(asset.name);
}
}
main().catch((err) => {
console.error("Error running sample:", err.message);
});
其他範例
有更多範例可在存放庫中取得。 請檢閱 readme 檔案以取得最新更新的範例。
媒體服務 JavaScript/TypeScript 開發人員的參考
- npm install @azure/arm-mediaservices
- 適用於 Node.js 的 Azure 媒體服務模組參考文件
- 適用於 JavaScript 的 Azure & Node.js 開發人員
- Media Services source code in the @azure/azure-sdk-for-js Git Hub repo
- 適用於 Node.js 開發人員的 Azure 套件文件
- 媒體服務概念
- 適用於 JavaScript 的 Azure & Node.js 開發人員
- Media Services source code in the @azure/azure-sdk-for-js repo
取得說明及支援
您可以連絡媒體服務並詢問問題,或依照下列其中一種方法追蹤我們的更新:
- 問與答
-
Stack Overflow。 使用
azure-media-services
標記問題。 - @MSFTAzureMedia 或使用 @AzureSupport 來要求支援。
- 透過 Azure 入口網站 開啟支援票證。