チュートリアル: JavaScript で動的な構成を使用する
このチュートリアルでは、JavaScript アプリケーションで動的な構成を有効にする方法について説明します。 このチュートリアルの例は、JavaScript のクイックスタートで紹介したサンプル アプリケーションが基になっています。 先に進む前に、「Azure App Configuration を使用した JavaScript アプリの作成」を済ませてください。
前提条件
キーと値を追加する
Azure App Configuration ストアに次のキーと値を追加します。 Azure portal または CLI を使用してストアにキーと値を追加する方法の詳細については、キーと値の作成に関する記事を参照してください。
キー | 値 | Label | Content type |
---|---|---|---|
message | Hello World! | 空のままにします | 空のままにします |
sentinel | 1 | 空のままにします | 空のままにします |
Note
''センチネル キー'' は、他のすべてのキーの変更を完了した後に更新するキーです。 センチネル キーをアプリで監視してください。 変更が検出されると、アプリによって構成の値がすべて更新されます。 このアプローチは、アプリの構成の一貫性を確保するのに役立ち、すべてのキーの変更を監視する場合と比べると、Azure App Configuration ストアに対して行う全体的な要求の数が少なくなります。
App Configuration からデータを再度読み込む
次の例では、コンソール アプリケーションで更新可能な構成値を使用する方法を見ていきます。
App Configuration から読み込まれた構成データをアプリケーションで使用する方法 (Map
または構成オブジェクトとして) に基づいて、次の手順を選んでください。
Microsoft Entra ID (推奨) または接続文字列を使用して App Configuration に接続できます。 次のコード スニペットは、Microsoft Entra ID を使用する場合を示しています。 DefaultAzureCredential を使用して、App Configuration ストアに対する認証を行います。 前提条件に一覧表示されているクイックスタートを完了するときに、既に資格情報に App Configuration データ閲覧者ロールを割り当てています。
ファイル app.js を開き、
load
関数を更新します。refreshOptions
パラメーターを追加して更新を有効にし、更新オプションを構成します。 読み込まれた構成は、サーバーで変更が検出されると更新されます。 既定で使われる更新間隔は 30 秒ですが、refreshIntervalInMs
プロパティでオーバーライドできます。// Connecting to Azure App Configuration using endpoint and token credential const settings = await load(endpoint, credential, { // Setting up to refresh when the sentinel key is changed refreshOptions: { enabled: true, watchedSettings: [{ key: "sentinel" }] // Watch for changes to the key "sentinel" and refreshes the configuration when it changes } });
refreshOptions
を設定しただけでは、構成は自動的に更新されません。refresh
メソッドを呼び出して、更新をトリガーする必要があります。 このように設計すると、アプリケーションがアイドル状態のときに App Configuration に不要な要求が行われなくなります。 アプリケーションのアクティビティが発生する場所に、refresh
の呼び出しを含める必要があります。 これは、アクティビティ駆動型の構成更新と呼ばれます。 たとえば、受信メッセージや注文を処理するとき、または複雑なタスクを実行する反復内で、refresh
を呼び出すことができます。 または、アプリケーションが常にアクティブな場合は、タイマーを使うこともできます。 この例では、デモンストレーションのためrefresh
をループで呼び出しています。 何らかの理由でrefresh
の呼び出しが失敗した場合でも、アプリケーションはキャッシュされた構成を使い続けます。 構成されている更新間隔が経過し、アプリケーションのアクティビティによってrefresh
の呼び出しがトリガーされると、もう 1 回試行されます。 構成されている更新間隔が経過するまでは、refresh
を呼び出しても何も行われないので、頻繁に呼び出された場合でも、パフォーマンスへの影響は最小限です。監視対象のキーと値の構成変更をポーリングするには、次のコードを追加します。
// Polling for configuration changes every 5 seconds while (true) { await sleepInMs(5000); // Waiting before the next refresh await settings.refresh(); // Refreshing the configuration setting console.log(settings.get("message")); // Consume current value of message from a Map }
これで、app.js ファイルは次のコード スニペットのようになります。
const sleepInMs = require("util").promisify(setTimeout); 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() { // Connecting to Azure App Configuration using endpoint and token credential const settings = await load(endpoint, credential, { // Setting up to refresh when the sentinel key is changed refreshOptions: { enabled: true, watchedSettings: [{ key: "sentinel" }] // Watch for changes to the key "sentinel" and refreshes the configuration when it changes } }); // Polling for configuration changes every 5 seconds while (true) { await sleepInMs(5000); // Waiting before the next refresh await settings.refresh(); // Refreshing the configuration setting console.log(settings.get("message")); // Consume current value of message from a Map } } run().catch(console.error);
アプリケーションの実行
スクリプトを実行します:
node app.js
出力を確認します:
Hello World!
5 秒ごとに "Hello World!" を新しい行に出力し続けます。
Azure App Configuration ストアに対して次のキーと値を更新します。 最初にキー
message
の値を更新してから、sentinel
を更新します。Key 値 Label Content type message Hello World - Updated! 空のままにします 空のままにします sentinel 2 空のままにします 空のままにします 値が更新されると、更新間隔の後で更新された値が出力されます。
Hello World - Updated!
リソースをクリーンアップする
この記事で作成したリソースを継続して使用しない場合は、ここで作成したリソース グループを削除して課金されないようにしてください。
重要
リソース グループを削除すると、元に戻すことができません。 リソース グループとそのすべてのリソースは完全に削除されます。 間違ったリソース グループやリソースをうっかり削除しないようにしてください。 この記事のリソースを、保持したい他のリソースを含むリソース グループ内に作成した場合は、リソース グループを削除する代わりに、各リソースをそれぞれのペインから個別に削除します。
- Azure portal にサインインし、 [リソース グループ] を選択します。
- [名前でフィルター] ボックスにリソース グループの名前を入力します。
- 結果一覧でリソース グループ名を選択し、概要を表示します。
- [リソース グループの削除] を選択します。
- リソース グループの削除の確認を求めるメッセージが表示されます。 確認のためにリソース グループの名前を入力し、 [削除] を選択します。
しばらくすると、リソース グループとそのすべてのリソースが削除されます。
次のステップ
このチュートリアルでは、JavaScript アプリで Azure App Configuration から構成設定を動的に更新できるようにしました。 Azure App Configuration へのアクセスを効率化する Azure マネージド ID を使用する方法については、次のチュートリアルに進んでください。