Pustaka klien App Configuration untuk JavaScript
Azure App Configuration adalah layanan terkelola yang membantu pengembang mempusatkan pengaturan aplikasi dan fitur mereka dengan sederhana dan aman.
Gunakan pustaka klien untuk App Configuration untuk:
- Membuat representasi dan pemetaan kunci yang fleksibel
- Tandai kunci dengan label
- Pengaturan pemutaran ulang dari titik waktu mana pun
- Mengelola rekam jepret konfigurasi aplikasi
Tautan kunci:
- Kode sumber
- Paket
(NPM) - dokumentasi referensi API
- dokumentasi produk
- Sampel
Persiapan
Menginstal paket
npm install @azure/app-configuration
Lingkungan yang saat ini didukung
- versi LTS Node.js
- Versi terbaru Safari, Chrome, Edge, dan Firefox.
Lihat kebijakan dukungan
Prasyarat
- Langganan Azure
- Sumber daya App Configuration
Membuat sumber daya App Configuration
Anda dapat menggunakan Portal Azure
Contoh (Azure CLI):
az appconfig create --name <app-configuration-resource-name> --resource-group <resource-group-name> --location eastus
Mengautentikasi klien
AppConfigurationClient dapat mengautentikasi menggunakan perwakilan layanan
Mengautentikasi dengan perwakilan layanan
Autentikasi melalui perwakilan layanan dilakukan dengan:
- Membuat kredensial menggunakan paket
@azure/identity
. - Mengatur aturan RBAC yang sesuai pada sumber daya AppConfiguration Anda. Informasi selengkapnya tentang peran App Configuration dapat ditemukan di sini.
Menggunakan 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
);
Informasi selengkapnya tentang @azure/identity
dapat ditemukan di sini
Sovereign Clouds
Untuk mengautentikasi dengan sumber daya di Sovereign Cloud, Anda harus mengatur authorityHost
dalam opsi kredensial atau melalui variabel lingkungan 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 })
);
Informasi selengkapnya tentang @azure/identity
dapat ditemukan di sini
Mengautentikasi dengan string koneksi
Untuk mendapatkan string koneksi Utama untuk sumber daya App Configuration, Anda dapat menggunakan perintah Azure CLI ini:
az appconfig credential list -g <resource-group-name> -n <app-configuration-resource-name> --query "([?name=='Primary'].connectionString)[0]"
Dan dalam kode, Anda sekarang dapat membuat klien App Configuration dengan string koneksi Anda dapatkan dari Azure CLI:
const client = new AppConfigurationClient("<connection string>");
Konsep utama
AppConfigurationClient
memiliki beberapa perubahan terminologi dari App Configuration di portal.
- Pasangan Kunci/Nilai direpresentasikan sebagai objek
ConfigurationSetting
- Mengunci dan membuka kunci pengaturan diwakili di bidang
isReadOnly
, yang dapat Anda alihkan menggunakansetReadOnly
. - Rekam jepret direpresentasikan sebagai objek
ConfigurationSnapshot
.
Klien mengikuti metodologi desain sederhana - ConfigurationSetting
dapat diteruskan ke metode apa pun yang mengambil ConfigurationSettingParam
atau ConfigurationSettingId
.
Ini berarti pola ini berfungsi:
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);
atau, misalnya, mendapatkan kembali pengaturan:
let setting = await client.getConfigurationSetting({
key: "hello"
});
// re-get the setting
setting = await client.getConfigurationSetting(setting);
Versi API 2022-11-01-preview
mendukung rekam jepret konfigurasi: salinan point-in-time penyimpanan konfigurasi yang tidak dapat diubah. Rekam jepret dapat dibuat dengan filter yang menentukan pasangan kunci-nilai mana yang terkandung dalam rekam jepret, membuat tampilan penyimpanan konfigurasi yang tidak dapat diubah dan disusun. Fitur ini memungkinkan aplikasi untuk menyimpan tampilan konfigurasi yang konsisten, memastikan bahwa tidak ada ketidakcocokan versi pada pengaturan individual karena membaca saat pembaruan dilakukan. Misalnya, fitur ini dapat digunakan untuk membuat "rekam jepret konfigurasi rilis" dalam App Configuration. Lihat membuat dan mendapatkan bagian rekam jepret dalam contoh di bawah ini.
Contoh
Membuat dan mendapatkan pengaturan
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));
Membuat rekam jepret
beginCreateSnapshot
memberi Anda polling untuk polling untuk pembuatan rekam jepret.
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));
Anda juga dapat menggunakan beginCreateSnapshotAndWait
untuk memiliki hasil pembuatan langsung setelah polling selesai.
const snapshot = await client.beginCreateSnapshotAndWait({
name:"testsnapshot",
retentionPeriod: 2592000,
filters: [{keyFilter: key, labelFilter: label}],
});
Mendapatkan rekam jepret
const retrievedSnapshot = await client.getSnapshot("testsnapshot");
console.log("Retrieved snapshot:", retrievedSnapshot);
Mencantumkan ConfigurationSetting
dalam rekam jepret
const retrievedSnapshotSettings = await client.listConfigurationSettingsForSnapshot("testsnapshot");
for await (const setting of retrievedSnapshotSettings) {
console.log(`Found key: ${setting.key}, label: ${setting.label}`);
}
Mencantumkan semua rekam jepret dari layanan
const snapshots = await client.listSnapshots();
for await (const snapshot of snapshots) {
console.log(`Found snapshot: ${snapshot.name}`);
}
Memulihkan dan mengarsipkan rekam jepret
// 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);
Pemecahan masalah
Penebangan
Mengaktifkan pengelogan dapat membantu mengungkap informasi yang berguna tentang kegagalan. Untuk melihat log permintaan dan respons HTTP, atur variabel lingkungan AZURE_LOG_LEVEL
ke info
. Atau, pengelogan dapat diaktifkan saat runtime dengan memanggil setLogLevel
di @azure/logger
:
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
Untuk instruksi lebih rinci tentang cara mengaktifkan log, Anda dapat melihat dokumen paket @azure/pencatat.
Dukungan React Native
React Native tidak mendukung beberapa API JavaScript yang digunakan oleh pustaka SDK ini sehingga Anda perlu menyediakan polifill untuk mereka. Silakan lihat sampel React Native kami dengan Expo untuk detail selengkapnya.
Langkah berikutnya
Sampel berikut menunjukkan berbagai cara untuk berinteraksi dengan App Configuration:
-
helloworld.ts
- Dapatkan, atur, dan hapus nilai konfigurasi. -
helloworldWithLabels.ts
- Gunakan label untuk menambahkan dimensi tambahan ke pengaturan Anda untuk skenario seperti beta vs produksi. -
optimisticConcurrencyViaEtag.ts
- Atur nilai menggunakan etag untuk mencegah penimpaan yang tidak disengaja. -
setReadOnlySample.ts
- Menandai pengaturan sebagai baca-saja untuk mencegah modifikasi. -
getSettingOnlyIfChanged.ts
- Dapatkan pengaturan hanya jika berubah dari terakhir kali Anda mendapatkannya. -
listRevisions.ts
- Mencantumkan revisi kunci, memungkinkan Anda melihat nilai sebelumnya dan kapan nilai tersebut ditetapkan. -
secretReference.ts
- SecretReference mewakili pengaturan konfigurasi yang mereferensikan sebagai rahasia KeyVault. -
snapshot.ts
- Membuat, mencantumkan pengaturan konfigurasi, dan mengarsipkan rekam jepret. -
featureFlag.ts
- Bendera fitur adalah pengaturan yang mengikuti skema JSON tertentu untuk nilai tersebut.
Contoh yang lebih mendalam dapat ditemukan di folder sampel
Berkontribusi
Jika Anda ingin berkontribusi pada pustaka ini, baca panduan berkontribusi untuk mempelajari selengkapnya tentang cara membuat dan menguji kode.
Pengujian modul ini adalah campuran pengujian langsung dan unit, yang mengharuskan Anda memiliki instans Azure App Configuration. Untuk menjalankan pengujian, Anda harus menjalankan:
rush update
rush build -t @azure/app-configuration
- Buat file .env dengan konten ini di folder
sdk\appconfiguration\app-configuration
:APPCONFIG_CONNECTION_STRING=connection string for your App Configuration instance
cd sdk\appconfiguration\app-configuration
-
npm run test
.
Lihat folder pengujian
Proyek terkait
- Microsoft Azure SDK for JavaScript
- Azure App Configuration
Tayangan
Azure SDK for JavaScript
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk