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.
Artykuł zawiera instrukcje krok po kroku dotyczące publikowania zdarzeń w usłudze Azure Event Grid w formacie JSON CloudEvents i dostarczania tych zdarzeń przy użyciu modelu dostarczania typu push. Aby być konkretnym, należy użyć interfejsu wiersza polecenia platformy Azure i narzędzia Curl do publikowania zdarzeń w temacie przestrzeni nazw w usłudze Event Grid i wypychania tych zdarzeń z subskrypcji zdarzeń do miejsca docelowego programu obsługi usługi Event Hubs. Aby uzyskać więcej informacji na temat modelu dostarczania typu push, zobacz Push delivery overview.
Uwaga / Notatka
Rozszerzenie Event Grid dla Azure CLI nie obsługuje jeszcze przestrzeni nazw ani żadnych zasobów, które się w nich znajdują. Użyjemy zasobu interfejsu wiersza polecenia platformy Azure do utworzenia zasobów usługi Event Grid.
Jeśli nie masz jeszcze konta platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Wymagania wstępne
Użyj środowiska Bash w Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Szybki start dla Bash w Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj Azure CLI. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie Azure CLI w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić Azure CLI w kontenerze Docker.
Jeśli używasz instalacji lokalnej, zaloguj się do interfejsu
az login
wiersza polecenia platformy Azure przy użyciu polecenia . Aby zakończyć proces uwierzytelniania, wykonaj kroki wyświetlane na Twoim terminalu. Aby uzyskać inne opcje logowania, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.Gdy zostaniesz o to poproszony/a, zainstaluj rozszerzenie Azure CLI przy pierwszym użyciu. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Korzystanie z rozszerzeń w interfejsie wiersza polecenia platformy Azure.
Uruchom az version, aby sprawdzić zainstalowaną wersję i biblioteki zależne. Aby zaktualizować do najnowszej wersji, uruchom az upgrade.
Ten artykuł wymaga wersji 2.0.70 lub nowszej interfejsu wiersza polecenia platformy Azure. W przypadku korzystania z usługi Azure Cloud Shell najnowsza wersja jest już zainstalowana.
Włączanie dostawcy zasobów usługi Event Grid
Jeśli po raz pierwszy używasz usługi Event Grid w ramach subskrypcji platformy Azure, może być konieczne zarejestrowanie dostawcy zasobów usługi Event Grid. Uruchom następujące polecenie, aby zarejestrować dostawcę:
az provider register --namespace Microsoft.EventGrid
Ukończenie rejestracji może zająć trochę czasu. Aby sprawdzić stan, uruchom następujące polecenie:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
Gdy właściwość
registrationState
uzyska wartośćRegistered
, można kontynuować.
Tworzenie grupy zasobów
Grupę zasobów platformy Azure można utworzyć za pomocą polecenia az group create. Ta grupa zasobów służy do przechowywania wszystkich zasobów utworzonych w tym artykule.
Ogólne kroki używania usługi Cloud Shell do uruchamiania poleceń to:
- Wybierz pozycję Otwórz usługę Cloud Shell , aby wyświetlić okno usługi Azure Cloud Shell w okienku po prawej stronie.
- Skopiuj polecenie i wklej je w oknie usługi Azure Cloud Shell.
- Naciśnij ENTER, aby uruchomić polecenie .
Zadeklaruj zmienną do przechowywania nazwy grupy zasobów platformy Azure. Określ nazwę grupy zasobów, zastępując
<your-resource-group-name>
wartością według własnego uznania.resource_group="<your-resource-group-name>"
location="<your-resource-group-location>"
Utwórz grupę zasobów. Zmień lokalizację w miarę dopasowania.
az group create --name $resource_group --location $location
Tworzenie przestrzeni nazw
Przestrzeń nazw usługi Event Grid udostępnia zdefiniowany przez użytkownika punkt końcowy, do którego są ogłaszane zdarzenia. Poniższy przykład tworzy przestrzeń nazw w grupie zasobów przy użyciu powłoki Bash w usłudze Azure Cloud Shell. Nazwa przestrzeni nazw musi być unikatowa, ponieważ jest częścią wpisu systemu nazw domen (DNS). Nazwa przestrzeni nazw powinna spełniać następujące reguły:
- Powinna zawierać się od 3 do 50 znaków.
- Powinna być unikatowa w regionie.
- Dozwolone znaki to a-z, A-Z, 0-9 i -
- Nie należy rozpoczynać od zarezerwowanych prefiksów słów kluczowych, takich jak
Microsoft
,System
lubEventGrid
.
Zadeklaruj zmienną do przechowywania nazwy przestrzeni nazw usługi Event Grid. Określ nazwę przestrzeni nazw, zastępując ciąg
<your-namespace-name>
wartością, którą chcesz.namespace="<your-namespace-name>"
Tworzenie przestrzeni nazw. Możesz zmienić lokalizację, w której została wdrożona.
az eventgrid namespace create -g $resource_group -n $namespace -l $location
Tworzenie tematu przestrzeni nazw
Utwórz temat używany do przechowywania wszystkich zdarzeń publikowanych w punkcie końcowym przestrzeni nazw.
Zadeklaruj zmienną do przechowywania nazwy tematu przestrzeni nazw. Określ nazwę tematu przestrzeni nazw, zastępując ciąg
<your-topic-name>
wartością, którą chcesz.topic="<your-topic-name>"
Utwórz temat przestrzeni nazw:
az eventgrid namespace topic create -g $resource_group -n $topic --namespace-name $namespace
Tworzenie nowego zasobu usługi Event Hubs
Utwórz zasób usługi Event Hubs, który będzie używany jako miejsce docelowe dla przetwarzania subskrypcji dostarczania wypychanego tematu obszaru nazw.
Zadeklaruj zmienną przechowującą nazwę przestrzeni nazw (namespace) usługi Event Hubs.
eventHubsNamespace="<your-event-hubs-namespace-name>"
Utwórz przestrzeń nazw usługi Event Hubs.
az eventhubs namespace create --resource-group $resource_group --name $eventHubsNamespace --location $location
Zadeklaruj zmienną do przechowywania nazwy centrum zdarzeń.
eventHubsEventHub="<your-event-hub-name>"
Uruchom następujące polecenie, aby utworzyć centrum zdarzeń w przestrzeni nazw.
az eventhubs eventhub create --resource-group $resource_group --namespace-name $eventHubsNamespace --name $eventHubsEventHub
Dostarczanie zdarzeń do usługi Event Hubs przy użyciu tożsamości zarządzanej
Aby dostarczać zdarzenia do centrów zdarzeń w przestrzeni nazw usługi Event Hubs przy użyciu tożsamości zarządzanej, wykonaj następujące kroki:
- Włącz tożsamość zarządzaną przypisaną przez system lub przypisaną przez użytkownika: namespace. Przejdź do następnej sekcji, aby dowiedzieć się, jak włączyć tożsamość zarządzaną przy użyciu interfejsu wiersza polecenia platformy Azure.
- Dodaj tożsamość do roli Nadawca danych usługi Azure Event Hubs w przestrzeni nazw usługi Event Hubs, kontynuuj czytanie do następnej sekcji, aby dowiedzieć się, jak dodać przypisanie roli.
- Włącz ustawienie Zezwalaj na zaufane usługi firmy Microsoft, aby pominąć to ustawienie zapory w przestrzeni nazw usługi Event Hubs.
- Skonfiguruj subskrypcję zdarzeń, która używa centrum zdarzeń jako punktu końcowego do używania tożsamości zarządzanej przypisanej przez system lub przypisanej przez użytkownika.
Włącz tożsamość zarządzaną w przestrzeni nazw usługi Event Grid
Włącz tożsamość zarządzaną przypisaną przez system w ramach przestrzeni nazw Event Grid.
az eventgrid namespace update --resource-group $resource_group --name $namespace --identity {type:systemassigned}
Dodaj przypisanie roli do usługi Event Hubs dla tożsamości zarządzanej powiązanej z Event Grid.
Pobierz identyfikator głównego użytkownika tożsamości zarządzanej systemowo dla przestrzeni nazw w usłudze Event Grid.
principalId=$(az eventgrid namespace show --resource-group $resource_group --name $namespace --query identity.principalId -o tsv)
Pobierz ID zasobu centrum zdarzeń Event Hubs.
eventHubResourceId=$(az eventhubs eventhub show --resource-group $resource_group --namespace-name $eventHubsNamespace --name $eventHubsEventHub --query id -o tsv)
Dodaj przypisanie roli w usłudze Event Hubs dla zarządzanej tożsamości systemowej usługi Event Grid.
az role assignment create --role "Azure Event Hubs Data Sender" --assignee $principalId --scope $eventHubResourceId
Tworzenie subskrypcji zdarzeń
Utwórz subskrypcję nowego zdarzenia dostarczania wypychanego.
event_subscription="<your_event_subscription_name>"
az resource create --api-version 2023-06-01-preview --resource-group $resource_group --namespace Microsoft.EventGrid --resource-type eventsubscriptions --name $event_subscription --parent namespaces/$namespace/topics/$topic --location $location --properties "{\"deliveryConfiguration\":{\"deliveryMode\":\"Push\",\"push\":{\"maxDeliveryCount\":10,\"deliveryWithResourceIdentity\":{\"identity\":{\"type\":\"SystemAssigned\"},\"destination\":{\"endpointType\":\"EventHub\",\"properties\":{\"resourceId\":\"$eventHubResourceId\"}}}}}}"
Wysyłanie zdarzeń do tematu
Teraz wyślij przykładowe zdarzenie do tematu przestrzeni nazw, wykonując kroki opisane w tej sekcji.
Lista kluczy dostępu do przestrzeni nazw
Pobierz klucze dostępu skojarzone z utworzoną przestrzenią nazw. Jeden z nich służy do uwierzytelniania podczas publikowania zdarzeń. Aby wyświetlić listę kluczy, musisz najpierw uzyskać pełny identyfikator zasobu przestrzeni nazw. Pobierz go, uruchamiając następujące polecenie:
namespace_resource_id=$(az eventgrid namespace show -g $resource_group -n $namespace --query "id" --output tsv)
Pobierz pierwszy klucz z przestrzeni nazw:
key=$(az eventgrid namespace list-key -g $resource_group --namespace-name $namespace --query "key1" --output tsv)
Publikowanie zdarzenia
Pobierz nazwę hosta przestrzeni nazw. Używasz go do tworzenia punktu końcowego HTTP dla przestrzeni nazw, do którego są wysyłane zdarzenia. Następujące operacje były najpierw dostępne w wersji
2023-06-01-preview
interfejsu API .publish_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic:publish?api-version=2023-06-01-preview
Utwórz przykładowe zdarzenie zgodne z rozwiązaniem CloudEvents :
event=' { "specversion": "1.0", "id": "'"$RANDOM"'", "type": "com.yourcompany.order.ordercreatedV2", "source" : "/mycontext", "subject": "orders/O-234595", "time": "'`date +%Y-%m-%dT%H:%M:%SZ`'", "datacontenttype" : "application/json", "data":{ "orderId": "O-234595", "url": "https://yourcompany.com/orders/o-234595"}} '
Element
data
to ładunek zdarzenia. W tym polu można umieścić dowolną poprawnie sformułowaną zawartość JSON. Aby uzyskać więcej informacji na temat właściwości (nazywanych również atrybutami kontekstu), które mogą być wykorzystane w zdarzeniu, należy sprawdzić specyfikacje CloudEvents.Użyj narzędzia CURL, aby wysłać zdarzenie do tematu. CURL to narzędzie, które wysyła żądania HTTP.
curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
Przejdź do strony przestrzeni nazw Event Hubs w portalu Azure, odśwież stronę i sprawdź, czy licznik komunikatów przychodzących na wykresie pokazuje odebrane zdarzenie.
Dalsze kroki
W tym artykule utworzono i skonfigurowano przestrzeń nazw usługi Event Grid oraz zasoby usługi Event Hubs. Aby uzyskać instrukcje krok po kroku dotyczące odbierania zdarzeń z centrum zdarzeń, zobacz następujące samouczki: