Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Usługa Azure Event Grid natywnie obsługuje zdarzenia w implementacji JSON powiązania protokołu CloudEvents w wersji 1.0 i PROTOKOŁU HTTP. CloudEvents to otwarta specyfikacja do opisywania danych zdarzeń. Rozwiązanie CloudEvents upraszcza współdziałanie, udostępniając wspólny schemat zdarzeń do publikowania i używania zdarzeń opartych na chmurze. Ten schemat umożliwia jednolite narzędzia, standardowe sposoby routingu i obsługi zdarzeń oraz uniwersalne sposoby deserializacji zewnętrznego schematu zdarzeń. Za pomocą wspólnego schematu można łatwiej zintegrować pracę między platformami.
Usługa CloudEvents jest tworzona przez kilku współpracowników, w tym firmę Microsoft, za pośrednictwem Natywnej Fundacji Przetwarzania w chmurze. Jest ona obecnie dostępna jako wersja 1.0.
W tym artykule opisano używanie schematu CloudEvents z usługą Event Grid.
Przykładowe zdarzenie przy użyciu schematu CloudEvents
Oto przykład zdarzenia usługi Azure Blob Storage w formacie CloudEvents:
{
"specversion": "1.0",
"type": "Microsoft.Storage.BlobCreated",
"source": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Storage/storageAccounts/{storage-account}",
"id": "9aeb0fdf-c01e-0131-0922-9eb54906e209",
"time": "2019-11-18T15:13:39.4589254Z",
"subject": "blobServices/default/containers/{storage-container}/blobs/{new-file}",
"data": {
"api": "PutBlockList",
"clientRequestId": "4c5dd7fb-2c48-4a27-bb30-5361b5de920a",
"requestId": "9aeb0fdf-c01e-0131-0922-9eb549000000",
"eTag": "0x8D76C39E4407333",
"contentType": "image/png",
"contentLength": 30699,
"blobType": "BlockBlob",
"url": "https://gridtesting.blob.core.windows.net/testcontainer/{new-file}",
"sequencer": "000000000000000000000000000099240000000000c41c18",
"storageDiagnostics": {
"batchId": "681fe319-3006-00a8-0022-9e7cde000000"
}
}
}
Szczegółowy opis dostępnych pól, ich typów i definicji w usłudze CloudEvents w wersji 1.0 jest dostępny tutaj.
Wartości nagłówków dla zdarzeń dostarczonych w schemacie CloudEvents i schematu usługi Event Grid są takie same z wyjątkiem content-type
. W przypadku schematu CloudEvents ta wartość nagłówka to "content-type":"application/cloudevents+json; charset=utf-8"
. W przypadku schematu usługi Event Grid ta wartość nagłówka to "content-type":"application/json; charset=utf-8"
.
Konfiguracja rozwiązania CloudEvents
Usługę Event Grid można użyć zarówno do danych wejściowych, jak i wyjściowych zdarzeń w schemacie CloudEvents. Zdarzenia systemowe, takie jak zdarzenia usługi Blob Storage i zdarzenia usługi IoT Hub oraz zdarzenia niestandardowe, można użyć rozwiązania CloudEvents. Oprócz obsługi usługi CloudEvents usługa Event Grid obsługuje zastrzeżony, niewyciągalny, ale w pełni funkcjonalny format zdarzeń usługi Event Grid. W poniższej tabeli opisano transformację obsługiwaną w przypadku używania formatów CloudEvents i Event Grid jako schematu wejściowego w tematach i jako schematu wyjściowego w subskrypcjach zdarzeń. Schemat danych wyjściowych usługi Event Grid nie może być używany w przypadku używania rozwiązania CloudEvents jako schematu wejściowego, ponieważ usługa CloudEvents obsługuje atrybuty rozszerzenia, które nie są obsługiwane przez schemat usługi Event Grid.
Schemat wejściowy | Schemat danych wyjściowych |
---|---|
Format CloudEvents | Format CloudEvents |
Format usługi Event Grid | Format CloudEvents |
Format usługi Event Grid | Format usługi Event Grid |
W przypadku wszystkich schematów zdarzeń usługa Event Grid wymaga weryfikacji podczas publikowania w temacie usługi Event Grid i podczas tworzenia subskrypcji zdarzeń. Aby uzyskać więcej informacji, zobacz Zabezpieczenia i uwierzytelnianie usługi Event Grid.
Schemat wejściowy
Schemat wejściowy dla tematu niestandardowego można ustawić podczas tworzenia tematu niestandardowego przy użyciu parametru input-schema
.
W przypadku interfejsu wiersza polecenia platformy Azure użyj:
az eventgrid topic create --name demotopic -l westcentralus -g gridResourceGroup --input-schema cloudeventschemav1_0
W przypadku programu PowerShell użyj polecenia:
New-AzEventGridTopic -ResourceGroupName gridResourceGroup -Location westcentralus -Name demotopic -InputSchema CloudEventSchemaV1_0
Schemat danych wyjściowych
Schemat danych wyjściowych można ustawić podczas tworzenia subskrypcji zdarzeń przy użyciu parametru event-delivery-schema
.
W przypadku interfejsu wiersza polecenia platformy Azure użyj:
topicID=$(az eventgrid topic show --name demotopic -g gridResourceGroup --query id --output tsv)
az eventgrid event-subscription create --name demotopicsub --source-resource-id $topicID --endpoint <endpoint_URL> --event-delivery-schema cloudeventschemav1_0
W przypadku programu PowerShell użyj polecenia:
$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name <topic-name>).Id
New-AzEventGridSubscription -ResourceId $topicid -EventSubscriptionName <event_subscription_name> -Endpoint <endpoint_URL> -DeliverySchema CloudEventSchemaV1_0
Używanie z usługą Azure Functions
Visual Studio lub Visual Studio Code
Jeśli używasz programu Visual Studio lub Visual Studio Code i języka programowania C# do tworzenia funkcji, upewnij się, że używasz najnowszej wersji pakietu NuGet Microsoft.Azure.WebJobs.Extensions.EventGrid (wersja 3.3.1 lub nowsza).
W programie Visual Studio użyj polecenia Tools ->NuGet Menedżer pakietów ->Menedżer pakietów Console i uruchom Install-Package
polecenie (Install-Package Microsoft.Azure.WebJobs.Extensions.EventGrid -Version 3.3.1
). Alternatywnie kliknij prawym przyciskiem myszy projekt w oknie Eksplorator rozwiązań i wybierz polecenie Zarządzaj pakietami NuGet, aby wyszukać pakiet NuGet, a następnie zainstalować lub zaktualizować go do najnowszej wersji.
W programie VS Code zaktualizuj numer wersji pakietu Microsoft.Azure.WebJobs.Extensions.EventGrid w pliku csproj projektu usługi Azure Functions.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<AzureFunctionsVersion>v4</AzureFunctionsVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.EventGrid" Version="3.3.1" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.1.1" />
</ItemGroup>
<ItemGroup>
<None Update="host.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="local.settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>
</ItemGroup>
</Project>
W poniższym przykładzie przedstawiono funkcję usługi Azure Functions w wersji 3.x, która jest opracowana w programie Visual Studio lub Visual Studio Code. Używa parametru CloudEvent
powiązania i EventGridTrigger
.
using Azure.Messaging;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.EventGrid;
using Microsoft.Extensions.Logging;
namespace Company.Function
{
public static class CloudEventTriggerFunction
{
[FunctionName("CloudEventTriggerFunction")]
public static void Run(ILogger logger, [EventGridTrigger] CloudEvent e)
{
logger.LogInformation("Event received {type} {subject}", e.Type, e.Subject);
}
}
}
Środowisko programistyczne witryny Azure Portal
Jeśli używasz witryny Azure Portal do tworzenia funkcji platformy Azure, wykonaj następujące kroki:
Zaktualizuj nazwę parametru w
function.json
pliku nacloudEvent
.{ "bindings": [ { "type": "eventGridTrigger", "name": "cloudEvent", "direction": "in" } ] }
run.csx
Zaktualizuj plik, jak pokazano w poniższym przykładowym kodzie.#r "Azure.Core" using Azure.Messaging; public static void Run(CloudEvent cloudEvent, ILogger logger) { logger.LogInformation("Event received {type} {subject}", cloudEvent.Type, cloudEvent.Subject); }
Uwaga
Aby uzyskać więcej informacji, zobacz Wyzwalacz usługi Azure Event Grid dla usługi Azure Functions.
Powiązana zawartość
Aby uzyskać informacje na temat walidacji punktu końcowego za pomocą zdarzeń w chmurze, zobacz Walidacja punktu końcowego za pomocą rozwiązania CloudEvents 1.0.