Korzystanie z zestawów SDK platformy Azure dla języków JavaScript i TypeScript
Aby programowo uzyskać dostęp do usług platformy Azure, użyj zestawów SDK platformy Azure dla języka JavaScript. Zazwyczaj te zestawy SDK są ograniczone do zakresu pakietów @azure npm opublikowanego przez zestaw azure-sdk.
Różnice między zestawami SDK i interfejsami API REST
Skorzystaj z poniższych informacji, aby dowiedzieć się, kiedy używać jakiego typu mechanizmu dostępu.
- Zestawy SDK platformy Azure to preferowana metoda uzyskiwania dostępu do usługi platformy Azure. Zestawy SDK platformy Azure oddzielają standardowy kod wymagany do zarządzania żądaniami REST platformy Azure opartymi na chmurze, takimi jak uwierzytelnianie, ponawianie prób i rejestrowanie.
- Interfejsy API REST platformy Azure są preferowaną metodą, jeśli:
- Praca z usługami w wersji zapoznawczej, które nie mają dostępnych zestawów SDK platformy Azure. Weź pod uwagę kod jako podgląd, który powinien zostać zaktualizowany, gdy usługa jest ogólnie dostępna za pomocą zestawów SDK.
- Chcesz wykonywać wywołania REST bezpośrednio, ponieważ nie chcesz, aby cały zestaw SDK używał pojedynczego interfejsu API REST lub chcesz mieć głębszą kontrolę nad żądaniami HTTP.
Biblioteki klienta i zarządzania platformy Azure
Wersje zestawu Azure SDK są dostępne jako:
- Zestawy SDK zarządzania: biblioteki zarządzania umożliwiają aprowizację zasobów platformy Azure i zarządzanie nimi za pośrednictwem usługi Azure Resource Manager (ARM). Te biblioteki
@azure/arm-
można rozpoznać w nazwach pakietów. - Zestawy SDK klienta: biorąc pod uwagę, że zasób platformy Azure już istnieje, należy użyć bibliotek klienckich do korzystania z niego i interakcji z nim.
- Każdy README.md pakietu zawiera dokumentację i przykłady.
Instalowanie pakietów npm platformy Azure
Zestawy SDK platformy Azure są bezpłatnie dostępne w usłudze NPM. Zainstaluj wymagane poszczególne zestawy SDK. Każdy zestaw SDK zawiera definicje języka TypeScript.
W przypadku użycia klienta/przeglądarki zestawy SDK platformy Azure należy dodać do procesu tworzenia pakietów.
Korzystanie z przykładowego kodu pakietu npm platformy Azure
Każdy pakiet zawiera dokumentację, aby szybko rozpocząć pracę z pakietem. Zapoznaj się z konkretnymi pakietami NPM, których używasz, aby dowiedzieć się, jak z nich korzystać.
Podawanie poświadczeń uwierzytelniania
Zestawy SDK platformy Azure wymagają poświadczeń w celu uwierzytelnienia na platformie Azure. Klasy poświadczeń udostępniane przez @azure/tożsamość zapewniają kilka korzyści:
- Szybkie dołączanie
- Najbezpieczniejsza metoda
- Oddziel mechanizm uwierzytelniania od kodu. Dzięki temu można używać tego samego kodu lokalnie i na platformie Azure, gdy poświadczenia są inne.
- Zapewnianie uwierzytelniania łańcuchowego, dzięki czemu można uzyskać dostęp do kilku mechanizmów
Tworzenie klienta zestawu SDK i metod wywoływania
Po programowym utworzeniu poświadczeń przekaż poświadczenie do klienta zestawu Azure SDK. Klient może wymagać dodatkowych informacji, takich jak identyfikator subskrypcji lub adres URL usługi. Te wartości są dostępne w witrynie Azure Portal dla zasobu.
Wyświetl listę subskrypcji, do których ma dostęp ten poświadczenie do odczytu.
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);
});
Asynchroniczne stronicowanie wyników
Metoda zestawu SDK może zwracać iterator asynchroniczny PagedAsyncIterableIterator, aby zezwolić na wyniki asynchroniczne. Wyniki mogą używać tokenów stronicowania i kontynuacji do dzielenia zestawów wyników.
W poniższym przykładzie języka JavaScript pokazano asynchroniczne stronicowanie. Kod ustawia sztucznie krótki rozmiar stronicowania 2, aby szybko i wizualnie zademonstrować proces podczas uruchamiania przykładowego kodu w debugowaniu.
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)
);
Dowiedz się więcej o stronicowaniu i iteratorach na platformie Azure:
Długotrwałe operacje
Metoda zestawu SDK może zwrócić odpowiedź na długotrwałą operację (LRO). Ta odpowiedź zawiera informacje, w tym:
- Żądanie zostało ukończone
- Twoje żądanie jest nadal w toku
W poniższym przykładzie języka JavaScript pokazano, jak poczekać na ukończenie procesu LRO z wartością .pollUntildone()
, zanim przejdziesz dalej.
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)
);
Dowiedz się więcej o długotrwałych operacjach na platformie Azure:
Anulowanie operacji asynchronicznych
Pakiet @azure/abort-controller udostępnia klasy AbortController i AbortSignal. Użyj abortController, aby utworzyć abortSignal, który następnie można przekazać do operacji zestawu Azure SDK, aby anulować oczekujące prace. Operacje zestawu Azure SDK mogą być następujące:
- Przerwane na podstawie własnej logiki
- Przerwane na podstawie limitu czasu
- Przerwane na podstawie sygnału zadania nadrzędnego
- Przerwane na podstawie sygnału zadania nadrzędnego lub limitu czasu
Więcej informacji:
Pełne rejestrowanie z zestawu SDK
W przypadku korzystania z zestawu Azure SDK mogą wystąpić czasy, kiedy trzeba debugować aplikację.
Aby włączyć rejestrowanie w czasie kompilacji, ustaw zmienną środowiskową AZURE_LOG_LEVEL na
info
wartość .Aby włączyć rejestrowanie w czasie wykonywania, użyj pakietu @azure/rejestratora :
import { setLogLevel } from "@azure/logger"; setLogLevel("info");
Łączenie
Dowiedz się więcej o tworzeniu pakietów za pomocą zestawu Azure SDK:
Następne kroki
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla