Skip to main content التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
يتجاوز الأمر المباشر Prompt المخصّص للمراجعة. افحص المصدر قبل تشغيله.
npx skills add https://github.com/BEKO2210/Firstbrain --skill azure-appconfiguration-tsيبقى الأمر في سطر واحد. مرّر أفقيًا لمراجعته كاملًا قبل النسخ.
تفضّل نسخة محلية؟ نزّل الملفات المتاحة حاليًا لدى SkillsMP.
المهن ذات الصلةSOC
استنادا إلى تصنيف SOC المهني
| name | azure-appconfiguration-ts |
| description | Centralized configuration management with feature flags and dynamic refresh. |
| type | skill |
| created | 2026-02-27T00:00:00.000Z |
| domain | cloud-infrastructure |
| category | azure |
| risk | unknown |
| source | community |
| tags | ["skill","cloud-infrastructure","azure","appconfiguration"] |
Azure App Configuration SDK for TypeScript
Centralized configuration management with feature flags and dynamic refresh.
Installation
npm install @azure/app-configuration @azure/identity
npm install @azure/app-configuration-provider @azure/identity
npm install @microsoft/feature-management
Environment Variables
AZURE_APPCONFIG_ENDPOINT=https://<your-resource>.azconfig.io
AZURE_APPCONFIG_CONNECTION_STRING=Endpoint=https://...;Id=...;Secret=...
Authentication
import { AppConfigurationClient } from "@azure/app-configuration";
import { DefaultAzureCredential } from "@azure/identity";
const client = new AppConfigurationClient(
process.env.AZURE_APPCONFIG_ENDPOINT!,
new DefaultAzureCredential()
);
const client2 = new AppConfigurationClient(
process.env.AZURE_APPCONFIG_CONNECTION_STRING!
);
CRUD Operations
Create/Update Settings
await client.addConfigurationSetting({
key: "app:settings:message",
value: "Hello World",
label: "production",
: ,
: { : },
});
client.({
: ,
: ,
: ,
});
existing = client.({ : });
existing. = ;
client.(existing, { : });
contentType
"text/plain"
tags
environment
"prod"
await
setConfigurationSetting
key
"app:settings:message"
value
"Updated value"
label
"production"
const
await
getConfigurationSetting
key
"myKey"
value
"new value"
await
setConfigurationSetting
onlyIfUnchanged
true
Read Settings
const setting = await client.getConfigurationSetting({
key: "app:settings:message",
label: "production",
});
console.log(setting.value);
const settings = client.listConfigurationSettings({
keyFilter: "app:*",
labelFilter: "production",
});
for await (const setting of settings) {
console.log(`${setting.key}: ${setting.value}`);
}
Delete Settings
await client.deleteConfigurationSetting({
key: "app:settings:message",
label: "production",
});
Lock/Unlock (Read-Only)
await client.setReadOnly({ key: "myKey", label: "prod" }, true);
await client.setReadOnly({ key: "myKey", label: "prod" }, false);
App Configuration Provider
Load Configuration
import { load } from "@azure/app-configuration-provider";
import { DefaultAzureCredential } from "@azure/identity";
const appConfig = await load(
process.env.AZURE_APPCONFIG_ENDPOINT!,
new DefaultAzureCredential(),
{
selectors: [
{ keyFilter: "app:*", labelFilter: "production" },
],
trimKeyPrefixes: ["app:"],
}
);
const value = appConfig.get("settings:message");
const config = appConfig.constructConfigurationObject({ separator: ":" });
console.log(config.settings.message);
Dynamic Refresh
const appConfig = await load(endpoint, credential, {
selectors: [{ keyFilter: "app:*" }],
refreshOptions: {
enabled: true,
refreshIntervalInMs: 30_000,
},
});
appConfig.refresh();
const disposer = appConfig.onRefresh(() => {
console.log("Configuration refreshed!");
});
app.use((req, res, next) => {
appConfig.refresh();
next();
});
Key Vault References
const appConfig = await load(endpoint, credential, {
selectors: [{ keyFilter: "app:*" }],
keyVaultOptions: {
credential: new DefaultAzureCredential(),
secretRefreshIntervalInMs: 7200_000,
},
});
const dbPassword = appConfig.get("database:password");
Feature Flags
Create Feature Flag (Low-Level)
import {
featureFlagPrefix,
featureFlagContentType,
FeatureFlagValue,
ConfigurationSetting,
} from "@azure/app-configuration";
const flag: ConfigurationSetting<FeatureFlagValue> = {
key: `${featureFlagPrefix}Beta`,
contentType: featureFlagContentType,
value: {
id: "Beta",
enabled: true,
description: "Beta feature",
conditions: {
clientFilters: [
{
name: "Microsoft.Targeting",
parameters: {
Audience: {
Users: ["user@example.com"],
Groups: [{ Name: "beta-testers", RolloutPercentage: 50 }],
DefaultRolloutPercentage: 0,
},
},
},
],
},
},
};
await client.addConfigurationSetting(flag);
Load and Evaluate Feature Flags
import { load } from "@azure/app-configuration-provider";
import {
ConfigurationMapFeatureFlagProvider,
FeatureManager,
} from "@microsoft/feature-management";
const appConfig = await load(endpoint, credential, {
featureFlagOptions: {
enabled: true,
selectors: [{ keyFilter: "*" }],
refresh: {
enabled: true,
refreshIntervalInMs: 30_000,
},
},
});
const featureProvider = new ConfigurationMapFeatureFlagProvider(appConfig);
const featureManager = new FeatureManager(featureProvider);
const isEnabled = await featureManager.isEnabled("Beta");
const isEnabledForUser = await featureManager.isEnabled("Beta", {
userId: "user@example.com",
groups: ["beta-testers"],
});
Snapshots
const snapshot = await client.beginCreateSnapshotAndWait({
name: "release-v1.0",
retentionPeriod: 2592000,
filters: [{ keyFilter: "app:*", labelFilter: "production" }],
});
const snap = await client.getSnapshot("release-v1.0");
const settings = client.listConfigurationSettingsForSnapshot("release-v1.0");
for await (const setting of settings) {
console.log(`${setting.key}: ${setting.value}`);
}
await client.archiveSnapshot("release-v1.0");
await client.recoverSnapshot("release-v1.0");
const config = await load(endpoint, credential, {
selectors: [{ snapshotName: "release-v1.0" }],
});
Labels
await client.setConfigurationSetting({
key: "database:host",
value: "dev-db.example.com",
label: "development",
});
await client.setConfigurationSetting({
key: "database:host",
value: "prod-db.example.com",
label: "production",
});
const prodSettings = client.listConfigurationSettings({
keyFilter: "*",
labelFilter: "production",
});
const noLabelSettings = client.listConfigurationSettings({
labelFilter: "\0",
});
for await (const label of client.listLabels()) {
console.log(label.name);
}
Key Types
import {
AppConfigurationClient,
ConfigurationSetting,
FeatureFlagValue,
SecretReferenceValue,
featureFlagPrefix,
featureFlagContentType,
secretReferenceContentType,
ListConfigurationSettingsOptions,
} from "@azure/app-configuration";
import { load } from "@azure/app-configuration-provider";
import {
FeatureManager,
ConfigurationMapFeatureFlagProvider,
} from "@microsoft/feature-management";
Best Practices
- Use provider for apps -
@azure/app-configuration-provider for runtime config
- Use low-level for management -
@azure/app-configuration for CRUD operations
- Enable refresh - For dynamic configuration updates
- Use labels - Separate configurations by environment
- Use snapshots - For immutable release configurations
- Sentinel pattern - Use a sentinel key to trigger full refresh
- RBAC roles -
App Configuration Data Reader for read-only access
When to Use
This skill is applicable to execute the workflow or actions described in the overview.
Connections
- Domain: [[Cloud & Infrastruktur]]
- Kategorie: [[Microsoft Azure]]
- Navigation: [[Skills Uebersicht]], [[Home]]