チュートリアル: 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
または構成オブジェクトとして) に基づいて、次の手順を選んでください。
ファイル app.js を開き、
load
関数を更新します。refreshOptions
パラメーターを追加して更新を有効にし、更新オプションを構成します。 読み込まれた構成は、サーバーで変更が検出されると更新されます。 既定で使われる更新間隔は 30 秒ですが、refreshIntervalInMs
プロパティでオーバーライドできます。// Connecting to Azure App Configuration using connection string const settings = await load(connectionString, { // 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 connectionString = process.env.AZURE_APPCONFIG_CONNECTION_STRING; async function run() { // Connecting to Azure App Configuration using connection string const settings = await load(connectionString, { // 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 を使用する方法については、次のチュートリアルに進んでください。