Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Azure Event Grid nativně podporuje události v implementaci JSON pro CloudEvents v1.0 a vázání protokolu HTTP. CloudEvents je otevřená specifikace pro popis dat událostí. CloudEvents zjednodušuje interoperabilitu tím, že poskytuje společné schéma událostí pro publikování a využívání cloudových událostí. Toto schéma umožňuje jednotné nástroje, standardní způsoby směrování a zpracování událostí a univerzální způsoby deserializace vnějšího schématu událostí. Pomocí běžného schématu můžete snadněji integrovat práci napříč platformami.
Několik spolupracovníků, včetně Microsoftu, vytváří CloudEvents prostřednictvím služby Cloud Native Computing Foundation. Aktuálně je k dispozici ve verzi 1.0.
Tento článek popisuje použití schématu CloudEvents se službou Event Grid.
Ukázková událost s využitím schématu CloudEvents
Tady je příklad události Azure Blob Storage ve formátu 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"
}
}
}
Tady najdete podrobný popis dostupných polí, jejich typů a definic v CloudEvents verze 1.0.
Hodnoty hlaviček pro události doručené ve schématu CloudEvents a schéma Event Gridu jsou stejné s výjimkou content-type. Pro schéma CloudEvents je hodnota této hlavičky "content-type":"application/cloudevents+json; charset=utf-8". Pro schéma Event Gridu je hodnota této hlavičky "content-type":"application/json; charset=utf-8".
Konfigurace pro CloudEvents
Event Grid můžete použít pro vstup i výstup událostí ve schématu CloudEvents. CloudEvents můžete použít pro systémové události, jako jsou události služby Blob Storage a události služby IoT Hub a vlastní události. Kromě podpory CloudEvents podporuje Event Grid proprietární, nerozšiřitelný, ale plně funkční formát Event Grid událostí. Následující tabulka popisuje transformaci podporovanou při použití CloudEvents a Event Gridu jako vstupního schématu v tématech a jako výstupní schéma v odběrech událostí. Výstupní schéma Event Gridu nejde použít při použití CloudEvents jako vstupního schématu, protože CloudEvents podporuje atributy rozšíření, které schéma Event Gridu nepodporuje.
| Vstupní schéma | Výstupní schéma |
|---|---|
| Formát CloudEvents | Formát CloudEvents |
| Formát Event Gridu | Formát CloudEvents |
| Formát Event Gridu | Formát Event Gridu |
Pro všechna schémata událostí vyžaduje Event Grid ověření při publikování do tématu Event Gridu a při vytváření odběru událostí. Další informace najdete v tématu Zabezpečení a ověřování služby Event Grid.
Vstupní schéma
Nastavte vstupní schéma pro vlastní téma při jeho vytváření pomocí parametru input-schema.
Pokud používáte Azure CLI, použijte:
az eventgrid topic create --name demotopic -l westcentralus -g gridResourceGroup --input-schema cloudeventschemav1_0
Pokud používáte PowerShell, použijte:
New-AzEventGridTopic -ResourceGroupName gridResourceGroup -Location westcentralus -Name demotopic -InputSchema CloudEventSchemaV1_0
Výstupní schéma
Při vytváření odběru událostí pomocí parametru event-delivery-schema nastavte výstupní schéma.
Pokud používáte Azure CLI, použijte:
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
Pokud používáte PowerShell, použijte:
$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name <topic-name>).Id
New-AzEventGridSubscription -ResourceId $topicid -EventSubscriptionName <event_subscription_name> -Endpoint <endpoint_URL> -DeliverySchema CloudEventSchemaV1_0
Použití se službou Azure Functions
Visual Studio nebo Visual Studio Code
Pokud k vývoji funkcí používáte Visual Studio nebo Visual Studio Code a programovací jazyk C#, ujistěte se, že používáte nejnovější balíček NuGet Microsoft.Azure.WebJobs.Extensions.EventGrid (verze 3.3.1 nebo novější).
V sadě Visual Studio použijte Nástroje - NuGet Správce balíčků - Konzole Správce balíčků a spusťte příkaz (Install-Package) (Install-Package Microsoft.Azure.WebJobs.Extensions.EventGrid -Version 3.3.1). Případně klikněte pravým tlačítkem myši na projekt v okně Průzkumník řešení a výběrem nabídky Spravovat balíčky NuGet vyhledejte balíček NuGet a nainstalujte ho nebo aktualizujte na nejnovější verzi.
Ve VS Code aktualizujte číslo verze balíčku Microsoft.Azure.WebJobs.Extensions.EventGrid v souboru csproj pro váš projekt 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>
Následující příklad ukazuje funkci Azure Functions verze 3.x vyvinutou ve Visual Studiu nebo ve Visual Studio Code. Používá parametr vazby CloudEvent a 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);
}
}
}
Vývojové prostředí na Azure portálu
Pokud k vývoji funkce Azure používáte Azure Portal, postupujte takto:
Aktualizujte název parametru v
function.jsonsouboru nacloudEvent.{ "bindings": [ { "type": "eventGridTrigger", "name": "cloudEvent", "direction": "in" } ] }run.csxAktualizujte soubor, jak je znázorněno v následujícím vzorovém kódu.#r "Azure.Core" using Azure.Messaging; public static void Run(CloudEvent cloudEvent, ILogger logger) { logger.LogInformation("Event received {type} {subject}", cloudEvent.Type, cloudEvent.Subject); }
Poznámka:
Další informace najdete v tématu spouštěče Azure Event Grid pro Azure Functions.
Související obsah
Informace o ověřování koncových bodů s využitím událostí cloudu najdete v tématu Ověření koncového bodu pomocí CloudEvents 1.0.