Biblioteka klienta usługi App Configuration dla języka JavaScript
azure App Configuration to usługa zarządzana, która ułatwia deweloperom proste i bezpieczne scentralizowanie ustawień aplikacji i funkcji.
Użyj biblioteki klienta dla usługi App Configuration, aby:
- Tworzenie elastycznych reprezentacji kluczy i mapowań
- Tagowanie kluczy z etykietami
- Ustawienia odtwarzania z dowolnego punktu w czasie
- Zarządzanie migawkami konfiguracji aplikacji
Kluczowe linki:
- Kod źródłowy
- pakietu
(NPM) - Dokumentacja referencyjna interfejsu API
- dokumentacja produktu
- Samples
Wprowadzenie
Instalowanie pakietu
npm install @azure/app-configuration
Obecnie obsługiwane środowiska
- wersje Node.js LTS
- Najnowsze wersje przeglądarek Safari, Chrome, Edge i Firefox.
Aby uzyskać więcej informacji, zobacz nasze zasad pomocy technicznej.
Warunki wstępne
- subskrypcji platformy Azure
- Zasób
App Configuration
Tworzenie zasobu usługi App Configuration
Aby utworzyć zasób usługi Azure App Configuration, możesz użyć
Przykład (interfejs wiersza polecenia platformy Azure):
az appconfig create --name <app-configuration-resource-name> --resource-group <resource-group-name> --location eastus
Uwierzytelnianie klienta
Element AppConfigurationClient może uwierzytelniać się przy użyciu jednostki usługi
Uwierzytelnianie za pomocą jednostki usługi
Uwierzytelnianie za pośrednictwem jednostki usługi odbywa się przez:
- Tworzenie poświadczeń przy użyciu pakietu
@azure/identity
. - Ustawianie odpowiednich reguł kontroli dostępu opartej na rolach dla zasobu AppConfiguration. Więcej informacji na temat ról usługi App Configuration można znaleźć tutaj.
Korzystanie z DefaultAzureCredential
const azureIdentity = require("@azure/identity");
const appConfig = require("@azure/app-configuration");
const credential = new azureIdentity.DefaultAzureCredential();
const client = new appConfig.AppConfigurationClient(
endpoint, // ex: <https://<your appconfig resource>.azconfig.io>
credential
);
Więcej informacji na temat @azure/identity
można znaleźć tutaj,
Suwerenne chmury
Aby uwierzytelnić się przy użyciu zasobu w Suwerennej chmurze, należy ustawić authorityHost
w opcjach poświadczeń lub za pomocą zmiennej środowiskowej AZURE_AUTHORITY_HOST
.
const { AppConfigurationClient } = require("@azure/app-configuration");
const { DefaultAzureCredential, AzureAuthorityHosts } = require("@azure/identity");
// Create an AppConfigurationClient that will authenticate through AAD in the China cloud
const client = new AppConfigurationClient(
endpoint, // ex: <https://<your appconfig resource>.azconfig.azure.cn>
new DefaultAzureCredential({ authorityHost: AzureAuthorityHosts.AzureChina })
);
Więcej informacji na temat @azure/identity
można znaleźć tutaj,
Uwierzytelnianie przy użyciu parametrów połączenia
Aby uzyskać podstawowe parametry połączenia dla zasobu usługi App Configuration, możesz użyć tego polecenia interfejsu wiersza polecenia platformy Azure:
az appconfig credential list -g <resource-group-name> -n <app-configuration-resource-name> --query "([?name=='Primary'].connectionString)[0]"
W kodzie możesz teraz utworzyć klienta usługi App Configuration przy użyciu parametrów połączenia uzyskanych z interfejsu wiersza polecenia platformy Azure:
const client = new AppConfigurationClient("<connection string>");
Kluczowe pojęcia
AppConfigurationClient
zawiera pewne zmiany w terminologii z usługi App Configuration w portalu.
- Pary klucz/wartość są reprezentowane jako obiekty
ConfigurationSetting
- Blokowanie i odblokowywanie ustawienia jest reprezentowane w polu
isReadOnly
, które można przełączać przy użyciusetReadOnly
. - Migawki są reprezentowane jako obiekty
ConfigurationSnapshot
.
Klient stosuje prostą metodologię projektowania — ConfigurationSetting
można przekazać do dowolnej metody, która przyjmuje ConfigurationSettingParam
lub ConfigurationSettingId
.
Oznacza to, że ten wzorzec działa:
const setting = await client.getConfigurationSetting({
key: "hello"
});
setting.value = "new value!";
await client.setConfigurationSetting(setting);
// fields unrelated to just identifying the setting are simply
// ignored (for instance, the `value` field)
await client.setReadOnly(setting, true);
// delete just needs to identify the setting so other fields are
// just ignored
await client.deleteConfigurationSetting(setting);
lub, na przykład, ponowne uzyskanie ustawienia:
let setting = await client.getConfigurationSetting({
key: "hello"
});
// re-get the setting
setting = await client.getConfigurationSetting(setting);
Wersja interfejsu API 2022-11-01-preview
obsługuje migawki konfiguracji: niezmienne kopie magazynu konfiguracji do punktu w czasie. Migawki można tworzyć za pomocą filtrów, które określają, które pary klucz-wartość znajdują się w migawce, tworząc niezmienny widok magazynu konfiguracji. Ta funkcja umożliwia aplikacjom utrzymywanie spójnego widoku konfiguracji, zapewniając, że nie ma niezgodności wersji z poszczególnymi ustawieniami z powodu odczytu w miarę wprowadzania aktualizacji. Na przykład ta funkcja może służyć do tworzenia "migawek konfiguracji wydania" w ramach usługi App Configuration. Zobacz tworzenia i pobierania sekcji migawki w poniższym przykładzie.
Przykłady
Tworzenie i pobieranie ustawienia
const appConfig = require("@azure/app-configuration");
const client = new appConfig.AppConfigurationClient(
"<App Configuration connection string goes here>"
);
async function run() {
const newSetting = await client.setConfigurationSetting({
key: "testkey",
value: "testvalue",
// Labels allow you to create variants of a key tailored
// for specific use-cases like supporting multiple environments.
// /azure/azure-app-configuration/concept-key-value#label-keys
label: "optional-label"
});
const retrievedSetting = await client.getConfigurationSetting({
key: "testkey",
label: "optional-label"
});
console.log("Retrieved value:", retrievedSetting.value);
}
run().catch((err) => console.log("ERROR:", err));
Tworzenie migawki
beginCreateSnapshot
daje narzędzie poller do sondowania utworzenia migawki.
const { AppConfigurationClient } = require("@azure/app-configuration");
const client = new AppConfigurationClient(
"<App Configuration connection string goes here>"
);
async function run() {
const key = "testkey";
const value = "testvalue";
const label = "optional-label";
await client.addConfigurationSetting({
key,
value,
label
});
const poller = await client.beginCreateSnapshot({
name:"testsnapshot",
retentionPeriod: 2592000,
filters: [{keyFilter: key, labelFilter: label}],
});
const snapshot = await poller.pollUntilDone();
}
run().catch((err) => console.log("ERROR:", err));
Możesz również użyć beginCreateSnapshotAndWait
, aby uzyskać wynik utworzenia bezpośrednio po zakończeniu sondowania.
const snapshot = await client.beginCreateSnapshotAndWait({
name:"testsnapshot",
retentionPeriod: 2592000,
filters: [{keyFilter: key, labelFilter: label}],
});
Pobieranie migawki
const retrievedSnapshot = await client.getSnapshot("testsnapshot");
console.log("Retrieved snapshot:", retrievedSnapshot);
Wyświetlanie listy ConfigurationSetting
w migawce
const retrievedSnapshotSettings = await client.listConfigurationSettingsForSnapshot("testsnapshot");
for await (const setting of retrievedSnapshotSettings) {
console.log(`Found key: ${setting.key}, label: ${setting.label}`);
}
Wyświetlanie listy wszystkich migawek z usługi
const snapshots = await client.listSnapshots();
for await (const snapshot of snapshots) {
console.log(`Found snapshot: ${snapshot.name}`);
}
Odzyskiwanie i archiwizowanie migawki
// Snapshot is in ready status
const archivedSnapshot = await client.archiveSnapshot("testsnapshot");
console.log("Snapshot updated status is:", archivedSnapshot.status);
// Snapshot is in archive status
const recoverSnapshot = await client.recoverSnapshot("testsnapshot");
console.log("Snapshot updated status is:", recoverSnapshot.status);
Rozwiązywanie problemów
Wyrąb
Włączenie rejestrowania może pomóc odkryć przydatne informacje o błędach. Aby wyświetlić dziennik żądań i odpowiedzi HTTP, ustaw zmienną środowiskową AZURE_LOG_LEVEL
na info
. Alternatywnie rejestrowanie można włączyć w czasie wykonywania, wywołując setLogLevel
w @azure/logger
:
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
Aby uzyskać bardziej szczegółowe instrukcje dotyczące włączania dzienników, zapoznaj się z dokumentami dotyczącymi pakietów @azure/rejestratora.
Obsługa oprogramowania React Native
Platforma React Native nie obsługuje niektórych interfejsów API języka JavaScript używanych przez tę bibliotekę ZESTAWU SDK, dlatego należy podać dla nich polyfills. Aby uzyskać więcej szczegółów, zobacz nasz przykład React Native z Expo.
Następne kroki
W poniższych przykładach przedstawiono różne sposoby interakcji z usługą App Configuration:
-
helloworld.ts
— pobieranie, ustawianie i usuwanie wartości konfiguracji. -
helloworldWithLabels.ts
— użyj etykiet, aby dodać dodatkowe wymiary do ustawień dla scenariuszy, takich jak wersja beta a produkcja. -
optimisticConcurrencyViaEtag.ts
— ustaw wartości przy użyciu elementów etag, aby zapobiec przypadkowemu zastąpieniu. -
setReadOnlySample.ts
— ustawienia oznaczania jako tylko do odczytu, aby zapobiec modyfikacji. -
getSettingOnlyIfChanged.ts
— pobierz ustawienie tylko wtedy, gdy zmieniono je od czasu ostatniego jego uzyskania. -
listRevisions.ts
— wyświetl listę poprawek klucza, umożliwiając wyświetlanie poprzednich wartości i ich ustawienie. -
secretReference.ts
— SecretReference reprezentuje ustawienie konfiguracji, które odwołuje się do klucza tajnego usługi KeyVault. -
snapshot.ts
— tworzenie, wyświetlanie listy ustawień konfiguracji i archiwizowanie migawek. -
featureFlag.ts
— flagi funkcji to ustawienia zgodne z określonym schematem JSON dla wartości.
Więcej szczegółowych przykładów można znaleźć w folderze przykłady
Przyczyniając się
Jeśli chcesz współtworzyć tę bibliotekę, przeczytaj przewodnik dotyczący współtworzenia , aby dowiedzieć się więcej na temat tworzenia i testowania kodu.
Testy tego modułu to kombinacja testów na żywo i testów jednostkowych, które wymagają wystąpienia usługi Azure App Configuration. Aby wykonać testy, należy uruchomić:
rush update
rush build -t @azure/app-configuration
- Utwórz plik env o następującej zawartości w folderze
sdk\appconfiguration\app-configuration
:APPCONFIG_CONNECTION_STRING=connection string for your App Configuration instance
cd sdk\appconfiguration\app-configuration
-
npm run test
.
Aby uzyskać więcej informacji, zobacz nasze testy folderze.
Powiązane projekty
- zestaw SDK platformy Microsoft Azure dla języka JavaScript
- Konfiguracja aplikacja systemu Azure
Azure SDK for JavaScript