Поделиться через


Краткое руководство: создание консольного приложения Node.js с помощью Azure App Configuration

В этой инструкции вы используете Azure App Configuration для централизованного хранения и управления настройками приложения с помощью клиентской библиотеки JavaScript-поставщика Azure App Configuration.

Поставщик конфигурации приложений для JavaScript построен на основе пакета SDK Azure для JavaScript и предназначен для упрощения использования и расширенными функциями. Он обеспечивает доступ к значениям ключей в Конфигурации приложений в качестве Map объекта. Предоставляются такие функции, как составление конфигурации из нескольких меток, обрезка префикса ключа, автоматическое разрешение ссылок на «Key Vault» и многое другое. В этом руководстве показано, как использовать поставщик JavaScript в приложении Node.js.

Необходимые пререквизиты

Добавление ключевых значений

Добавьте следующие ключевые значения в хранилище Конфигурация приложений. Дополнительные сведения о добавлении значений ключей в хранилище с помощью портал Azure или ИНТЕРФЕЙСА командной строки см. в разделе "Создание значения ключа".

Ключ Значение Тип содержимого
сообщение Сообщение от Azure App Configuration Оставьте пустым
приложение.приветствие Всем привет Оставьте пустым
app.json {"myKey":"myValue"} application/json

Создание консольного приложения Node.js

В этом руководстве вы создадите консольное приложение Node.js и загрузите данные из хранилища Конфигурация приложений.

  1. Создайте каталог для проекта с именем app-configuration-quickstart.

    mkdir app-configuration-quickstart
    
  2. Перейдите в созданный каталог app-configuration-quickstart.

    cd app-configuration-quickstart
    
  3. Установите поставщика конфигурации приложений Azure с помощью команды npm install.

    npm install @azure/app-configuration-provider
    

Подключение к хранилищу конфигурации приложений

В следующих примерах показано, как получить данные конфигурации из Конфигурация приложений Azure и использовать их в приложении. По умолчанию ключ-значения загружаются в виде Map объекта, что позволяет получить доступ к каждому значению ключа с помощью полного имени ключа. Однако если приложение использует объекты конфигурации, можно использовать constructConfigurationObject вспомогательный API, который создает объект конфигурации на основе значений ключей, загруженных из Конфигурация приложений Azure.

Создайте файл с именем app.js в каталоге app-configuration-quickstart и скопируйте код из каждого примера.

Пример 1. Загрузка значений ключей с помощью селектора по умолчанию

В этом примере вы подключаетесь к Конфигурации приложений Azure и загружаете ключевые значения без указания дополнительных параметров. По умолчанию он загружает все значения ключей без метки. Вы можете подключиться к хранилищу конфигурации приложений с помощью идентификатора Microsoft Entra (рекомендуется) или с помощью строки подключения.

Вы используете DefaultAzureCredential для аутентификации в хранилище конфигурации приложений. Следуйте инструкциям, чтобы назначить вашей учетной записи роль читателя данных конфигурации приложений. Перед запуском приложения обязательно предоставьте достаточно времени для распространения разрешения.

const { load } = require("@azure/app-configuration-provider");
const { DefaultAzureCredential } = require("@azure/identity");
const endpoint = process.env.AZURE_APPCONFIG_ENDPOINT;
const credential = new DefaultAzureCredential(); // For more information, see https://learn.microsoft.com/azure/developer/javascript/sdk/credential-chains#use-defaultazurecredential-for-flexibility

async function run() {
    console.log("Sample 1: Load key-values with default selector");

    // Connect to Azure App Configuration using a token credential and load all key-values with null label.
    const settings = await load(endpoint, credential);

    console.log("---Consume configuration as a Map---");
    // Find the key "message" and print its value.
    console.log('settings.get("message"):', settings.get("message"));           // settings.get("message"): Message from Azure App Configuration
    // Find the key "app.greeting" and print its value.
    console.log('settings.get("app.greeting"):', settings.get("app.greeting")); // settings.get("app.greeting"): Hello World
    // Find the key "app.json" whose value is an object.
    console.log('settings.get("app.json"):', settings.get("app.json"));         // settings.get("app.json"): { myKey: 'myValue' }

    console.log("---Consume configuration as an object---");
    // Construct configuration object from loaded key-values, by default "." is used to separate hierarchical keys.
    const config = settings.constructConfigurationObject();
    // Use dot-notation to access configuration
    console.log("config.message:", config.message);             // config.message: Message from Azure App Configuration
    console.log("config.app.greeting:", config.app.greeting);   // config.app.greeting: Hello World
    console.log("config.app.json:", config.app.json);           // config.app.json: { myKey: 'myValue' }
}

run().catch(console.error);

Пример 2. Загрузка определенных значений ключей с помощью селекторов

В этом примере вы загружаете подмножество значений ключей, указав selectors параметр. Загружаются только ключи, начинающиеся с "app.". Обратите внимание, что можно указать несколько селекторов в зависимости от ваших потребностей, каждый с keyFilter и labelFilter свойствами.

const { load } = require("@azure/app-configuration-provider");
const { DefaultAzureCredential } = require("@azure/identity");
const endpoint = process.env.AZURE_APPCONFIG_ENDPOINT;
const credential = new DefaultAzureCredential(); // For more information, see https://learn.microsoft.com/azure/developer/javascript/sdk/credential-chains#use-defaultazurecredential-for-flexibility

async function run() {
    console.log("Sample 2: Load specific key-values using selectors");

    // Load a subset of keys starting with "app." prefix.
    const settings = await load(endpoint, credential, {
        selectors: [{
            keyFilter: "app.*"
        }],
    });

    console.log("---Consume configuration as a Map---");
    // The key "message" is not loaded as it does not start with "app."
    console.log('settings.has("message"):', settings.has("message"));           // settings.has("message"): false
    // The key "app.greeting" is loaded
    console.log('settings.has("app.greeting"):', settings.has("app.greeting")); // settings.has("app.greeting"): true
    // The key "app.json" is loaded
    console.log('settings.has("app.json"):', settings.has("app.json"));         // settings.has("app.json"): true

    console.log("---Consume configuration as an object---");
    // Construct configuration object from loaded key-values
    const config = settings.constructConfigurationObject({ separator: "." });
    // Use dot-notation to access configuration
    console.log("config.message:", config.message);         // config.message: undefined
    console.log("config.app.greeting:", config.app.greeting);   // config.app.greeting: Hello World
    console.log("config.app.json:", config.app.json);           // config.app.json: { myKey: 'myValue' }
}

run().catch(console.error);

Пример 3. Загрузка ключевых значений и удаление префиксов из ключей.

В этом примере вы загружаете значения ключей с параметром trimKeyPrefixes. После загрузки значений ключей префикс "app." обрезается со всех ключей. Это полезно, когда требуется загрузить конфигурации, специфичные для вашего приложения, фильтруя их по определенному префиксу ключа, но при этом не нужно, чтобы ваш код каждый раз включал этот префикс при обращении к конфигурации.

const { load } = require("@azure/app-configuration-provider");
const { DefaultAzureCredential } = require("@azure/identity");
const endpoint = process.env.AZURE_APPCONFIG_ENDPOINT;
const credential = new DefaultAzureCredential(); // For more information, see https://learn.microsoft.com/azure/developer/javascript/sdk/credential-chains#use-defaultazurecredential-for-flexibility

async function run() {
    console.log("Sample 3: Load key-values and trim prefix from keys");

    // Load all key-values with no label, and trim "app." prefix from all keys.
    const settings = await load(endpoint, credential, {
        selectors: [{
            keyFilter: "app.*"
        }],
        trimKeyPrefixes: ["app."]
    });

    console.log("---Consume configuration as a Map---");
    // The original key "app.greeting" is trimmed as "greeting".
    console.log('settings.get("greeting"):', settings.get("greeting")); // settings.get("greeting"): Hello World
    // The original key "app.json" is trimmed as "json".
    console.log('settings.get("json"):', settings.get("json"));         // settings.get("json"): { myKey: 'myValue' }

    console.log("---Consume configuration as an object---");
    // Construct configuration object from loaded key-values with trimmed keys.
    const config = settings.constructConfigurationObject();
    // Use dot-notation to access configuration
    console.log("config.greeting:", config.greeting);   // config.greeting: Hello World
    console.log("config.json:", config.json);           // config.json: { myKey: 'myValue' }
}

run()

Выполнение приложения

  1. Установите переменную среды .

    Установите переменную среды с именем AZURE_APPCONFIG_ENDPOINT на значение конечной точки вашего хранилища конфигураций приложений, найденной в разделе Обзор вашего хранилища в портале Azure.

    Если вы используете командную строку Windows, выполните следующую команду и перезапустите командную строку, чтобы изменения вступили в силу:

    setx AZURE_APPCONFIG_ENDPOINT "<endpoint-of-your-app-configuration-store>"
    

    Если вы используете PowerShell, выполните следующую команду:

    $Env:AZURE_APPCONFIG_ENDPOINT = "<endpoint-of-your-app-configuration-store>"
    

    Если вы используете macOS или Linux, выполните следующую команду:

    export AZURE_APPCONFIG_ENDPOINT='<endpoint-of-your-app-configuration-store>'
    
  2. После правильного задания переменной среды выполните следующую команду, чтобы запустить приложение локально:

    node app.js
    

    Вы должны увидеть следующие выходные данные для каждого примера:

    Пример 1

    Sample 1: Load key-values with default selector
    ---Consume configuration as a Map---
    settings.get("message"): Message from Azure App Configuration
    settings.get("app.greeting"): Hello World
    settings.get("app.json"): { myKey: 'myValue' }
    ---Consume configuration as an object---
    config.message: Message from Azure App Configuration
    config.app.greeting: Hello World
    config.app.json: { myKey: 'myValue' }
    

    Пример 2

    Sample 2: Load specific key-values using selectors
    ---Consume configuration as a Map---
    settings.has("message"): false
    settings.has("app.greeting"): true
    settings.has("app.json"): true
    ---Consume configuration as an object---
    config.message: undefined
    config.app.greeting: Hello World
    config.app.json: { myKey: 'myValue' }
    

    Пример 3

    Sample 3: Load key-values and trim prefix from keys
    ---Consume configuration as a Map---
    settings.get("greeting"): Hello World
    settings.get("json"): { myKey: 'myValue' }
    ---Consume configuration as an object---
    config.greeting: Hello World
    config.json: { myKey: 'myValue' }
    

Очистка ресурсов

Если вы не планируете в дальнейшем использовать ресурсы, созданные при работе с этой статьей, удалите созданную группу ресурсов, чтобы избежать расходов.

Внимание

Удаление группы ресурсов — процесс необратимый. Группа ресурсов и все содержащиеся в ней ресурсы удаляются без возможности восстановления. Будьте внимательны, чтобы случайно не удалить не те ресурсы или группу ресурсов. Если ресурсы для работы с этой статьей созданы в группе ресурсов, которая содержит другие нужные ресурсы, удалите каждый ресурс отдельно в соответствующей области ресурса, чтобы не удалять группу ресурсов.

  1. Войдите на портал Azure и выберитеГруппы ресурсов.
  2. Введите имя группы ресурсов в поле Фильтровать по имени.
  3. В списке результатов выберите имя группы ресурсов, чтобы просмотреть общие сведения.
  4. Выберите команду Удалить группу ресурсов.
  5. Подтвердите операцию удаления группы ресурсов. Введите имя группы ресурсов, которую необходимо удалить, и нажмите Удалить.

Через некоторое время группа ресурсов и все ее ресурсы будут удалены.

Следующие шаги

В этом кратком руководстве вы создали новое хранилище конфигурации приложений и узнали, как получить доступ к значениям ключей с помощью JavaScript-провайдера конфигурации приложений в приложении Node.js. Чтобы узнать, как настроить приложение для динамического обновления параметров конфигурации, перейдите к следующему руководству.

Для полного обзора функций библиотеки конфигурации JavaScript см. следующий документ.