Azure App Configuration イベントへの反応
Azure App Configuration イベントを使用すると、アプリケーションでキー/値の変化に反応できます。 これを実行するために、複雑なコードや、高価で非効率的なポーリング サービスは必要ありません。 代わりにイベントが、Azure Event Grid を通して、Azure Functions、Azure Logic Apps などのサブスクライバー、またはユーザー独自のカスタム HTTP リスナーにプッシュされます。 決定的な点は、使用した分だけ支払うということです。
Azure App Configuration のイベントは Azure Event Grid に送信されます。そこでは、豊富な再試行ポリシーと配信不能メッセージ配信を使用して、信頼性の高い配信サービスがアプリケーションに提供されます。 詳細については、Event Grid のメッセージの配信と再試行に関する記事を参照してください。
一般的なアプリ構成イベントのシナリオには、アプリケーション構成の更新、デプロイのトリガー、またはすべての構成指向のワークフローが含まれます。 変更の頻度が低くても、即時の応答性が必要なシナリオでは、イベント ベースのアーキテクチャは特に効果的です。
簡単な例については、データ変更通知での Event Grid の使用に関する記事を参照してください。
使用可能なイベントの種類
Event Grid は、イベント サブスクリプションを使用して、イベント メッセージをサブスクライバーにルーティングします。 Azure App Configuration は次のイベントの種類を発行します。
イベントの種類 | 説明 |
---|---|
Microsoft.AppConfiguration.KeyValueModified | キー/値が作成または置換されたときに発生します。 |
Microsoft.AppConfiguration.KeyValueDeleted | キー/値が削除されたときに発生します。 |
Microsoft.AppConfiguration.SnapshotCreated | スナップショットが作成されたときに発生します。 |
Microsoft.AppConfiguration.SnapshotModified | スナップショットが変更されたときに発生します。 |
イベント スキーマ
イベントのトップレベルのデータを次に示します。
プロパティ | タイプ | 説明 |
---|---|---|
source |
string | イベント ソースの完全なリソース パス。 このフィールドは書き込み可能ではありません。 この値は Event Grid によって指定されます。 |
subject |
string | 発行元が定義したイベントの対象のパス。 |
type |
string | このイベント ソース用に登録されたイベントの種類のいずれか。 |
time |
string | プロバイダーの UTC 時刻に基づくイベントの生成時刻。 |
id |
string | イベントの一意識別子。 |
data |
object | App Configuration イベント データ。 |
specversion |
string | CloudEvents スキーマ仕様バージョン。 |
データ オブジェクトには、次のプロパティがあります。
キー値イベント
プロパティ | タイプ | 説明 |
---|---|---|
key |
string | 変更または削除されたキー/値のキー。 |
label |
string | 変更または削除されたキー/値のラベル (存在する場合)。 |
etag |
string | KeyValueModified の場合、新しいキー/値の etag。 KeyValueDeleted の場合、削除されたキー/値の etag。 |
syncToken |
string | キー値イベント後のサーバーの状態を表す同期トークン。 |
スナップショット イベント
プロパティ | タイプ | 説明 |
---|---|---|
name |
string | 作成または変更されたスナップショットの名前。 |
etag |
string | SnapshotCreated の場合、新しいスナップショットの etag。 SnapshotModified の場合、変更されたスナップショットの etag。 |
syncToken |
string | スナップショット イベント後のサーバーの状態を表す同期トークン。 |
イベントの例
次の例は、キー/値の変更イベントのスキーマを示します。
[{
"id": "84e17ea4-66db-4b54-8050-df8f7763f87b",
"source": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg/providers/microsoft.appconfiguration/configurationstores/contoso",
"subject": "https://contoso.azconfig.io/kv/Foo?label=FizzBuzz",
"data": {
"key": "Foo",
"label": "FizzBuzz",
"etag": "FnUExLaj2moIi4tJX9AXn9sakm0"
},
"type": "Microsoft.AppConfiguration.KeyValueModified",
"time": "2019-05-31T20:05:03Z",
"specversion": "1.0"
}]
次の例は、キー値削除イベントのスキーマを示しています:
[{
"id": "84e17ea4-66db-4b54-8050-df8f7763f87b",
"source": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg/providers/microsoft.appconfiguration/configurationstores/contoso",
"subject": "https://contoso.azconfig.io/kv/Foo?label=FizzBuzz",
"data": {
"key": "Foo",
"label": "FizzBuzz",
"etag": "FnUExLaj2moIi4tJX9AXn9sakm0"
},
"type": "Microsoft.AppConfiguration.KeyValueDeleted",
"time": "2019-05-31T20:05:03Z",
"specversion": "1.0"
}]
次の例は、スナップショット作成イベントのスキーマを示しています:
[{
"source": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg/providers/microsoft.appconfiguration/configurationstores/contoso",
"subject": "https://contoso.azconfig.io/kvsnapshots/Foo",
"type": "Microsoft.AppConfiguration.SnapshotCreated",
"time": "2023-09-02T20:05:03.0000000Z",
"id": "84e17ea4-66db-4b54-8050-df8f7763f87b",
"data": {
"name": "Foo",
"etag": "FnUExLaj2moIi4tJX9AXn9sakm0",
"syncToken": "zAJw6V16=Njo1IzUxNjQ2NzM=;sn=5164673"
},
"specversion": "1.0"
}]
次の例は、スナップショット変更イベントのスキーマを示しています:
[{
"source": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg/providers/microsoft.appconfiguration/configurationstores/contoso",
"subject": "https://contoso.azconfig.io/snapshots/Foo",
"type": "Microsoft.AppConfiguration.SnapshotModified",
"time": "2023-09-03T20:05:03.0000000Z",
"id": "84e17ea4-66db-4b54-8050-df8f7763f87b",
"data": {
"name": "Foo",
"etag": "FnUExLaj2moIi4tJX9AXn9sakm0",
"syncToken": "zAJw6V16=Njo1IzUxNjQ2NzM=;sn=5164673"
},
"specversion": "1.0"
}]
詳細については、Azure App Configuration イベント スキーマに関する記事を参照してください。
イベントの使用に関する手法
App Configuration イベントを処理するアプリケーションは、次のいくつかの推奨プラクティスに従う必要があります。
- 同じイベント ハンドラーにイベントをルーティングするように複数のサブスクリプションを構成できるため、イベントが特定のソースからのものであると想定しないでください。 代わりに、メッセージのトピックを調べて、App Configuration インスタンスがそのイベントを送信していることを確認します。
eventType
を確認します。受信するすべてのイベントが予期する種類であると想定してはいけません。etag
フィールドを使って、オブジェクトに関する情報が現在も最新かどうかを確認します。- sequencer フィールドを使って、特定のオブジェクトに対するイベントの順序を確認します。
- subject フィールドを使用して、変更されたキー/値にアクセスします。
次のステップ
Event Grid の詳細について確認し、Azure App Configuration イベントを試してみるために、以下をご覧ください。