Skip to content

Latest commit

 

History

History
200 lines (117 loc) · 9.86 KB

File metadata and controls

200 lines (117 loc) · 9.86 KB
title Azure Event Grid bindings for Azure Functions
description Understand how to handle Event Grid events in Azure Functions.
ms.topic reference
ms.date 03/04/2022
ms.custom fasttrack-edit, devx-track-extended-java, devx-track-js, devx-track-python, devx-track-ts
zone_pivot_groups programming-languages-set-functions

Azure Event Grid bindings for Azure Functions

This reference shows how to connect to Azure Event Grid using Azure Functions triggers and bindings.

[!INCLUDE functions-event-grid-intro]

Action Type
Run a function when an Event Grid event is dispatched Trigger
Sends an Event Grid event Output binding
Control the returned HTTP status code HTTP endpoint

::: zone pivot="programming-language-csharp"

Install extension

The extension NuGet package you install depends on the C# mode you're using in your function app:

Functions execute in an isolated C# worker process. To learn more, see Guide for running C# Azure Functions in an isolated worker process.

[!INCLUDE functions-in-process-model-retirement-note]

Functions execute in the same process as the Functions host. To learn more, see Develop C# class library functions using Azure Functions.

In a variation of this model, Functions can be run using C# scripting, which is supported primarily for C# portal editing. To update existing binding extensions for C# script apps running in the portal without having to republish your function app, see Update your extensions.


The functionality of the extension varies depending on the extension version:

This section describes using a class library. For C# scripting, you would need to instead install the extension bundle, version 3.x.

This version of the extension supports updated Event Grid binding parameter types of Azure.Messaging.CloudEvent and Azure.Messaging.EventGrid.EventGridEvent.

Add this version of the extension to your project by installing the NuGet package, version 3.x.

This section describes using a class library. For C# scripting, you would need to instead install the extension bundle, version 2.x.

Supports the default Event Grid binding parameter type of Microsoft.Azure.EventGrid.Models.EventGridEvent. Event Grid extension versions earlier than 3.x don't support CloudEvents schema. To consume this schema, instead use an HTTP trigger, or switch to Extension v3.x.

Add the extension to your project by installing the NuGet package, version 2.x.

[!INCLUDE functions-runtime-1x-retirement-note]

Functions 1.x apps automatically have a reference to the Microsoft.Azure.WebJobs NuGet package, version 2.x. Event Grid extension versions earlier than 3.x don't support CloudEvents schema. To consume this schema, instead use an HTTP trigger, or switch to Extension v3.x. To do so, you will need to upgrade your application to Functions 4.x.

The Event Grid output binding is only available for Functions 2.x and higher.

Add the extension to your project by installing the NuGet package, version 3.x.

Add the extension to your project by installing the NuGet package, version 2.x. Event Grid extension versions earlier than 3.x don't support CloudEvents schema. To consume this schema, instead use an HTTP trigger.

Functions version 1.x doesn't support the isolated worker process.

The Event Grid output binding is only available for Functions 2.x and higher.


::: zone-end

::: zone pivot="programming-language-javascript,programming-language-typescript,programming-language-python,programming-language-java,programming-language-powershell"

[!INCLUDE functions-install-extension-bundle]

Considerations for the Event Grid extension:

  • Event Grid extension versions earlier than 3.x don't support CloudEvents schema. To consume this schema, instead use an HTTP trigger.
  • The Event Grid output binding is only available for Functions 2.x and higher.

::: zone-end

::: zone pivot="programming-language-csharp"

Binding types

The binding types supported for .NET depend on both the extension version and C# execution mode, which can be one of the following:

An isolated worker process class library compiled C# function runs in a process isolated from the runtime.

An in-process class library is a compiled C# function runs in the same process as the Functions runtime.


Choose a version to see binding type details for the mode and version.

The Event Grid extension supports parameter types according to the table below.

Binding Parameter types
Event Grid trigger CloudEvent
EventGridEvent
BinaryData
Newtonsoft.Json.Linq.JObject
string
Event Grid output (single event) CloudEvent
EventGridEvent
BinaryData
Newtonsoft.Json.Linq.JObject
string
Event Grid output (multiple events) ICollector<T> or IAsyncCollector<T> where T is one of the single event types

This version of the extension supports parameter types according to the table below. It doesn't support for the CloudEvents schema, which is exclusive to Extension v3.x.

Binding Parameter types
Event Grid trigger Microsoft.Azure.EventGrid.Models.EventGridEvent
Newtonsoft.Json.Linq.JObject
string
Event Grid output Microsoft.Azure.EventGrid.Models.EventGridEvent
Newtonsoft.Json.Linq.JObject
string

This version of the extension supports parameter types according to the table below. It doesn't support for the CloudEvents schema, which is exclusive to Extension v3.x.

Binding Parameter types
Event Grid trigger Newtonsoft.Json.Linq.JObject
string
Event Grid output Newtonsoft.Json.Linq.JObject
string

The isolated worker process supports parameter types according to the tables below. Support for binding to Stream, and to types from Azure.Messaging is in preview.

Event Grid trigger

[!INCLUDE functions-bindings-event-grid-trigger-dotnet-isolated-types]

Event Grid output binding

[!INCLUDE functions-bindings-event-grid-output-dotnet-isolated-types]

Earlier versions of this extension in the isolated worker process only support binding to strings and plain-old CLR object (POCO) types. Additional options are available to Extension v3.x.

Functions version 1.x doesn't support isolated worker process. To use the isolated worker model, upgrade your application to Functions 4.x.


:::zone-end

host.json settings

The Event Grid trigger uses a webhook HTTP request, which can be configured using the same host.json settings as the HTTP Trigger.

Next steps