快速入門:使用 Azure CLI 透過事件方格將自訂事件路由至 Azure 佇列儲存體
Azure 事件方格是一種高度可調整且無伺服器的事件訊息代理程式,您可以使用事件搭配它來整合應用程式。 事件方格會將事件傳遞至支援的事件處理常式,而 Azure 佇列儲存體就是其中之一。 在本文中,您會使用 Azure CLI 來執行下列步驟:
- 建立 Event Grid 自訂主題。
- 建立自訂主題的 Azure 佇列訂用帳戶。
- 將範例事件傳送至自訂主題。
- 確認這些事件已傳遞至 Azure 佇列儲存體。
如果您沒有 Azure 訂用帳戶,請在開始之前先建立 Azure 免費帳戶。
建立資源群組
Event Grid 為 Azure 資源,必須放入 Azure 資源群組中。 資源群組是在其中部署與管理 Azure 資源的邏輯集合。
使用 az group create 命令來建立資源群組。 下列範例會在 westus2 位置建立名為 gridResourceGroup 的資源群組。
注意
選取 CLI 範例旁邊的 [試用],在右窗格中啟動 Cloud Shell。 選取 [複製] 按鈕以複製命令,並將其貼到 Cloud Shell 視窗中,然後按 ENTER 執行命令。
az group create --name gridResourceGroup --location westus2
啟用事件方格資源提供者
如果您先前在 Azure 訂用帳戶中從未使用過事件方格,可能必須註冊事件方格資源提供者。 執行下列命令以註冊提供者:
az provider register --namespace Microsoft.EventGrid
可能需要一點時間才能完成註冊。 若要查看狀態,請執行下列命令:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
當
registrationState
是Registered
時,代表已準備好繼續進行。
建立自訂主題
事件方格主題會提供使用者定義的端點,作為您發佈事件的目的地。 下列範例可在您的資源群組中建立自訂主題。 以自訂主題的唯一名稱取代 <topic_name>
。 事件方格主題名稱必須是唯一的,因為它由網域名稱系統 (DNS) 項目表示。
指定主題的名稱。
topicname="<TOPIC NAME>"
執行下列命令來建立主題。
az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
建立佇列儲存體
訂閱自訂主題之前,讓我們建立事件訊息的端點。 您將建立佇列儲存體來收集事件。
為 Azure 儲存體帳戶輸入唯一名稱。
storagename="<STORAGE ACCOUNT NAME>"
執行下列命令以在儲存體中建立 Azure 儲存體帳戶和佇列 (名為
eventqueue
)。queuename="eventqueue" az storage account create -n $storagename -g gridResourceGroup -l westus2 --sku Standard_LRS key="$(az storage account keys list -n $storagename --query "[0].{value:value}" --output tsv)" az storage queue create --name $queuename --account-name $storagename --account-key $key
訂閱自訂主題
下列範例可訂閱您所建立的自訂主題,以及傳遞端點的佇列儲存體資源識別碼。 利用 Azure CLI,您可以傳遞佇列儲存體識別碼作為端點。 端點的格式如下:
/subscriptions/<AZURE SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP NAME>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/queueservices/default/queues/<QUEUE NAME>
下列指令碼會取得佇列的儲存體帳戶資源識別碼。 它會建構佇列儲存體的識別碼,並訂閱事件方格主題。 並將端點類型設為 storagequeue
,然後使用端點的佇列識別碼。
重要
以實際值取代到期日預留位置 (<yyyy-mm-dd>
)。 例如:在執行命令之前 2022-11-17
。
storageid=$(az storage account show --name $storagename --resource-group gridResourceGroup --query id --output tsv)
queueid="$storageid/queueservices/default/queues/$queuename"
topicid=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query id --output tsv)
az eventgrid event-subscription create \
--source-resource-id $topicid \
--name mystoragequeuesubscription \
--endpoint-type storagequeue \
--endpoint $queueid \
--expiration-date "<yyyy-mm-dd>"
建立事件訂用帳戶的帳戶必須具有佇列儲存體的寫入權限。 請留意到已針對訂閱設定到期日。
如果您使用 REST API 來建立訂用帳戶時,可以傳遞儲存體帳戶的識別碼和佇列的名稱作為個別參數。
"destination": {
"endpointType": "storagequeue",
"properties": {
"queueName":"eventqueue",
"resourceId": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-name>"
}
...
將事件傳送至您的自訂主題
讓我們觸發事件以了解 Event Grid 如何將訊息散發至您的端點。 首先,讓我們取得自訂主題的 URL 和金鑰。
endpoint=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicname -g gridResourceGroup --query "key1" --output tsv)
若要簡化這篇文章,您可使用要傳送至自訂主題的範例事件資料。 一般而言,應用程式或 Azure 服務就會傳送事件資料。 CURL 是可傳送 HTTP 要求的公用程式。 在本文中,您會使用 CURL 將事件傳送到自訂主題。 下列範例會將三個事件傳送至事件方格主題:
for i in 1 2 3
do
event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/motorcycles", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "make": "Ducati", "model": "Monster"},"dataVersion": "1.0"} ]'
curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
done
請在入口網站中瀏覽至佇列,並注意事件方格會傳送這三個事件至佇列。
清除資源
如果您打算繼續使用此事件,請勿清除在本文中建立的資源。 否則,請使用下列命令來刪除您在本文建立的資源。
az group delete --name gridResourceGroup
下一步
您現在知道如何建立主題和事件訂閱,深入了解 Event Grid 可協助您:
請參閱下列範例,了解如何使用不同的程式設計語言,將事件發佈至事件方格,以及從事件方格取用事件。