Schnellstart: Senden von Ereignissen aus der privaten Containerregistrierung an Event Grid
Azure Event Grid ist ein vollständig verwalteter Dienst für das Ereignisrouting, der eine einheitliche Ereignisnutzung mithilfe eines Veröffentlichen/Abonnieren-Modells bereitstellt. In dieser Schnellstartanleitung verwenden Sie die Azure CLI, um eine Containerregistrierung zu erstellen, Registrierungsereignisse zu abonnieren und anschließend eine Beispielwebanwendung für den Empfang der Ereignisse bereitzustellen. Abschließend lösen Sie für das Containerimage push
- und delete
-Ereignisse aus und lassen sich die Ereignisnutzlast in der Beispielanwendung anzeigen.
Nachdem Sie die Schritte in diesem Artikel ausgeführt haben, werden Ereignisse, die von Ihrer Containerregistrierung an Event Grid gesendet werden, in der Beispielwebanwendung angezeigt.
Wenn Sie kein Azure-Abonnement haben, erstellen Sie ein kostenloses Azure-Konto, bevor Sie beginnen.
Voraussetzungen
Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Schnellstart für Bash in Azure Cloud Shell.
Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.
Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Informationen zu anderen Anmeldeoptionen finden Sie unter Anmelden mit der Azure CLI.
Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden von Erweiterungen mit der Azure CLI.
Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.
- Die Azure CLI-Befehle in diesem Artikel sind für die Ausführung in einer Bash-Shell formatiert. Wenn Sie eine andere Shell wie PowerShell oder die Eingabeaufforderung verwenden, müssen Sie möglicherweise Zeilenfortsetzungszeichen oder Variablenzuweisungszeilen entsprechend anpassen. In diesem Artikel werden Variablen verwendet, damit die Befehle später nur geringfügig angepasst werden müssen.
Erstellen einer Ressourcengruppe
Eine Azure-Ressourcengruppe ist ein logischer Container, in dem Sie Azure-Ressourcen bereitstellen und verwalten. Durch den Befehl az group create wird eine Ressourcengruppe mit dem Namen myResourceGroup in der Region eastus erstellt. Wenn Sie einen anderen Namen für Ihre Ressourcengruppe verwenden möchten, legen Sie RESOURCE_GROUP_NAME
auf einen anderen Wert fest.
RESOURCE_GROUP_NAME=myResourceGroup
az group create --name $RESOURCE_GROUP_NAME --location eastus
Erstellen einer Containerregistrierung
Stellen Sie anschließend mit den unten aufgeführten Befehlen eine Containerregistrierung in der Ressourcengruppe bereit. Legen Sie zunächst ACR_NAME
auf einen Namen für Ihre Registrierung fest, bevor Sie den Befehl az acr create ausführen. Der Name muss innerhalb von Azure eindeutig sein und darf 5 bis 50 alphanumerische Zeichen enthalten.
ACR_NAME=<acrName>
az acr create --resource-group $RESOURCE_GROUP_NAME --name $ACR_NAME --sku Basic
Nach der Erstellung der Registrierung sieht die Azure CLI-Ausgabe in etwa wie folgt aus:
{
"adminUserEnabled": false,
"creationDate": "2018-08-16T20:02:46.569509+00:00",
"id": "/subscriptions/<Subscription ID>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/myregistry",
"location": "eastus",
"loginServer": "myregistry.azurecr.io",
"name": "myregistry",
"provisioningState": "Succeeded",
"resourceGroup": "myResourceGroup",
"sku": {
"name": "Basic",
"tier": "Basic"
},
"status": null,
"storageAccount": null,
"tags": {},
"type": "Microsoft.ContainerRegistry/registries"
}
Erstellen eines Ereignisendpunkts
In diesem Abschnitt wird beschrieben, wie Sie mit einer Resource Manager-Vorlage aus einem GitHub-Repository eine vorab erstellte Beispiel-Web-Anwendung in Azure App Service bereitstellen. In einem anderen Abschnitt wird erläutert, wie Sie die Event Grid-Ereignisse Ihrer Registrierung abonnieren und die App als den Endpunkt festlegen, an den Ereignisse gesendet werden.
Legen Sie zum Bereitstellen der Beispiel-App SITE_NAME
auf einen eindeutigen Namen für Ihre Web-App fest, und führen Sie die unten aufgeführten Befehle aus. Der Websitename muss innerhalb von Azure eindeutig sein, da er Bestandteil des vollqualifizierten Domänennamens (FQDN) der Web-App ist. In einem Abschnitt weiter unten navigieren Sie in einem Webbrowser zum FQDN der App und lassen sich dort die Registrierungsereignisse anzeigen.
SITE_NAME=<your-site-name>
az deployment group create \
--resource-group $RESOURCE_GROUP_NAME \
--template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" \
--parameters siteName=$SITE_NAME hostingPlanName=$SITE_NAME-plan
Öffnen Sie nach der erfolgreichen Bereitstellung (dieser Vorgang kann einige Minuten dauern) einen Browser, und navigieren Sie zu Ihrer Web-App, um sicherzustellen, dass diese ausgeführt wird:
http://<your-site-name>.azurewebsites.net
Die Beispiel-App sollte nun gerendert werden, und es sollten keine Ereignismeldungen angezeigt werden:
Aktivieren des Event Grid-Ressourcenanbieters
Wenn Sie zuvor in Ihrem Azure-Abonnement noch nicht Event Grid verwendet haben, sollten Sie den Event Grid-Ressourcenanbieter registrieren. Führen Sie den folgenden Befehl aus, um den Anbieter zu registrieren:
az provider register --namespace Microsoft.EventGrid
Es kann einen Moment dauern, bis die Registrierung abgeschlossen ist. Führen Sie den folgenden Befehl aus, um den Status zu überprüfen:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
Wenn
registrationState
Registered
ist, können Sie den Vorgang fortsetzen.
Abonnieren von Registrierungsereignissen
In Event Grid abonnieren Sie ein Thema, um festzulegen, welche Ereignisse Sie nachverfolgen möchten und wohin diese gesendet werden sollen. Durch den folgenden Befehl vom Typ az eventgrid event-subscription create
wird die erstellte Containerregistrierung abonniert und die Web-App-URL als Endpunkt festgelegt, an die Ereignisse gesendet werden sollen. Die Umgebungsvariablen, die Sie in den vorherigen Abschnitten angegeben haben, werden hier wiederverwendet, sodass keine Änderungen erforderlich sind.
ACR_REGISTRY_ID=$(az acr show --name $ACR_NAME --query id --output tsv)
APP_ENDPOINT=https://$SITE_NAME.azurewebsites.net/api/updates
az eventgrid event-subscription create \
--name event-sub-acr \
--source-resource-id $ACR_REGISTRY_ID \
--endpoint $APP_ENDPOINT
Nach Abschluss des Abonniervorgangs sollte die Ausgabe der folgenden ähneln:
{
"destination": {
"endpointBaseUrl": "https://eventgridviewer.azurewebsites.net/api/updates",
"endpointType": "WebHook",
"endpointUrl": null
},
"filter": {
"includedEventTypes": [
"All"
],
"isSubjectCaseSensitive": null,
"subjectBeginsWith": "",
"subjectEndsWith": ""
},
"id": "/subscriptions/<Subscription ID>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/myregistry/providers/Microsoft.EventGrid/eventSubscriptions/event-sub-acr",
"labels": null,
"name": "event-sub-acr",
"provisioningState": "Succeeded",
"resourceGroup": "myResourceGroup",
"topic": "/subscriptions/<Subscription ID>/resourceGroups/myresourcegroup/providers/microsoft.containerregistry/registries/myregistry",
"type": "Microsoft.EventGrid/eventSubscriptions"
}
Auslösen von Registrierungsereignissen
Da die Beispiel-App ausgeführt wird und Sie die Registrierung in Event Grid abonniert haben, können Sie nun Ereignisse generieren. In diesem Abschnitt wird beschrieben, wie Sie mithilfe von ACR Tasks ein Containerimage erstellen und in die Registrierung pushen. ACR Tasks ist ein Feature von Azure Container Registry, mit dem Sie Containerimages in der Cloud erstellen können, ohne dass dafür die Docker-Engine auf Ihrem lokalen Computer installiert sein muss.
Erstellen und Übermitteln des Images mithilfe von Push
Führen Sie den unten genannten Azure CLI-Befehl aus, um ein Containerimage mithilfe der Inhalte eines GitHub-Repositorys zu erstellen. Standardmäßig pusht ACR Tasks automatisch das erfolgreich erstellte Image in Ihre Registrierung, die dann das ImagePushed
-Ereignis generiert.
Hinweis
Die im folgenden Beispiel verwendete Dockerfile-Datei hängt von einem öffentlichen Basiscontainerimage aus Docker Hub ab. Um die Zuverlässigkeit bei der Verwendung öffentlicher Inhalte zu verbessern, importieren und verwalten Sie das Image in einer privaten Azure-Containerregistrierung, und aktualisieren Sie Ihr Dockerfile so, dass es Ihr privat verwaltetes Basisimage verwendet. Weitere Informationen zum Arbeiten mit öffentlichen Images.
az acr build --registry $ACR_NAME --image myimage:v1 -f Dockerfile https://github.com/Azure-Samples/acr-build-helloworld-node.git#main
Wenn ACR Tasks den Erstellungs- und den anschließenden Push-Vorgang für Ihr Image ausführt, sollte die Ausgabe in etwa wie im folgenden Beispiel aussehen. Die folgende Beispielausgabe wurde aus Gründen der Übersichtlichkeit gekürzt.
Sending build context to ACR...
Queued a build with build ID: aa2
Waiting for build agent...
2018/08/16 22:19:38 Using acb_vol_27a2afa6-27dc-4ae4-9e52-6d6c8b7455b2 as the home volume
2018/08/16 22:19:38 Setting up Docker configuration...
2018/08/16 22:19:39 Successfully set up Docker configuration
2018/08/16 22:19:39 Logging in to registry: myregistry.azurecr.io
2018/08/16 22:19:55 Successfully logged in
Sending build context to Docker daemon 94.72kB
Step 1/5 : FROM node:9-alpine
...
Führen Sie den folgenden Befehl zum Anzeigen des Tags im Repository myimage
aus, um sicherzustellen, dass sich das erstellte Image in Ihrer Registrierung befindet:
az acr repository show-tags --name $ACR_NAME --repository myimage
Das „v1“-Tag des erstellten Images sollte ähnlich wie in der folgenden Ausgabe dargestellt werden:
[
"v1"
]
Löschen des Images
Generieren Sie nun ein Ereignis vom Typ ImageDeleted
, indem Sie das Image mit dem Befehl az acr repository delete löschen:
az acr repository delete --name $ACR_NAME --image myimage:v1
Die Ausgabe sollte in etwa wie im folgenden Beispiel aussehen und die Aufforderung enthalten, das Löschen des Manifests und der zugehörigen Images zu bestätigen:
This operation will delete the manifest 'sha256:f15fa9d0a69081ba93eee308b0e475a54fac9c682196721e294b2bc20ab23a1b' and all the following images: 'myimage:v1'.
Are you sure you want to continue? (y/n):
Anzeigen von Registrierungsereignissen
Sie haben das Image mithilfe von Push an Ihre Registrierung übertragen und es anschließend gelöscht. Navigieren Sie nun zur Ihrer Viewer-Web-App für Event Grid. In dieser sollten die Ereignisse ImageDeleted
und ImagePushed
angezeigt werden. Möglicherweise werden auch für den Abonniervorgang Validierungsereignisse angezeigt, die durch Ausführen des Befehls im Abschnitt Abonnieren von Registrierungsereignissen generiert wurden.
Auf dem folgenden Screenshot ist die Beispiel-App mit drei Ereignissen zu sehen. Der Abschnitt des ImageDeleted
-Ereignisses wurde erweitert, damit die zugehörigen Details angezeigt werden.
Glückwunsch! Wenn die Ereignisse ImagePushed
und ImageDeleted
angezeigt werden, sendet Ihre Registrierung Ereignisse an Event Grid. Dieser Dienst leitet die Ereignisse dann weiter an Ihren Web-App-Endpunkt.
Bereinigen von Ressourcen
Wenn Sie die mit dieser Schnellstartanleitung erstellten Ressourcen nicht mehr benötigen, können Sie diese mit dem unten aufgeführten Azure CLI-Befehl löschen. Wenn Sie eine Ressourcengruppe löschen, werden alle darin enthaltenen Ressourcen dauerhaft gelöscht.
WARNUNG: Dieser Vorgang kann nicht rückgängig gemacht werden. Stellen Sie sicher, dass Sie die Ressourcen in der Gruppe nicht mehr benötigen, bevor Sie den Befehl ausführen.
az group delete --name $RESOURCE_GROUP_NAME
Event Grid-Ereignisschema
Den Schemaverweis für Ereignismeldungen in Azure Container Registry finden Sie in der Event Grid-Dokumentation:
Azure Event Grid-Ereignisschema für Container Registry
Nächste Schritte
Sie haben mit diesem Schnellstart eine Containerregistrierung bereitgestellt, ein Image mit ACR Tasks erstellt und anschließend gelöscht und Registrierungsereignisse von Event Grid in einer Beispielanwendung verwendet. Im nächsten ACR Tasks-Tutorial erfahren Sie mehr über das Erstellen von Containerimages in der Cloud und über automatisierte Builds während der Aktualisierung des Basisimages: