Azure Provisioning core library for JavaScript

@azure/provisioning-corefornisce il modello di authoring condiviso per le librerie di risorse di provisioning Azure.

Come iniziare

Crea uno stack di deployment, poi collega risorse allo stack o a un altro componente di provisioning:

import { Stack, ResourceGroup, fn } from "@azure/provisioning-core";

const stack = new Stack("application");
new ResourceGroup(stack, {
  name: fn.concat("rg-", fn.uniqueString("application")),
  location: "eastus",
});

Usa l'API core Resource per collegare direttamente una risorsa Key Vault a un gruppo di risorse:

import { Stack, ResourceGroup, Resource, fn } from "@azure/provisioning-core";

const stack = new Stack("keyvault-deployment");
const resourceGroup = new ResourceGroup(stack, {
  name: "rg-keyvault",
  location: "eastus",
});
new Resource(resourceGroup, {
  type: "Microsoft.KeyVault/vaults",
  apiVersion: "2024-11-01",
  name: fn.concat("kv-", fn.uniqueString(resourceGroup.id)),
  location: resourceGroup.location,
  properties: {
    tenantId: "00000000-0000-0000-0000-000000000000",
    sku: { family: "A", name: "standard" },
  },
});

Per classi di risorse tipate specifiche per servizio, vedi l'esempio di provisioning di Key Vault.

Le definizioni di provisioning vengono redate prima della distribuzione. Le proprietà delle risorse in sola lettura rimangono disponibili come espressioni per il cablaggio degli output e delle risorse dipendenti, mentre solo proprietà scrivibili possono essere assegnate.

Discriminatori a tempo di dispiegamento

Le proprietà del discriminatore usano tipi letterali così TypeScript può selezionare il membro di unione corretto. Quando un discriminatore proviene da un'espressione in tempo di distribuzione, si usa asDiscriminator per selezionare la variante prevista mantenendo il controllo del tipo per le sue altre proprietà:

import { ParameterCollection, asDiscriminator } from "@azure/provisioning-core";

type Rule =
  | {
      kind: "cache";
      cacheKind: "long" | "short";
      days: number;
    }
  | {
      kind: "redirect";
      url: string;
    };
const ruleKind = new ParameterCollection().add("ruleKind", "string", {
  allowed: ["cache"],
});
const widget: {
  properties: {
    primaryRule?: Rule;
  };
} = {
  properties: {},
};
widget.properties.primaryRule = {
  kind: asDiscriminator(ruleKind),
  cacheKind: "long",
  days: 7,
};

Preferisci i discriminatori letterali ogni volta che è possibile. asDiscriminator non valida il valore del tempo di distribuzione; limita il parametro al letterale previsto usando allowed.