Použití klientských knihoven Azure pro JavaScript a TypeScript
Pokud chcete přistupovat ke službám Azure prostřednictvím kódu programu, použijte klientské knihovny Azure pro JavaScript. Tyto knihovny jsou obvykle vymezeny oborem @azure oboru balíčku npm publikovaným sadou azure-sdk.
Rozdíly mezi klientskými knihovnami a rozhraními REST API
Následující informace vám porozumí, kdy použít typ přístupu.
- Klientské knihovny Azure jsou upřednostňovanou metodou přístupu ke službě Azure. Tyto knihovny abstrahují často používaný kód potřebný ke správě cloudových požadavků REST platformy Azure, jako jsou ověřování, opakování a protokolování.
- Azure REST API jsou upřednostňovanou metodou, pokud jste:
- Práce se službami Preview, které nemají k dispozici klientské knihovny Azure. Vezměte v úvahu váš kód jako verzi Preview, která by se měla aktualizovat, když je služba obecně dostupná v klientských knihovnách.
- Chcete provádět volání REST přímo, protože nechcete, aby celá sada SDK používala jedno rozhraní REST API nebo chcete mít hlubší kontrolu nad požadavky HTTP.
Klientské knihovny a knihovny pro správu Azure
Verze klientské knihovny Azure jsou k dispozici takto:
- Správa: Knihovny pro správu umožňují vytvářet a spravovat prostředky Azure. Tyto knihovny
arm-
můžete rozpoznat v jejich názvech balíčků. Termín ARM označuje Azure Resource Manager. - Klient: Vzhledem k tomu, že prostředek Azure již existuje, použijte klientské knihovny k jeho využití a interakci s ním.
- Každý balíček README.md zahrnuje dokumentaci a ukázky.
Instalace balíčků Azure npm
Klientské knihovny Azure jsou volně dostupné z NPM. Podle potřeby nainstalujte jednotlivé sady SDK. Každá sada SDK poskytuje definice TypeScriptu.
Pro použití klienta nebo prohlížeče je potřeba do procesu sdružování přidat klientské knihovny Azure.
Použití ukázkového kódu balíčku Azure npm
Každý balíček obsahuje dokumentaci, která vám umožní rychle začít s balíčkem. Informace o jejich používání najdete v konkrétních balíčcích NPM, které používáte.
Zadání přihlašovacích údajů pro ověřování
Klientské knihovny Azure vyžadují přihlašovací údaje k ověření na platformě Azure. Třídy přihlašovacích údajů poskytované @azure/identitou poskytují několik výhod:
- Rychlé onboarding
- Nejbezpečnější metoda
- Oddělte ověřovací mechanismus od kódu. To vám umožní používat stejný kód místně a na platformě Azure, zatímco přihlašovací údaje se liší.
- Poskytovat zřetězený ověřování, aby bylo možné použít několik mechanismů.
Vytvoření klienta sady SDK a metod volání
Po programovém vytvoření přihlašovacích údajů předejte přihlašovací údaje klientovi Azure. Klient může vyžadovat další informace, jako je ID předplatného nebo koncový bod služby. Tyto hodnoty jsou k dispozici na webu Azure Portal pro váš prostředek.
Následující příklad kódu používá DefaultAzureCredential a klientskou knihovnu arm
předplatného k výpisu předplatných, ke kterým má tento přihlašovací údaj přístup ke čtení.
const {
ClientSecretCredential,
DefaultAzureCredential,
} = require("@azure/identity");
const { SubscriptionClient } = require("@azure/arm-subscriptions");
require("dotenv").config();
let credentials = null;
const tenantId = process.env["AZURE_TENANT_ID"];
const clientId = process.env["AZURE_CLIENT_ID"];
const secret = process.env["AZURE_CLIENT_SECRET"];
if (process.env.NODE_ENV && process.env.NODE_ENV === "production") {
// production
credentials = new DefaultAzureCredential();
} else {
// development
if (tenantId && clientId && secret) {
console.log("development");
credentials = new ClientSecretCredential(tenantId, clientId, secret);
} else {
credentials = new DefaultAzureCredential();
}
}
async function listSubscriptions() {
try {
// use credential to authenticate with Azure SDKs
const client = new SubscriptionClient(credentials);
// get details of each subscription
for await (const item of client.subscriptions.list()) {
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);
}
} catch (err) {
console.error(JSON.stringify(err));
}
}
listSubscriptions()
.then(() => {
console.log("done");
})
.catch((ex) => {
console.log(ex);
});
Asynchronní stránkování výsledků
Metoda SADY SDK může vrátit asynchronní iterátor PagedAsyncIterableIterator, který umožňuje asynchronní výsledky. Výsledky můžou používat stránkovací a pokračovací tokeny k rozdělení sad výsledků.
Následující příklad JavaScriptu ukazuje asynchronní stránkování. Kód nastaví uměle krátkou velikost stránkování 2, aby rychle a vizuálně ukázal 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 sdk může vrátit dlouho běžící operaci (LRO) nezpracovanou odpověď. Tato odpověď obsahuje informace, mezi které patří:
- Vaše žádost byla dokončena.
- Váš požadavek je stále v procesu.
Následující příklad JavaScriptu ukazuje, jak počkat na dokončení LRO s .pollUntildone()
, 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 dlouhotrvajících operacích v Azure:
Zrušení asynchronních operací
Balíček @azure/abort-controller poskytuje třídy AbortController a AbortSignal. Pomocí AbortController vytvořte AbortSignal, který pak lze předat operacím sady Azure SDK a zrušit čekající práci. Operace sady Azure SDK můžou být:
- Přerušeno na základě vlastní logiky
- Přerušeno na základě limitu časového limitu
- Přerušeno na základě signálu nadřazeného úkolu
- Přerušeno na základě signálu nadřazeného úkolu nebo limitu časového limitu
Další informace:
Podrobné protokolování ze sady SDK
Při použití sady Azure SDK může docházet k časům, kdy potřebujete ladit aplikaci.
Pokud chcete povolit protokolování v době sestavení, nastavte proměnnou prostředí AZURE_LOG_LEVEL na
info
hodnotu .Pokud chcete povolit protokolování za běhu, použijte balíček @azure/logger:
import { setLogLevel } from "@azure/logger"; setLogLevel("info");
Svazkování
Další informace o sdružování se sadou Azure SDK: