Anmerkung
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Verwenden Sie die Azure-Clientbibliotheken für JavaScript, um programmgesteuert auf Ihre Azure-Dienste zuzugreifen. In der Regel sind diese Bibliotheken auf den @azure npm-Paket-Scope festgelegt, der von Microsoft1es veröffentlicht wurde.
Unterschiede zwischen Clientbibliotheken und REST-APIs
Verwenden Sie die folgenden Informationen, um zu verstehen, wann welcher Zugriffstyp verwendet werden soll.
- Die Azure-Clientbibliotheken sind die bevorzugte Methode für den Zugriff auf Ihren Azure-Dienst. Diese Bibliotheken abstrahieren den Boilerplate-Code, der erforderlich ist, um cloudbasierte Azure-Plattform-REST-Anforderungen wie Authentifizierung, Wiederholungen und Protokollierung zu handhaben.
-
Azure REST-APIs sind die bevorzugte Methode, wenn Sie:
- Arbeiten mit Vorschaudiensten, für die keine Azure-Clientbibliotheken verfügbar sind. Berücksichtigen Sie Ihren Code als Vorschau, der aktualisiert werden soll, wenn der Dienst allgemein in Clientbibliotheken verfügbar ist.
- Sie möchten REST-Aufrufe direkt ausführen, da sie nicht möchten, dass das gesamte SDK eine einzelne REST-API verwendet, oder Sie möchten eine tiefere Kontrolle über die HTTP-Anforderungen haben.
Azure-Client- und Verwaltungsbibliotheken
Die Versionen der Azure-Clientbibliothek sind verfügbar als:
-
Verwaltung: Mithilfe von Verwaltungsbibliotheken können Sie Azure-Ressourcen erstellen und verwalten. Sie können diese Bibliotheken anhand von
arm-in ihren Paketnamen erkennen. Der Begriffarmgibt den Azure Resource Manager an. -
Client: Da bereits eine Azure-Ressource vorhanden ist, verwenden Sie die Clientbibliotheken, um sie zu nutzen und damit zu interagieren.
- Jedes Paket README.md enthält Dokumentation und Beispiele.
Installieren von Azure npm-Paketen
Azure-Clientbibliotheken sind frei über NPM und Yarn verfügbar. Installieren Sie einzelne SDKs nach Bedarf. Jedes SDK stellt TypeScript-Definitionen bereit.
Für die Client-/Browserverwendung müssen Azure-Clientbibliotheken zu Ihrem Bündelungsprozess hinzugefügt werden.
Verwenden Sie den Beispielcode für das Azure npm-Paket
Jedes Paket enthält Dokumentationen, mit denen Sie schnell mit dem Paket beginnen können. In der Dokumentation des jeweiligen Pakets erfahren Sie, wie Sie sie verwenden.
Bereitstellen von Authentifizierungsanmeldeinformationen
Für die Azure-Clientbibliotheken sind Anmeldeinformationen erforderlich, um sich bei der Azure-Plattform zu authentifizieren. Anmeldeinformationsklassen, die von @azure/identity bereitgestellt werden, bieten mehrere Vorteile:
- Schnelle Einarbeitung
- Sicherste Methode
- Trennen Sie den Authentifizierungsmechanismus vom Code. Auf diese Weise können Sie denselben Code lokal und auf der Azure-Plattform verwenden, während sich die Anmeldeinformationen unterscheiden.
- Stellen Sie eine verkettete Authentifizierung bereit, damit mehrere Mechanismen verfügbar sein können.
Erstellen eines SDK-Clients und Aufrufmethoden
Nachdem Sie programmgesteuert eine Anmeldeinformation erstellt haben, übergeben Sie die Anmeldeinformationen an Ihren Azure-Client. Der Client benötigt möglicherweise zusätzliche Informationen, z. B. eine Abonnement-ID oder einen Dienstendpunkt. Diese Werte sind im Azure-Portal für Ihre Ressource verfügbar.
Das folgende Codebeispiel verwendet DefaultAzureCredential und die @azure/arm-resources-Clientbibliothek, um Ressourcengruppen aufzulisten, deren Lesezugriff durch diese Berechtigungen ermöglicht wird.
import { DefaultAzureCredential } from "@azure/identity";
import { ResourceManagementClient } from "@azure/arm-resources";
const subscriptionId = process.env.AZURE_SUBSCRIPTION_ID!;
if (!subscriptionId) {
throw new Error("AZURE_SUBSCRIPTION_ID environment variable is not set.");
}
console.log(`Using Subscription ID: ${subscriptionId}`);
async function main() {
const credential = new DefaultAzureCredential();
const client = new ResourceManagementClient(credential, subscriptionId);
let i=0;
for await (const item of client.resourceGroups.list()) {
console.log(`${++i}: ${item.name}`);
}
console.log(`Found ${i} resource group(s).`);
}
main().catch((err) => {
console.error(err);
});
Asynchrones Paging von Ergebnissen
Eine SDK-Methode kann einen asynchronen Iterator , PagedAsyncIterableIterator, zurückgeben, um asynchrone Ergebnisse zu ermöglichen. Die Ergebnisse können Paging- und Fortsetzungstoken verwenden, um Resultsets aufzulösen.
Im folgenden JavaScript-Beispiel wird das asynchrone Paging veranschaulicht. Der Code legt eine künstlich kurze Paginggröße von 2 fest, um den Prozess schnell und visuell zu veranschaulichen, wenn Sie den Beispielcode im Debugvorgang ausführen.
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)
);
Erfahren Sie mehr über Paging und Iteratoren in Azure:
Lang andauernde Vorgänge
Eine SDK-Methode kann eine unformatierte Antwort (Long Running Operation, LRO) zurückgeben. Diese Antwort enthält Informationen, einschließlich:
- Ihre Anforderung wurde abgeschlossen.
- Ihre Anforderung wird noch verarbeitet.
Im folgenden JavaScript-Beispiel wird veranschaulicht, wie gewartet wird, bis ein LRO abgeschlossen ist, mit .pollUntildone(), bevor der Vorgang fortgesetzt wird.
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)
);
Erfahren Sie mehr über vorgänge mit langer Ausführung in Azure:
Abbrechen asynchroner Vorgänge
Das @azure/abort-controller-Paket stellt AbortController- und AbortSignal-Klassen bereit. Verwenden Sie "AbortController", um ein AbortSignal zu erstellen, das dann an Azure SDK-Vorgänge übergeben werden kann, um ausstehende Arbeiten abzubrechen. Azure SDK-Vorgänge können folgendes sein:
- Abgebrochen basierend auf Ihrer eigenen Logik
- Abgebrochen aufgrund eines Timeout-Limits
- Abgebrochen aufgrund des Signals einer Elternaufgabe
- Abgebrochen aufgrund eines Signals einer übergeordneten Aufgabe oder einer Zeitüberschreitungsgrenze
Weitere Informationen:
Ausführliche Protokollierung aus dem SDK
Wenn Sie das Azure SDK verwenden, kann es vorkommen, dass Sie Ihre Anwendung debuggen müssen.
Um die Protokollierung zur Buildzeit zu aktivieren, legen Sie die AZURE_LOG_LEVEL Umgebungsvariable auf
info.Um die Protokollierung zur Laufzeit zu aktivieren, verwenden Sie das @azure/Logger-Paket :
import { setLogLevel } from "@azure/logger"; setLogLevel("info");
Bündelung
Erfahren Sie mehr über die Bündelung mit dem Azure SDK: