Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Para acessar programaticamente seus serviços do Azure, use as bibliotecas de clientes do Azure para JavaScript. Normalmente, essas bibliotecas têm como escopo o pacote npm @azure publicado por microsoft1es.
Diferenças entre bibliotecas de cliente e APIs REST
Use as informações a seguir para entender quando usar qual tipo de acesso.
- As bibliotecas de cliente do Azure são o método preferencial para acessar seu serviço do Azure. Essas bibliotecas abstraem o código clichê necessário para gerenciar solicitações REST da plataforma do Azure baseadas em nuvem, como autenticação, repetições e registro em log.
- As APIs REST do Azure serão o método preferencial se você:
- Trabalhando com serviços de visualização que não têm bibliotecas de clientes do Azure disponíveis. Considere seu código como versão prévia, que deve ser atualizado quando o serviço estiver geralmente disponível com bibliotecas de cliente.
- Deseja fazer chamadas REST diretamente porque você não deseja que todo o SDK use uma única API REST ou deseja um controle mais profundo sobre as solicitações HTTP.
Bibliotecas de cliente e gerenciamento do Azure
As versões da biblioteca de clientes do Azure estão disponíveis como:
- Management: as bibliotecas de gerenciamento permitem que você crie e gerencie recursos do Azure. Você pode reconhecer essas bibliotecas por
arm-em seus nomes de pacote. O termoarmindica o Azure Resource Manager. - cliente: dado que já existe um recurso do Azure, use as bibliotecas de cliente para consumi-lo e interagir com ele.
- Cada pacote README.md inclui documentação e exemplos.
Instalar pacotes npm do Azure
As bibliotecas de cliente do Azure estão disponíveis gratuitamente no NPM e Yarn. Instale SDKs individuais conforme necessário. Cada SDK fornece definições de TypeScript.
Para o uso do cliente/navegador, as bibliotecas de cliente do Azure precisam ser adicionadas ao seu processo de agrupamento.
Usar o código de exemplo do pacote npm do Azure
Cada pacote inclui documentação para começar rapidamente com o pacote. Consulte a documentação do pacote específico que você usa para saber como usá-los.
Fornecer credenciais de autenticação
As bibliotecas de clientes do Azure exigem credenciais para autenticação na plataforma Azure. As classes de credenciais fornecidas por @azure/identity oferecem vários benefícios:
- Incorporação rápida
- Método mais seguro
- Separe o mecanismo de autenticação do código. Isso permite que você use o mesmo código localmente e na plataforma do Azure enquanto as credenciais são diferentes.
- Forneça autenticação encadeada para que vários mecanismos possam estar disponíveis.
Criar um cliente SDK e métodos de chamada
Depois de criar programaticamente uma credencial, passe a credencial para o cliente do Azure. O cliente pode exigir informações adicionais, como uma ID da assinatura ou um ponto de extremidade de serviço. Esses valores estão disponíveis no portal do Azure para seu recurso.
O exemplo de código a seguir usa o DefaultAzureCredential e a biblioteca de clientes de assinatura arm para listar assinaturas às quais essa credencial tem acesso à leitura.
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);
});
Paginação assíncrona de resultados
Um método SDK pode retornar um iterador assíncrono, PagedAsyncIterableIterator, para permitir resultados assíncronos. Os resultados podem usar tokens de paginação e de continuação para separar conjuntos de resultados.
O exemplo javaScript a seguir demonstra a paginação assíncrona. O código define um tamanho de paginação artificialmente curto de 2 para demonstrar o processo de maneira rápida e visual quando você executar o código de exemplo na depuração.
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)
);
Saiba mais sobre paginação e iteradores no Azure:
Operações de longa duração
Um método SDK pode retornar uma resposta bruta de LRO (operação de execução prolongada) . Essa resposta inclui informações, incluindo:
- Sua solicitação concluída
- Sua solicitação ainda está em processo
O exemplo de JavaScript a seguir demonstra como aguardar a conclusão de um LRO, com .pollUntildone(), antes de continuar.
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)
);
Saiba mais sobre operações de execução prolongada no Azure:
Cancelando operações assíncronas
O pacote @azure/abort-controller fornece as classes AbortController e AbortSignal. Use o AbortController para criar um AbortSignal, que pode ser passado para operações do SDK do Azure para cancelar o trabalho pendente. As operações do SDK do Azure podem ser:
- Anulada com base em sua própria lógica
- Anulada com base em um tempo limite
- Anulada com base no sinal de uma tarefa pai
- Anulada com base no sinal de uma tarefa pai ou em um tempo limite
Saiba Mais:
Log detalhado do SDK
Quando você está usando o SDK do Azure, pode haver momentos em que você precisa depurar seu aplicativo.
Para habilitar o registro em log no tempo de build, defina a variável de ambiente AZURE_LOG_LEVEL como
info.Para ativar o registro em run-time, use o pacote @azure/logger:
import { setLogLevel } from "@azure/logger"; setLogLevel("info");
Agrupamento
Saiba mais sobre o agrupamento com o SDK do Azure: