次の方法で共有


Azure App Configuration イベントへの対応

Azure App Configuration イベントを使用すると、アプリケーションはキー値の変更に対応できます。 これは、複雑なコードや高価で非効率的なポーリング サービスを必要とせずに行われます。 代わりに、Azure Event Grid を介して、AzureFunctions、Azure Logic Apps などのサブスクライバー、または独自のカスタム HTTP リスナーにイベントがプッシュされます。 重要なのは、使用した分だけとなります。

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

App Configuration の一般的なイベント シナリオには、アプリケーション構成の更新、デプロイのトリガー、または構成指向のワークフローが含まれます。 変更の頻度が低いが、シナリオですぐに応答性が必要な場合は、イベント ベースのアーキテクチャが特に効率的になる可能性があります。

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

Event Grid モデルを示す図。

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

Event Grid では 、イベント サブスクリプションを 使用して、イベント メッセージをサブスクライバーにルーティングします。 Azure App Configuration では、次の種類のイベントが生成されます。

イベントの種類 Description
Microsoft.AppConfiguration.KeyValueModified キー値が作成または置き換えられるときに発生します。
Microsoft.AppConfiguration.KeyValueDeleted キー値が削除されたときに発生します。
Microsoft.AppConfiguration.SnapshotCreated スナップショットの作成時に発生します。
Microsoft.AppConfiguration.SnapshotModified スナップショットが変更されたときに発生します。

イベント スキーマ

イベントには、次の最上位データがあります。

プロパティ タイプ Description
source 文字列 イベント ソースへの完全なリソース パス。 このフィールドは書き込みできません。 Event Grid は、この値を提供します。
subject 文字列 イベントの件名へのパブリッシャー定義のパス。
type 文字列 このイベント ソースに登録されているイベントの種類の 1 つ。
time 文字列 プロバイダーの UTC 時刻に基づいてイベントが生成される時刻。
id 文字列 イベントの一意識別子。
data オブジェクト App Configuration イベント データ。
specversion 文字列 CloudEvents スキーマ仕様のバージョン。

データ オブジェクトには、次のプロパティがあります。

キー値イベント

プロパティ タイプ Description
key 文字列 変更または削除されたキー値のキー。
label 文字列 変更または削除されたキー値のラベル (存在する場合)。
etag 文字列 新しいキー値の etag を KeyValueModified します。 KeyValueDeleted削除されたキー値の etag。
syncToken 文字列 キーと値のイベントの後のサーバーの状態を表す同期トークン。

スナップショット イベント

プロパティ タイプ Description
name 文字列 作成または変更されたスナップショットの名前。
etag 文字列 新しいスナップショットの etag を SnapshotCreated します。 SnapshotModified変更されたスナップショットの etag。
syncToken 文字列 スナップショット イベントの後のサーバーの状態を表す同期トークン。

イベントの例

次の例は、キー値変更イベントのスキーマを示しています。

[{
  "id": "84e17ea4-66db-4b54-8050-df8f7763f87b",
  "source": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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フィールドを使用して、オブジェクトに関する情報がまだ -date up-toかどうかを把握します。
  • sequencer フィールドを使用して、特定のオブジェクトのイベントの順序を理解します。
  • サブジェクト フィールドを使用して、変更されたキー値にアクセスします。

次のステップ

Event Grid の詳細と、Azure App Configuration イベントを試す方法については、次を参照してください。