Bird
Raised Fist0
Azurecloud~5 mins

Event Grid for event routing in Azure - Commands & Configuration

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
Event Grid helps send messages from one place to another automatically when something happens. It solves the problem of connecting different parts of your cloud system without writing complex code.
When you want to notify a function or app immediately after a file is uploaded to storage.
When you need to trigger workflows after a database record changes.
When you want to connect different cloud services without polling or manual checks.
When you want to build reactive apps that respond to events in real time.
When you want to route events from multiple sources to different destinations easily.
Config File - eventgrid-subscription.json
eventgrid-subscription.json
{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.EventGrid/eventSubscriptions",
      "apiVersion": "2021-06-01-preview",
      "name": "storageBlobCreatedSubscription",
      "properties": {
        "destination": {
          "endpointType": "WebHook",
          "properties": {
            "endpointUrl": "https://myapp.azurewebsites.net/api/eventhandler"
          }
        },
        "filter": {
          "includedEventTypes": ["Microsoft.Storage.BlobCreated"]
        },
        "eventDeliverySchema": "EventGridSchema"
      }
    }
  ]
}

This JSON file defines an Event Grid subscription.

type: Specifies this is an Event Grid subscription resource.

name: The name of the subscription.

destination: Where events are sent, here a webhook URL.

filter: Limits events to only blob creation events.

eventDeliverySchema: Format of the event data.

Commands
This command creates an Event Grid subscription that listens to blob creation events on the specified storage account and sends them to the webhook endpoint.
Terminal
az eventgrid event-subscription create --name storageBlobCreatedSubscription --source-resource-id /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/example-rg/providers/Microsoft.Storage/storageAccounts/exampleaccount --endpoint https://myapp.azurewebsites.net/api/eventhandler --included-event-types Microsoft.Storage.BlobCreated
Expected OutputExpected
{ "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/example-rg/providers/Microsoft.Storage/storageAccounts/exampleaccount/providers/Microsoft.EventGrid/eventSubscriptions/storageBlobCreatedSubscription", "name": "storageBlobCreatedSubscription", "type": "Microsoft.EventGrid/eventSubscriptions", "destination": { "endpointType": "WebHook", "properties": { "endpointUrl": "https://myapp.azurewebsites.net/api/eventhandler" } }, "filter": { "includedEventTypes": [ "Microsoft.Storage.BlobCreated" ] }, "eventDeliverySchema": "EventGridSchema" }
--name - Sets the name of the event subscription
--source-resource-id - Specifies the resource to listen for events
--endpoint - Defines where to send the events
This command checks the details of the created Event Grid subscription to confirm it is set up correctly.
Terminal
az eventgrid event-subscription show --name storageBlobCreatedSubscription --source-resource-id /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/example-rg/providers/Microsoft.Storage/storageAccounts/exampleaccount
Expected OutputExpected
{ "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/example-rg/providers/Microsoft.Storage/storageAccounts/exampleaccount/providers/Microsoft.EventGrid/eventSubscriptions/storageBlobCreatedSubscription", "name": "storageBlobCreatedSubscription", "type": "Microsoft.EventGrid/eventSubscriptions", "destination": { "endpointType": "WebHook", "properties": { "endpointUrl": "https://myapp.azurewebsites.net/api/eventhandler" } }, "filter": { "includedEventTypes": [ "Microsoft.Storage.BlobCreated" ] }, "eventDeliverySchema": "EventGridSchema" }
--name - Specifies the subscription name to show
--source-resource-id - Specifies the source resource of the subscription
This command deletes the Event Grid subscription when it is no longer needed to avoid unnecessary event traffic and charges.
Terminal
az eventgrid event-subscription delete --name storageBlobCreatedSubscription --source-resource-id /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/example-rg/providers/Microsoft.Storage/storageAccounts/exampleaccount
Expected OutputExpected
No output (command runs silently)
--name - Specifies the subscription name to delete
--source-resource-id - Specifies the source resource of the subscription
Key Concept

If you remember nothing else from this pattern, remember: Event Grid connects event sources to event handlers automatically, so your apps react instantly without polling.

Common Mistakes
Using the wrong resource ID for the source when creating the subscription
The subscription will not receive events because it listens to the wrong source.
Always copy the exact resource ID of the event source from Azure portal or CLI.
Not specifying the correct event types in the filter
You may receive unwanted events or miss important ones.
Specify only the event types your app needs to handle, like Microsoft.Storage.BlobCreated.
Using an incorrect or unreachable endpoint URL
Events will fail to deliver and may be retried or lost.
Use a valid, publicly accessible HTTPS endpoint that can accept Event Grid events.
Summary
Create an Event Grid subscription to route specific events from a source to a destination endpoint.
Verify the subscription details to ensure it listens to the correct events and sends them properly.
Delete the subscription when it is no longer needed to keep your environment clean.

Practice

(1/5)
1. What is the main purpose of Azure Event Grid in cloud applications?
easy
A. To route events from sources to event handlers automatically
B. To store large amounts of data for analytics
C. To create virtual machines for compute power
D. To manage user identities and access control

Solution

  1. Step 1: Understand Event Grid's role

    Event Grid is designed to route events from sources to handlers automatically, enabling reactive applications.
  2. Step 2: Compare with other services

    Other options describe different Azure services: storage, compute, and identity management, not event routing.
  3. Final Answer:

    To route events from sources to event handlers automatically -> Option A
  4. Quick Check:

    Event routing = To route events from sources to event handlers automatically [OK]
Hint: Event Grid moves events, not data or users [OK]
Common Mistakes:
  • Confusing Event Grid with storage services
  • Thinking Event Grid manages virtual machines
  • Mixing Event Grid with identity services
2. Which Azure CLI command correctly creates an Event Grid subscription named mySub for a topic myTopic?
easy
A. az eventgrid subscription create --topic myTopic --name mySub
B. az eventgrid event-subscription create --name mySub --source-resource-id myTopic
C. az eventgrid topic create --name mySub --source myTopic
D. az eventgrid event-subscription create --name mySub --source-resource-id /subscriptions/.../resourceGroups/.../providers/Microsoft.EventGrid/topics/myTopic

Solution

  1. Step 1: Identify correct CLI syntax for event subscription

    The command requires the full resource ID for the source topic using --source-resource-id.
  2. Step 2: Evaluate options

    az eventgrid event-subscription create --name mySub --source-resource-id /subscriptions/.../resourceGroups/.../providers/Microsoft.EventGrid/topics/myTopic uses the full resource ID format, which is required. az eventgrid event-subscription create --name mySub --source-resource-id myTopic lacks full resource ID, C creates a topic not subscription, D uses wrong command.
  3. Final Answer:

    az eventgrid event-subscription create --name mySub --source-resource-id /subscriptions/.../resourceGroups/.../providers/Microsoft.EventGrid/topics/myTopic -> Option D
  4. Quick Check:

    Full resource ID needed for subscription creation [OK]
Hint: Use full resource ID with --source-resource-id for subscriptions [OK]
Common Mistakes:
  • Using topic creation command instead of subscription
  • Omitting full resource ID in source
  • Using incorrect command names
3. Given this Azure CLI command output snippet for an Event Grid subscription:
{
  "destination": {
    "endpointType": "WebHook",
    "properties": {
      "endpointUrl": "https://myapp.com/api/events"
    }
  },
  "filter": {
    "subjectBeginsWith": "orders/",
    "subjectEndsWith": ".json"
  }
}
Which events will be delivered to the webhook endpoint?
medium
A. Only events with subjects exactly 'orders/.json'
B. All events regardless of subject
C. All events with subjects starting with 'orders/' and ending with '.json'
D. Events with subjects containing 'orders/' anywhere

Solution

  1. Step 1: Understand subject filters in Event Grid

    The filter uses subjectBeginsWith and subjectEndsWith to select events whose subject starts with 'orders/' and ends with '.json'.
  2. Step 2: Analyze options

    All events with subjects starting with 'orders/' and ending with '.json' matches the filter exactly. Only events with subjects exactly 'orders/.json' is too strict (exact match), C ignores filters, D is incorrect because 'contains' is not used.
  3. Final Answer:

    All events with subjects starting with 'orders/' and ending with '.json' -> Option C
  4. Quick Check:

    Subject filters = startsWith + endsWith [OK]
Hint: Filters combine start and end patterns, not exact or contains [OK]
Common Mistakes:
  • Assuming exact subject match required
  • Ignoring subject filters and expecting all events
  • Confusing contains with beginsWith or endsWith
4. You created an Event Grid subscription but your webhook endpoint is not receiving events. Which of these is the most likely cause?
medium
A. The Event Grid topic does not exist
B. The webhook endpoint URL is incorrect or unreachable
C. You forgot to create an Azure Storage account
D. The subscription filter matches all events

Solution

  1. Step 1: Check webhook endpoint accessibility

    If the webhook URL is wrong or the endpoint is down, events cannot be delivered.
  2. Step 2: Evaluate other options

    Topic existence is important but usually checked at creation; storage account is unrelated; a filter matching all events would not block delivery.
  3. Final Answer:

    The webhook endpoint URL is incorrect or unreachable -> Option B
  4. Quick Check:

    Endpoint must be reachable for event delivery [OK]
Hint: Check webhook URL and network access first [OK]
Common Mistakes:
  • Assuming storage account is needed for Event Grid
  • Ignoring endpoint network issues
  • Thinking filters block all events by default
5. You want to route events from multiple Azure Blob Storage accounts to a single Azure Function using Event Grid. What is the best approach to achieve this?
hard
A. Create an Event Grid subscription for each storage account, all pointing to the same Azure Function endpoint
B. Create one Event Grid subscription on one storage account and expect it to receive events from all accounts
C. Use Azure Logic Apps to poll each storage account and forward events to the function
D. Configure the Azure Function to listen directly to all storage accounts without Event Grid

Solution

  1. Step 1: Understand Event Grid subscription scope

    Event Grid subscriptions are scoped to a single resource, so each storage account needs its own subscription.
  2. Step 2: Evaluate options

    Create an Event Grid subscription for each storage account, all pointing to the same Azure Function endpoint correctly creates multiple subscriptions pointing to one function. Create one Event Grid subscription on one storage account and expect it to receive events from all accounts is invalid because one subscription cannot cover multiple accounts. Use Azure Logic Apps to poll each storage account and forward events to the function adds unnecessary polling. Configure the Azure Function to listen directly to all storage accounts without Event Grid is not supported as functions rely on Event Grid for event routing.
  3. Final Answer:

    Create an Event Grid subscription for each storage account, all pointing to the same Azure Function endpoint -> Option A
  4. Quick Check:

    One subscription per source resource [OK]
Hint: Each source needs its own subscription to route events [OK]
Common Mistakes:
  • Assuming one subscription covers multiple sources
  • Using polling instead of event-driven routing
  • Expecting Azure Function to listen without Event Grid