快速入門:使用 Azure CLI 將 Azure Cache for Redis 事件路由傳送至 Web 端點

Azure Event Grid 是一項雲端事件服務。 在本快速入門中,您將使用 Azure CLI 訂閱 Azure Cache for Redis 事件、觸發事件,以及檢視結果。

通常,您會將事件傳送至可處理事件資料及採取行動的端點。 不過,為了簡化本快速入門,您會將事件傳送至 Web 應用程式,以收集和顯示訊息。 當您完成本快速入門中所述的步驟時,您會看到事件數據已傳送至 Web 應用程式。

如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶

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登入。

建立資源群組

事件方格主題會部署為個別的 Azure 資源,且必須在 Azure 資源群組下布建。 資源群組是用來部署和管理 Azure 資源的邏輯集合。

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

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

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

建立快取實例

#/bin/bash

# Create a Basic C0 (256 MB) Azure Cache for Redis instance
az redis create --name <cache_name> --resource-group <resource_group_name> --location westcentralus --sku Basic --vm-size C0

建立訊息端點

訂閱主題之前,讓我們建立事件訊息的端點。 端點通常會根據事件資料來採取動作。 若要簡化此快速入門,請部署預先建置的 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/main/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 時,代表已準備好繼續進行。

訂閱 Azure Cache for Redis 實例

在此步驟中,您將訂閱主題,告知事件方格您想要追蹤的事件,以及傳送這些事件的位置。 下列範例會訂閱您所建立的 Azure Cache for Redis 實例,並從 Web 應用程式傳遞 URL 作為事件通知的端點。 以事件訂用帳戶的名稱來取代 <event_subscription_name>。 對於 <resource_group_name><cache_name>,使用您稍早建立的值。

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

cacheId=$(az redis show --name <cache_name> --resource-group <resource_group_name> --query id --subscription <subscription_id> --output tsv)
endpoint=https://$sitename.azurewebsites.net/api/updates

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

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

Azure Event Grid Viewer.

從 Azure Cache for Redis 觸發事件

現在,讓我們觸發事件以了解 Event Grid 如何將訊息散發至您的端點。 讓我們導出儲存在 Azure Cache for Redis 實例中的數據。 同樣地,使用您稍早建立之 {cache_name}{resource_group_name} 的值。

az redis export  --ids '/subscriptions/{subscription_id}/resourceGroups/{resource_group_name}/providers/Microsoft.Cache/Redis/{cache_name}' \
    --prefix '<prefix_for_exported_files>' \
    --container '<SAS_url>'  

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

[{
"id": "e1ceb52d-575c-4ce4-8056-115dec723cff",
  "eventType": "Microsoft.Cache.ExportRDBCompleted",
  "topic": "/subscriptions/{subscription_id}/resourceGroups/{resource_group_name}/providers/Microsoft.Cache/Redis/{cache_name}",
  "data": {
    "name": "ExportRDBCompleted",
    "timestamp": "2020-12-10T18:07:54.4937063+00:00",
    "status": "Succeeded"
  },
  "subject": "ExportRDBCompleted",
  "dataversion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2020-12-10T18:07:54.4937063+00:00"
}]

清除資源

如果您打算繼續使用此 Azure Cache for Redis 實例和事件訂用帳戶,請勿清除本快速入門中建立的資源。 如果您不打算繼續,請使用下列命令來刪除您在本快速入門中建立的資源。

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

az group delete --name <resource_group_name>

下一步

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