Snabbstart: Dirigera anpassade händelser till Azure Queue Storage via Event Grid med Hjälp av Azure CLI

Azure Event Grid är en mycket skalbar och serverlös händelsekö som du kan använda för att integrera program med hjälp av händelser. Event Grid levererar händelser till händelsehanterare som stöds och Azure Queue Storage är en av dem. I den här artikeln använder du Azure CLI för följande steg:

  1. Skapa ett Event Grid-anpassat ämne.
  2. Skapa en Azure Queue-prenumeration för det anpassade ämnet.
  3. Skicka exempelhändelser till det anpassade ämnet.
  4. Kontrollera att dessa händelser levereras till Azure Queue Storage.

Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.

Skapa en resursgrupp

Event Grid-ämnen är Azure-resurser och måste placeras i en Azure-resursgrupp. Resursgruppen är en logisk samling där Azure-resurser distribueras och hanteras.

Skapa en resursgrupp med kommandot az group create. I följande exempel skapas en resursgrupp med namnet gridResourceGroup på platsen westus2.

Kommentar

Välj Prova bredvid CLI-exemplet för att starta Cloud Shell i den högra rutan. Välj knappen Kopiera för att kopiera kommandot, klistra in det i Cloud Shell-fönstret och tryck sedan på RETUR för att köra kommandot.

az group create --name gridResourceGroup --location westus2

Aktivera Event Grid-resursprovidern

  1. Om du inte tidigare har använt Event Grid i din Azure-prenumeration kan du behöva registrera Event Grid-resursprovidern. Registrera providern genom att köra följande kommando:

    az provider register --namespace Microsoft.EventGrid
    
  2. Det kan ta en stund innan registreringen är klar. Kontrollera statusen genom att köra följande kommando:

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

    När registrationState är Registered kan du fortsätta.

Skapa en anpassat ämne

Ett Event Grid-ämne innehåller en användardefinierad slutpunkt som du publicerar dina händelser till. I följande exempel skapas det anpassade ämnet i din resursgrupp. Ersätt <topic_name> med ett unikt namn för ditt anpassade ämne. Event Grid-ämnesnamnet måste vara unikt eftersom det representeras av en DNS-post (Domain Name System).

  1. Ange ett namn för ämnet.

    topicname="<TOPIC NAME>"
    
  2. Kör följande kommando för att skapa ämnet.

    az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
    

Skapa Queue Storage

Innan du prenumererar på det anpassade ämnet ska vi ska slutpunkten för händelsemeddelandet. Du skapar en Queue Storage för att samla in händelserna.

  1. Ange ett unikt namn för Azure Storage-kontot.

    storagename="<STORAGE ACCOUNT NAME>"    
    
  2. Kör följande kommandon för att skapa ett Azure Storage-konto och en kö (med namnet eventqueue) i lagringen.

    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
    

Prenumerera på ett anpassat ämne

I följande exempel prenumererar vi på det anpassade ämne du just skapat, och överför resurs-id:t för Queue Storage som slutpunkt. Med Azure CLI skickar du Queue Storage-ID:t som slutpunkten. Slutpunkten är i formatet:

/subscriptions/<AZURE SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP NAME>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/queueservices/default/queues/<QUEUE NAME>

Följande skript hämtar lagringskontots resurs-ID för kön. Den skapar ID:t för kölagringen och prenumererar på ett Event Grid-ämne. Det ställer in slutpunktstypen på storagequeue och använder kö-ID:t för slutpunkten.

Viktigt!

Ersätt platshållaren för förfallodatum (<yyyy-mm-dd>) med ett faktiskt värde. Till exempel: 2022-11-17 innan du kör kommandot.

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>"

Det konto som skapar händelseprenumerationen måste ha skrivbehörighet till Queue Storage. Observera att ett förfallodatum har angetts för prenumerationen.

Om du använder REST API:et för att skapa prenumerationen skickar du ID:t för lagringskontot och namnet på kön som en separat parameter.

"destination": {
  "endpointType": "storagequeue",
  "properties": {
    "queueName":"eventqueue",
    "resourceId": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-name>"
  }
  ...

Skicka en händelse till det anpassade ämnet

Nu ska vi utlösa en händelse och se hur Event Grid distribuerar meddelandet till slutpunkten. Först måste vi ta fram URL och nyckel för det anpassade ämnet.

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)

För att göra den här artikeln enklare använder du exempelhändelsedata för att skicka till det anpassade ämnet. Ett program eller en Azure-tjänst skulle vanligtvis skicka sådana händelsedata. CURL är ett verktyg som skickar HTTP-förfrågningar. I den här artikeln använder du CURL för att skicka händelsen till det anpassade ämnet. I följande exempel skickas tre händelser till Event Grid-ämnet:

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

Gå till Queue Storage i portalen och kontrollera att Event Grid skickade de tre händelserna till kön.

Screenshot showing the list of messages in the queue that are received from Event Grid.

Rensa resurser

Om du planerar att fortsätta arbeta med den här händelsen ska du inte rensa upp bland de resurser som skapades i den här artikeln. I annat fall kan du använda kommandona nedan för att ta bort alla resurser som har skapats i den här artikeln.

az group delete --name gridResourceGroup

Nästa steg

Nu när du vet hur du skapar ämnen och prenumerationer på händelser kan du läsa mer om vad Event Grid kan hjälpa dig med:

Se följande exempel för att lära dig mer om att publicera händelser till och använda händelser från Event Grid med olika programmeringsspråk.