Azure App Configuration イベントへの反応

Azure App Configuration イベントを使用すると、アプリケーションでキー/値の変化に反応できます。 これを実行するために、複雑なコードや、高価で非効率的なポーリング サービスは必要ありません。 代わりにイベントが、Azure Event Grid を通して、Azure FunctionsAzure Logic Apps などのサブスクライバー、またはユーザー独自のカスタム HTTP リスナーにプッシュされます。 決定的な点は、使用した分だけ支払うということです。

Azure App Configuration のイベントは Azure Event Grid に送信されます。そこでは、豊富な再試行ポリシーと配信不能メッセージ配信を使用して、信頼性の高い配信サービスがアプリケーションに提供されます。 詳細については、Event Grid のメッセージの配信と再試行に関する記事を参照してください。

一般的なアプリ構成イベントのシナリオには、アプリケーション構成の更新、デプロイのトリガー、またはすべての構成指向のワークフローが含まれます。 変更の頻度が低くても、即時の応答性が必要なシナリオでは、イベント ベースのアーキテクチャは特に効果的です。

簡単な例については、データ変更通知での Event Grid の使用に関する記事を参照してください。

Diagram that shows Event Grid Model.

使用可能なイベントの種類

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 イベントを試してみるために、以下をご覧ください。