Použití sad Azure SDK pro JavaScript a TypeScript
K programovému přístupu ke službám Azure použijte sady Azure SDK pro JavaScript. Tyto sady SDK jsou obvykle vymezeny s rozsahem balíčku @azure npm publikovaným pomocí Azure-SDK.
Rozdíly mezi sadami SDK a rozhraními REST API
Následující tabulka vám pomůže pochopit, kdy použít daný typ mechanismu přístupu.
| Sady Azure SDK (doporučeno) | Rozhraní REST API platformy Azure |
|---|---|
| Azure SDK jsou upřednostňovanou metodou přístupu ke službě Azure. Sady Azure SDK si vyříznout často používaný kód potřebný ke správě cloudových požadavků REST Azure, jako je ověřování, opakování a protokolování. | Rozhraní Azure REST API jsou upřednostňovanou metodou, pokud jste:
|
Klientské a knihovny pro správu Azure
Vydání sady Azure SDK jsou k dispozici jako:
- Sady SDK pro správu: knihovny pro správu umožňují zřizovat a spravovat prostředky Azure prostřednictvím Azure Resource Manager (ARM). Tyto knihovny můžete rozpoznat
@azure/arm-v jejich názvech balíčků. - Klientské sady SDK: vzhledem k tomu, že už existuje prostředek Azure, použijete klientské knihovny k jeho využívání a interakci s ním.
- Každý balíček README.md obsahuje dokumentaci a ukázky.
Nainstalovat balíčky Azure npm
Sady Azure SDK jsou volně dostupné z npm. Nainstalujte jednotlivé sady SDK. Každá sada SDK poskytuje definice TypeScript.
V případě použití klienta nebo prohlížeče je nutné do procesu sdružování přidat sady Azure SDK.
Použití ukázkového kódu pro balíček Azure npm
Každý balíček obsahuje dokumentaci, která vám umožní rychle začít s balíčkem. Podívejte se na konkrétní NPM balíčky, které používáte, a Naučte se je používat.
Zadat přihlašovací údaje pro ověřování
Sady Azure SDK vyžadují přihlašovací údaje pro ověření na platformě Azure. Třídy přihlašovacích údajů poskytované @azure/identity poskytují několik výhod:
- Rychlé zprovoznění
- Nejbezpečnější způsob
- Oddělte mechanismus ověřování od kódu. To vám umožní používat stejný kód místně a na platformě Azure, když se přihlašovací údaje liší.
- Poskytněte zřetězené ověřování, aby mohlo být k dispozici několik mechanismů.
Vytvoření klienta sady SDK a volání metod
Po programovém vytvoření přihlašovacích údajů předejte přihlašovací údaje klientovi Azure SDK. Klient může vyžadovat další informace, jako je ID předplatného nebo adresa URL služby. Tyto hodnoty jsou k dispozici v Azure Portal pro váš prostředek.
Vypíše odběry, ke kterým má toto pověření přístup.
const { ClientSecretCredential, DefaultAzureCredential } = require("@azure/identity");
const { SubscriptionClient } = require("@azure/arm-subscriptions");
let credentials = null;
const tenantId = process.env["AZURE_TENANT_ID"] || "REPLACE-WITH-YOUR-TENANT-ID";
const clientId = process.env["AZURE_CLIENT_ID"] || "REPLACE-WITH-YOUR-CLIENT-ID";
const secret = process.env["AZURE_CLIENT_SECRET"] || "REPLACE-WITH-YOUR-CLIENT-SECRET";
if(process.env.production){
// production
credentials = new DefaultAzureCredential();
}else{
// development
credentials = new ClientSecretCredential(tenantId, clientId, secret);
console.log("development");
}
// use credential to authenticate with Azure SDKs
let client = new SubscriptionClient(credentials);
const subscriptions = async() =>{
// get list of Azure subscriptions
const listOfSubscriptions = await client.subscriptions.list();
// get details of each subscription
for (const item of listOfSubscriptions) {
const subscriptionDetails = await client.subscriptions.get(item.subscriptionId);
/*
Each item looks like:
{
id: '/subscriptions/123456',
subscriptionId: '123456',
displayName: 'YOUR-SUBSCRIPTION-NAME',
state: 'Enabled',
subscriptionPolicies: {
locationPlacementId: 'Internal_2014-09-01',
quotaId: 'Internal_2014-09-01',
spendingLimit: 'Off'
},
authorizationSource: 'RoleBased'
},
*/
console.log(subscriptionDetails)
}
}
subscriptions()
.then(()=>console.log("done"))
.catch(ex=>console.log(ex))
Asynchronní stránkování výsledků
Metoda sady SDK může vracet asynchronní iterátory, PagedAsyncIterableIterator, aby bylo možné použít asynchronní výsledky. Výsledky mohou použít stránkování a pokračování tokeny k rozdělení sad výsledků.
Následující příklad JavaScriptu ukazuje asynchronní stránkování. Kód nastaví umělou velikost stránkovacího souboru 2, aby rychle a vizuálně ukázala proces při spuštění ukázkového kódu v ladění.
const { BlobServiceClient } = require("@azure/storage-blob");
const blobAccountConnectionString = "REPLACE-WITH-YOUR-STORAGE-CONNECTION-STRING";
const blobAccountContainerName = "REPLACE-WITH-YOUR-STORAGE-CONTAINER-NAME";
const pageSize = 2;
const list = async () => {
console.log(`List`);
let continuationToken = "";
let currentPage = 1;
let containerClient=null;
let currentItem = 1;
// Get Blob Container - need to have items in container before running this code
const blobServiceClient = BlobServiceClient.fromConnectionString(blobAccountConnectionString);
containerClient = blobServiceClient.getContainerClient(blobAccountContainerName);
do {
// Get Page of Blobs
iterator = (continuationToken != "")
? containerClient.listBlobsFlat().byPage({ maxPageSize: pageSize, continuationToken })
: containerClient.listBlobsFlat().byPage({ maxPageSize: pageSize });
page = (await iterator.next()).value;
// Display list
if (page.segment?.blobItems) {
console.log(`\tPage [${currentPage}] `);
for (const blob of page.segment.blobItems) {
console.log(`\t\tItem [${currentItem++}] ${blob.name}`);
}
};
// Move to next page
continuationToken = page.continuationToken;
if (continuationToken) {
currentPage++;
}
} while (continuationToken != "")
}
list(() => {
console.log("done");
}).catch((ex) =>
console.log(ex)
);
Další informace o stránkování a iterátorech v Azure:
Dlouhotrvající operace
Metoda sady SDK může vrátit odpověďs dlouhou dobou provozu (LRO). Tato odpověď zahrnuje informace, včetně:
- Vaše žádost se dokončila.
- Vaše žádost se pořád zpracovává.
Následující příklad JavaScriptu ukazuje, jak počkat na dokončení LRO, s před pokračováním.
const { BlobServiceClient } = require("@azure/storage-blob");
const blobAccountConnectionString = "REPLACE-WITH-YOUR-STORAGE-CONNECTION-STRING";
const blobAccountContainerName = `test-${Date.now().toString()}`;
const files = [
{
"url": "https://github.com/Azure/azure-sdk-for-js/blob/main/README.md",
"fileName": "README.md"
},
{
"url": "https://github.com/Azure/azure-sdk-for-js/blob/main/gulpfile.ts",
"fileName": "gulpfile.ts"
},
{
"url": "https://github.com/Azure/azure-sdk-for-js/blob/main/rush.json",
"fileName": "rush.json"
},
{
"url": "https://github.com/Azure/azure-sdk-for-js/blob/main/package.json",
"fileName": "package.json"
},
{
"url": "https://github.com/Azure/azure-sdk-for-js/blob/main/tsdoc.json",
"fileName": "tsdoc.json"
},
];
const upload = async() => {
// get container client
const blobServiceClient = BlobServiceClient.fromConnectionString(blobAccountConnectionString);
// get container's directory client
const containerClient = blobServiceClient.getContainerClient(blobAccountContainerName);
files.forEach(async(file) =>{
await (
await containerClient
.getBlobClient(file.fileName)
.beginCopyFromURL(file.url)
).pollUntilDone();
})
}
upload(() => {
console.log("done");
}).catch((ex) =>
console.log(ex)
);
Další informace o dlouhodobě běžících operacích v Azure:
Rušení asynchronních operací
Balíček @azure/Abort-Controller poskytuje třídy AbortController a AbortSignal. Pomocí AbortController vytvořte AbortSignal, které se pak dají předat operacím Azure SDK a zrušit tak probíhající práci. Operace Azure SDK můžou být:
- Přerušeno na základě vlastní logiky
- Přerušeno na základě časového limitu
- Přerušeno na základě signálu nadřazené úlohy
- Přerušeno na základě signálu nadřazené úlohy nebo časového limitu
Další informace:
Podrobné protokolování z SDK
Pokud používáte sadu Azure SDK, může nastat situace, kdy potřebujete ladit aplikaci.
Chcete-li povolit protokolování v době sestavení, nastavte proměnnou prostředí AZURE_LOG_LEVEL na .
Pokud chcete povolit protokolování v době běhu, použijte balíček @azure/Logger :
import { setLogLevel } from "@azure/logger"; setLogLevel("info");
Sdružování
Další informace o sdružování pomocí sady Azure SDK: