Démarrage rapide : Envoyer des événements depuis le registre de conteneurs privé à Event GridQuickstart: Send events from private container registry to Event Grid

Azure Event Grid est un service de routage d’événements entièrement géré qui permet une consommation d’événements uniforme avec un modèle publication-abonnement.Azure Event Grid is a fully managed event routing service that provides uniform event consumption using a publish-subscribe model. Dans ce guide de démarrage rapide, vous utilisez l’interface CLI Azure pour créer un registre de conteneurs, pour vous abonner aux événements du registre, puis pour déployer un exemple d’application web pour recevoir les événements.In this quickstart, you use the Azure CLI to create a container registry, subscribe to registry events, then deploy a sample web application to receive the events. Enfin, vous déclenchez des événements push et delete pour l’image de conteneur et vous visualisez la charge utile des événements dans l’exemple d’application.Finally, you trigger container image push and delete events and view the event payload in the sample application.

Après avoir terminé les étapes décrites dans cet article, les événements envoyés à partir de votre registre de conteneurs à Event Grid apparaissent dans l’exemple d’application web :After you complete the steps in this article, events sent from your container registry to Event Grid appear in the sample web app:

Navigateur web affichant l’exemple d’application web avec trois événements reçus

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.If you don't have an Azure subscription, create a free account before you begin.

PrérequisPrerequisites

  • Utilisez l’environnement Bash dans Azure Cloud Shell.Use the Bash environment in Azure Cloud Shell.

    Lancer Cloud Shell dans une nouvelle fenêtreLaunch Cloud Shell in a new window

  • Si vous préférez, installez l’interface Azure CLI pour exécuter les commandes de référence de l’interface de ligne de commande.If you prefer, install the Azure CLI to run CLI reference commands.

    • Si vous utilisez une installation locale, connectez-vous à Azure CLI à l’aide de la commande az login.If you're using a local installation, sign in to the Azure CLI by using the az login command. Pour finir le processus d’authentification, suivez les étapes affichées dans votre terminal.To finish the authentication process, follow the steps displayed in your terminal. Pour connaître les autres options de connexion, consultez Se connecter avec Azure CLI.For additional sign-in options, see Sign in with the Azure CLI.

    • Lorsque vous y êtes invité, installez les extensions Azure CLI lors de la première utilisation.When you're prompted, install Azure CLI extensions on first use. Pour plus d’informations sur les extensions, consultez Utiliser des extensions avec Azure CLI.For more information about extensions, see Use extensions with the Azure CLI.

    • Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées.Run az version to find the version and dependent libraries that are installed. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade.To upgrade to the latest version, run az upgrade.

  • Les commandes CLI de cet article sont mises en forme pour le shell Bash.The Azure CLI commands in this article are formatted for the Bash shell. Si vous utilisez un autre shell, comme PowerShell ou l’invite de commandes, il peut être nécessaire d’ajuster en conséquence les caractères de continuation de ligne ou les lignes d’affectation des variables.If you're using a different shell like PowerShell or Command Prompt, you may need to adjust line continuation characters or variable assignment lines accordingly. Cet article utilise des variables pour réduire le nombre de modifications nécessaires des commandes.This article uses variables to minimize the amount of command editing required.

Créer un groupe de ressourcesCreate a resource group

Un groupe de ressources Azure est un conteneur logique dans lequel vous déployez et vous gérez vos ressources Azure.An Azure resource group is a logical container in which you deploy and manage your Azure resources. La commande az group create suivante crée un groupe de ressources nommé myResourceGroup dans la région eastus.The following az group create command creates a resource group named myResourceGroup in the eastus region. Si vous voulez utiliser un autre nom pour votre groupe de ressources, définissez RESOURCE_GROUP_NAME sur une autre valeur.If you want to use a different name for your resource group, set RESOURCE_GROUP_NAME to a different value.

RESOURCE_GROUP_NAME=myResourceGroup

az group create --name $RESOURCE_GROUP_NAME --location eastus

Créer un registre de conteneurCreate a container registry

Ensuite, déployez un registre de conteneurs dans le groupe de ressources avec les commandes suivantes.Next, deploy a container registry into the resource group with the following commands. Avant d’exécuter la commande az acr create, définissez ACR_NAME avec un nom pour votre registre.Before you run the az acr create command, set ACR_NAME to a name for your registry. Le nom du registre doit être unique dans Azure, il doit comporter entre 5 et 50 caractères alphanumériques.The name must be unique within Azure, and is restricted to 5-50 alphanumeric characters.

ACR_NAME=<acrName>

az acr create --resource-group $RESOURCE_GROUP_NAME --name $ACR_NAME --sku Basic

Une fois le registre créé, Azure CLI retourne une sortie similaire à ceci :Once the registry has been created, the Azure CLI returns output similar to the following:

{
  "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"
}

Créer un point de terminaison d’événementsCreate an event endpoint

Dans cette section, vous utilisez un modèle Resource Manager qui se trouve dans un dépôt GitHub pour déployer un exemple d’application web prédéfinie sur Azure App Service.In this section, you use a Resource Manager template located in a GitHub repository to deploy a pre-built sample web application to Azure App Service. Plus tard, vous vous abonnez aux événements Event Grid de votre registre et vous spécifiez cette application comme point de terminaison auquel les événements sont envoyés.Later, you subscribe to your registry's Event Grid events and specify this app as the endpoint to which the events are sent.

Pour déployer l’exemple d’application, définissez SITE_NAME avec un nom unique pour votre application web et exécutez les commandes suivantes.To deploy the sample app, set SITE_NAME to a unique name for your web app, and execute the following commands. Le nom du site doit être unique au sein d’Azure, car il fait partie du nom de domaine complet (FQDN) de l’application web.The site name must be unique within Azure because it forms part of the fully qualified domain name (FQDN) of the web app. Dans une section ultérieure, vous accédez au nom de domaine complet de l’application dans un navigateur web pour visualiser les événements de votre registre.In a later section, you navigate to the app's FQDN in a web browser to view your registry's events.

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

Une fois que le déploiement a réussi (il peut prendre quelques minutes), ouvrez un navigateur et accédez à votre application web pour vérifier qu’elle est en cours d’exécution :Once the deployment has succeeded (it might take a few minutes), open a browser and navigate to your web app to make sure it's running:

http://<your-site-name>.azurewebsites.net

Vous devez voir l’exemple d’application sans aucun message d’événement affiché :You should see the sample app rendered with no event messages displayed:

Navigateur montrant l’exemple d’application web sans aucun message d’événement affiché

Activer le fournisseur de ressources Event GridEnable the Event Grid resource provider

Si vous n’avez jamais utilisé Event Grid dans votre abonnement Azure, vous risquez de devoir inscrire le fournisseur de ressources Event Grid.If you haven't previously used Event Grid in your Azure subscription, you might need to register the Event Grid resource provider. Exécutez la commande suivante pour enregistrer le fournisseur :Run the following command to register the provider:

az provider register --namespace Microsoft.EventGrid

L’inscription peut prendre un certain temps.It might take a moment for the registration to finish. Pour vérifier l’état, exécutez :To check the status, run:

az provider show --namespace Microsoft.EventGrid --query "registrationState"

Lorsque registrationState est Registered, vous êtes prêt à continuer.When registrationState is Registered, you're ready to continue.

S’abonner aux événements du registreSubscribe to registry events

Dans Event Grid, vous vous abonnez à un sujet pour lui indiquer les événements qui vous intéressent, et où les envoyer.In Event Grid, you subscribe to a topic to tell it which events you want to track, and where to send them. La commande az eventgrid event-subscription create suivante s’abonne au registre de conteneurs que vous avez créé et spécifie l’URL de votre application web comme point de terminaison auquel il doit envoyer les événements.The following az eventgrid event-subscription create command subscribes to the container registry you created, and specifies your web app's URL as the endpoint to which it should send events. Les variables d’environnement que vous avez renseignées dans les sections précédentes sont réutilisées ici : aucune modification n’est donc nécessaire.The environment variables you populated in earlier sections are reused here, so no edits are required.

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

Une fois l’abonnement souscrit, vous devez voir un résultat similaire à celui-ci :When the subscription is completed, you should see output similar to the following:

{
  "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"
}

Déclencher des événements du registreTrigger registry events

Maintenant que l’exemple d’application est opérationnel et en cours d’exécution, et que vous êtes abonné à votre registre auprès d’Event Grid, vous êtes prêt à générer des événements.Now that the sample app is up and running and you've subscribed to your registry with Event Grid, you're ready to generate some events. Dans cette section, vous utilisez ACR Tasks pour générer et envoyer (push) une image de conteneur à votre registre.In this section, you use ACR Tasks to build and push a container image to your registry. ACR Tasks est une fonctionnalité d’Azure Container Registry qui vous permet de créer des images de conteneur dans le cloud, sans devoir installer le moteur Docker sur votre machine locale.ACR Tasks is a feature of Azure Container Registry that allows you to build container images in the cloud, without needing the Docker Engine installed on your local machine.

Générer et envoyer (push) une imageBuild and push image

Exécutez la commande Azure CLI suivante pour générer une image de conteneur à partir du contenu d’un dépôt GitHub.Execute the following Azure CLI command to build a container image from the contents of a GitHub repository. Par défaut, ACR Tasks envoie (push) automatiquement une image générée avec succès à votre registre, ce qui génère l’événement ImagePushed.By default, ACR Tasks automatically pushes a successfully built image to your registry, which generates the ImagePushed event.

az acr build --registry $ACR_NAME --image myimage:v1 -f Dockerfile https://github.com/Azure-Samples/acr-build-helloworld-node.git#main

Vous devez voir une sortie similaire à ce qui suit quand ACR Tasks génère, puis envoie (push) votre image.You should see output similar to the following while ACR Tasks builds and then pushes your image. L’exemple de sortie suivant a été tronqué par souci de concision.The following sample output has been truncated for brevity.

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
...

Pour vérifier que l’image générée est dans votre registre, exécutez la commande suivante pour voir les étiquettes dans le dépôt « myimage » :To verify that the built image is in your registry, execute the following command to view the tags in the "myimage" repository:

az acr repository show-tags --name $ACR_NAME --repository myimage

L’étiquette « v1 » de l’image que vous avez générée doit apparaître dans la sortie et être similaire à ceci :The "v1" tag of the image you built should appear in the output, similar to the following:

[
  "v1"
]

Supprimer l’imageDelete the image

À présent, générez un événement ImageDeleted en supprimant l’image avec la commande az acr repository delete :Now, generate an ImageDeleted event by deleting the image with the az acr repository delete command:

az acr repository delete --name $ACR_NAME --image myimage:v1

Vous devez voir une sortie similaire à ce qui suit, qui demande une confirmation pour supprimer le manifeste et les images associées :You should see output similar to the following, asking for confirmation to delete the manifest and associated images:

This operation will delete the manifest 'sha256:f15fa9d0a69081ba93eee308b0e475a54fac9c682196721e294b2bc20ab23a1b' and all the following images: 'myimage:v1'.
Are you sure you want to continue? (y/n): 

Afficher des événements du registreView registry events

Vous avez maintenant envoyé (push) une image à votre registre, puis vous l’avez supprimée.You've now pushed an image to your registry and then deleted it. Accédez à votre application web de visionneuse Event Grid : vous devez voir les événements ImageDeleted et ImagePushed.Navigate to your Event Grid Viewer web app, and you should see both ImageDeleted and ImagePushed events. Vous pouvez également voir un événement de validation d’abonnement généré par l’exécution de la commande de la section S’abonner aux événements du registre.You might also see a subscription validation event generated by executing the command in the Subscribe to registry events section.

La capture d’écran suivante montre l’exemple d’application avec les trois événements et l’événement ImageDeleted développé pour afficher ses détails.The following screenshot shows the sample app with the three events, and the ImageDeleted event is expanded to show its details.

Navigateur web montrant l’exemple d’application avec des événements ImagePushed et ImageDeleted

Félicitations !Congratulations! Si vous voyez les événements ImagePushed et ImageDeleted, c’est que votre registre envoie des événements à Event Grid, qui à son tour transfère ces événements à votre point de terminaison d’application web.If you see the ImagePushed and ImageDeleted events, your registry is sending events to Event Grid, and Event Grid is forwarding those events to your web app endpoint.

Nettoyer les ressourcesClean up resources

Une fois que vous en avez terminé avec les ressources créées dans ce guide de démarrage rapide, vous pouvez les supprimer toutes avec la commande Azure CLI suivante.Once you're done with the resources you created in this quickstart, you can delete them all with the following Azure CLI command. Quand vous supprimez un groupe de ressources, toutes les ressources qu’il contient sont supprimées de façon définitive.When you delete a resource group, all of the resources it contains are permanently deleted.

AVERTISSEMENT : cette action est irréversible.WARNING: This operation is irreversible. Vérifiez bien que vous n’avez plus besoin des ressources du groupe avant d’exécuter la commande.Be sure you no longer need any of the resources in the group before running the command.

az group delete --name $RESOURCE_GROUP_NAME

Schéma d’événement Event GridEvent Grid event schema

Vous pouvez trouver les informations de référence sur le schéma des messages d’événement d’Azure Container Registry dans la documentation d’Event Grid :You can find the Azure Container Registry event message schema reference in the Event Grid documentation:

Schéma d’événement Azure Event Grid pour Container RegistryAzure Event Grid event schema for Container Registry

Étapes suivantesNext steps

Dans ce guide de démarrage rapide, vous avez déployé un registre de conteneurs, vous avez généré une image avec ACR Tasks, vous l’avez supprimée et vous avez utilisé les événements de votre registre provenant d’Event Grid avec un exemple d’application.In this quickstart, you deployed a container registry, built an image with ACR Tasks, deleted it, and have consumed your registry's events from Event Grid with a sample application. Passez ensuite au tutoriel ACR Tasks pour en savoir plus sur la génération d’images de conteneur dans le cloud, notamment les générations automatisées sur la mise à jour de l’image de base :Next, move on to the ACR Tasks tutorial to learn more about building container images in the cloud, including automated builds on base image update: