Share via


使用事件方格來 應用程式組態 數據變更通知

在本文中,您將瞭解如何設定 Azure 應用程式組態 事件訂閱,以將索引鍵/值修改事件傳送至 Web 端點。 Azure 應用程式組態 用戶可以訂閱每當修改索引鍵值時發出的事件。 這些事件可以觸發 Web hook、Azure Functions、Azure 儲存體佇列,或 Azure 事件方格所支援的任何其他事件處理常式。 通常,您會將事件傳送至可處理事件資料及採取行動的端點。 不過,若要簡化這篇文章,您可將事件傳送至可收集及顯示訊息的 Web 應用程式。

必要條件

  • Azure 訂用帳戶 - 免費建立一個訂用帳戶。 您可以選擇性地使用 Azure Cloud Shell。

Azure Cloud Shell

Azure Cloud Shell 是裝載於 Azure 中的互動式殼層環境,可在瀏覽器中使用。 您可以使用 Bash 或 PowerShell 搭配 Cloud Shell,與 Azure 服務共同使用。 您可以使用 Cloud Shell 預先安裝的命令,執行本文提到的程式碼,而不必在本機環境上安裝任何工具。

要啟動 Azure Cloud Shell:

選項 範例/連結
選取程式碼或命令區塊右上角的 [試試看]。 選取 [試試看] 並不會自動將程式碼或命令複製到 Cloud Shell 中。 Screenshot that shows an example of Try It for Azure Cloud Shell.
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 Button to launch Azure Cloud Shell.
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 Screenshot that shows the Cloud Shell button in the Azure portal

若要使用 Azure Cloud Shell:

  1. 啟動 Cloud Shell。

  2. 選取程式碼區塊 (或命令區塊) 上的 [複製] 按鈕以複製程式碼或命令。

  3. 透過在 Windows 和 Linux 上選取 Ctrl+Shift+V;或在 macOS 上選取 Cmd+Shift+V,將程式碼或命令貼到 Cloud Shell 工作階段中。

  4. 選取 Enter 鍵執行程式碼或命令。

如果您選擇在本機安裝和使用 CLI,本文會要求您執行最新版的 Azure CLI(2.0.70 或更新版本)。 若要尋找版本,請執行 az --version。 如果您需要安裝或升級,請參閱安裝 Azure CLI

如果您未使用 Cloud Shell,您必須先使用 az login登入。

建立資源群組

Event Grid 為 Azure 資源,必須放入 Azure 資源群組中。 資源群組是在其中部署與管理 Azure 資源的邏輯集合。

使用 az group create 命令來建立資源群組。

下列範例會在 westus <resource_group_name> 位置建立名為 的資源群組。 以資源群組的唯一名稱取代 <resource_group_name>

az group create --name <resource_group_name> --location westus

建立 應用程式組態 存放區

<appconfig_name>取代為您群組態存放區的唯一名稱,並以<resource_group_name>您稍早建立的資源群組取代 。 名稱必須是唯一的,因為它會當做 DNS 名稱使用。

az appconfig create \
  --name <appconfig_name> \
  --location westus \
  --resource-group <resource_group_name> \
  --sku free

建立訊息端點

訂閱主題之前,讓我們建立事件訊息的端點。 端點通常會根據事件資料來採取動作。 若要簡化此快速入門,請部署預先建置的 Web 應用程式以顯示事件訊息。 部署的解決方案包括 App Service 方案、App Service Web 應用程式,以及 GitHub 的原始程式碼。

以 Web 應用程式的唯一名稱取代 <your-site-name>。 Web 應用程式名稱必須是唯一的,因為它是 DNS 項目的一部分。

$sitename=<your-site-name>

az deployment group create \
  --resource-group <resource_group_name> \
  --template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" \
  --parameters siteName=$sitename hostingPlanName=viewerhost

部署需要幾分鐘的時間才能完成。 成功部署之後,檢視 Web 應用程式,確定它正在執行。 在網頁瀏覽器中,瀏覽至:https://<your-site-name>.azurewebsites.net

您現在應該會看到沒有顯示任何訊息的網站。

啟用事件方格資源提供者

  1. 如果您先前在 Azure 訂用帳戶中從未使用過事件方格,可能必須註冊事件方格資源提供者。 執行下列命令以註冊提供者:

    az provider register --namespace Microsoft.EventGrid
    
  2. 可能需要一點時間才能完成註冊。 若要檢查狀態,請執行下列命令:

    az provider show --namespace Microsoft.EventGrid --query "registrationState"
    

    registrationStateRegistered 時,代表已準備好繼續進行。

訂閱您的 應用程式組態 存放區

您可訂閱主題,告知 Event Grid 您想要追蹤的事件,以及要將事件傳送至何處。 下列範例會訂閱您所建立的 應用程式組態,並將來自 Web 應用程式的 URL 傳遞為事件通知的端點。 以事件訂用帳戶的名稱來取代 <event_subscription_name>。 對於 <resource_group_name><appconfig_name>,使用您稍早建立的值。

Web 應用程式的端點必須包含的尾碼 /api/updates/

appconfigId=$(az appconfig show --name <appconfig_name> --resource-group <resource_group_name> --query id --output tsv)
endpoint=https://$sitename.azurewebsites.net/api/updates

az eventgrid event-subscription create \
  --source-resource-id $appconfigId \
  --name <event_subscription_name> \
  --endpoint $endpoint

再次檢視您的 Web 應用程式,並注意訂閱驗證事件是否已傳送至其中。 選取眼睛圖示以展開事件資料。 事件方格會傳送驗證事件,以便端點確認接收事件資料。 Web 應用程式包括用於驗證訂閱的程式碼。

View subscription event

觸發 應用程式組態 事件

現在,讓我們觸發事件以了解 Event Grid 如何將訊息散發至您的端點。 使用 <appconfig_name> 先前的 建立索引鍵/值。

az appconfig kv set --name <appconfig_name> --key Foo --value Bar --yes

您已觸發此事件,而 Event Grid 會將訊息傳送至您在訂閱時設定的端點。 檢視您的 Web 應用程式,以查看您剛剛傳送的事件。

[{
  "id": "00000000-0000-0000-0000-000000000000",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/eventDemoGroup/providers/microsoft.appconfiguration/configurationstores/{appconfig-name}",
  "subject": "https://{appconfig-name}.azconfig.io/kv/Foo",
  "data": {
    "key": "Foo",
    "etag": "a1LIDdNEIV6wCnfv3xaip7fMXD3",
    "syncToken":"zAJw6V16=Njo1IzMzMjE3MzA=;sn=3321730"
  },
  "eventType": "Microsoft.AppConfiguration.KeyValueModified",
  "eventTime": "2019-05-31T18:59:54Z",
  "dataVersion": "1",
  "metadataVersion": "1"
}]

清除資源

如果您打算繼續使用此 應用程式組態 和事件訂用帳戶,請勿清除本文中建立的資源。 如果您不打算繼續,請使用下列命令來刪除您在本文建立的資源。

以您在上面建立的資源群組取代 <resource_group_name>

az group delete --name <resource_group_name>

下一步

既然您已瞭解如何建立主題和事件訂用帳戶,請深入瞭解索引鍵/值事件,以及事件方格可協助您執行的動作: