Azure Provisioning core library untuk JavaScript

@azure/provisioning-coremenyediakan model penulisan bersama untuk pustaka sumber daya penyediaan Azure.

Memulai Langkah Pertama

Buat stack deployment, lalu lampirkan sumber daya ke stack atau ke komponen provisioning lain:

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",
});

Gunakan API inti Resource untuk menghubungkan sumber daya Key Vault langsung ke grup sumber daya:

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" },
  },
});

Untuk kelas sumber daya bertipe khusus layanan, lihat contoh penyediaan Key Vault.

Definisi provisioning dibuat sebelum penerapan. Properti sumber daya hanya-baca tetap tersedia sebagai ekspresi untuk output kabel dan sumber daya dependen, sementara hanya properti yang dapat ditulis yang dapat ditetapkan.

Diskriminator waktu penyebaran

Properti diskriminator menggunakan tipe literal sehingga TypeScript dapat memilih anggota union yang benar. Ketika discriminator berasal dari ekspresi waktu deployment, gunakan asDiscriminator untuk memilih varian yang dimaksud sambil mempertahankan pemeriksaan tipe untuk properti lainnya:

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,
};

Lebih memilih diskriminator literal kapan pun memungkinkan. asDiscriminator tidak memvalidasi nilai waktu deployment; membatasi parameter ke literal yang dimaksudkan menggunakan allowed.