Compartilhar via


Início Rápido: Criar um aplicativo de console Node.js com a Configuração de Aplicativos do Azure

Neste início rápido, você usará a Configuração de Aplicativos do Azure para centralizar o armazenamento e o gerenciamento de configurações de aplicativo usando a biblioteca de clientes do provedor JavaScript da Configuração de Aplicativo do Azure.

O provedor da Configuração de Aplicativos para JavaScript foi criado com base no SDK do Azure para JavaScript e projetado para ser mais fácil de usar com recursos mais avançados. Ele permite o acesso a valores de chave na Configuração de Aplicativos como um objeto Map. Oferece também recursos como composição de configuração com base em vários rótulos, corte de prefixo de chave, resolução automática de referências do Key Vault, entre outros. Por exemplo, este tutorial mostra como usar o provedor de JavaScript em um aplicativo Node.js.

Pré-requisitos

Adicionar valores-chave

Adicione os seguintes valores-chave ao repositório de Configuração do Aplicativos. Para obter mais informações sobre como adicionar valores-chave a um repositório usando o portal do Azure ou a CLI, acesse Criar um valor-chave.

Chave Valor Tipo de conteúdo
message Mensagem da Configuração de Aplicativos do Azure Deixar em branco
app.greeting Olá, Mundo Deixar em branco
app.json {"myKey":"myValue"} aplicativo/json

Criar um aplicativo de console Node.js

Neste tutorial, você criará um aplicativo de console Node.js e carregará os dados do repositório de Configuração de Aplicativos.

  1. Crie um diretório para o projeto chamado app-configuration-quickstart.

    mkdir app-configuration-quickstart
    
  2. Mude para o diretório app-configuration-quickstart que foi recém-criado.

    cd app-configuration-quickstart
    
  3. Instale o provedor da Configuração de Aplicativos do Azure usando o comando npm install.

    npm install @azure/app-configuration-provider
    

Conectar um repositório de Configuração de Aplicativos

Os exemplos a seguir demonstram como recuperar os dados de configuração da Configuração de Aplicativos do Azure e usá-los no seu aplicativo. Por padrão, os valores-chave são carregados como um objeto Map, permitindo que você acesse cada chave-valor usando seu nome de chave completo. Porém, se seu aplicativo usar objetos de configuração, você poderá usar a API auxiliar constructConfigurationObject que cria um objeto de configuração com base nos valores de chave carregados da Configuração de Aplicativos do Azure.

Crie um arquivo chamado app.js no diretório app-configuration-quickstart e copie o código de cada exemplo.

Exemplo 1: carregar a chave-valor com o seletor padrão

Nesse exemplo, você se conecta à Configuração de Aplicativo do Azure e carrega chaves-valor sem especificar opções avançadas. Por padrão, ele carrega todos os valores-chave sem rótulo. Você pode se conectar ao seu armazenamento de configuração de aplicativo usando o Microsoft Entra ID (recomendado) ou uma cadeia de conexão.

Você usa a autenticação DefaultAzureCredential no repositório de Configuração de Aplicativos. Siga as instruções para atribuir à credencial a função Leitor de Dados de Configuração de Aplicativo. Certifique-se de permitir tempo suficiente para a permissão se propagar antes de executar seu aplicativo.

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);

Exemplo 2: carregar valores de chave específicos usando seletores

Neste exemplo, você carrega um subconjunto de valores-chave especificando a opção selectors. Somente as chaves que começam com "app" são carregadas. Observe que você pode especificar vários seletores com base nas suas necessidades, cada um com propriedades keyFilter e 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);

Exemplo 3: carregar a chave-valor e cortar o prefixo de chaves

Neste exemplo, você carrega as valores-chave com uma opção trimKeyPrefixes. Depois que os valores-chave são carregados, o prefixo "app" é cortado de todas as chaves. Isso é útil quando você quer carregar configurações específicas do seu aplicativo filtrando por um determinado prefixo de chave, mas não quer que o código carregue o prefixo sempre que acessar a configuração.

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()

Executar o aplicativo

  1. Defina a variável de ambiente .

    Defina a variável de ambiente chamada AZURE_APPCONFIG_ENDPOINT como o ponto de extremidade do seu repositório de configuração de aplicativos, encontrado na Visão geral do seu repositório no portal do Azure.

    Se você usar o prompt de comando do Windows, execute o comando a seguir e reinicie o prompt de comando para permitir que a alteração entre em vigor:

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

    Se você usar o PowerShell, execute o seguinte comando:

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

    Se você usa macOS ou Linux, execute o comando a seguir:

    export AZURE_APPCONFIG_ENDPOINT='<endpoint-of-your-app-configuration-store>'
    
  2. Depois que a variável de ambiente for definida de maneira correta, execute o seguinte comando para executar o aplicativo localmente:

    node app.js
    

    Você deverá ver a seguinte saída de cada exemplo:

    Amostra 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' }
    

    Amostra 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' }
    

    Amostra 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' }
    

Limpar os recursos

Se não deseja continuar usando os recursos criados neste artigo, exclua o grupo de recursos que você criou aqui para evitar encargos.

Importante

A exclusão de um grupo de recursos é irreversível. O grupo de recursos e todos os recursos contidos nele são excluídos permanentemente. Não exclua acidentalmente grupo de recursos ou recursos incorretos. Se tiver criado os recursos para este artigo dentro de um grupo de recursos que contém outros recursos que você deseja manter, exclua cada um individualmente do respectivo painel em vez de excluir o grupo de recursos.

  1. Entre no portal do Azure e selecione Grupos de recursos.
  2. Na caixa Filtrar por nome..., digite o nome do seu grupo de recursos.
  3. Na lista de resultados, selecione o nome do grupo de recursos para conferir uma visão geral.
  4. Selecione Excluir grupo de recursos.
  5. Você receberá uma solicitação para confirmar a exclusão do grupo de recursos. Insira o nome do grupo de recursos para confirmar e selecione Excluir.

Após alguns instantes, o grupo de recursos e todos os recursos dele são excluídos.

Próximas etapas

Neste início rápido, você criou um repositório da Configuração de Aplicativos e aprendeu a acessar valores de chave usando o provedor de JavaScript da Configuração de Aplicativos em um aplicativo Node.js. Para saber como configurar seu aplicativo para que as configurações sejam atualizadas dinamicamente, prossiga para o próximo tutorial.