Snabbstart: Skicka händelser från ett privat containerregister till Event Grid
Azure Event Grid är en fullständigt hanterad händelseroutningstjänst som ger enhetlig händelseförbrukning med hjälp av en publiceringsprenumereringsmodell. I den här snabbstarten använder du Azure CLI för att skapa ett containerregister, prenumerera på registerhändelser och sedan distribuera ett exempelwebbprogram för att ta emot händelserna. Slutligen utlöser du containeravbildning push
och delete
händelser och visar händelsenyttolasten i exempelprogrammet.
När du har slutfört stegen i den här artikeln visas händelser som skickas från containerregistret till Event Grid i exempelwebbappen:
Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.
Förutsättningar
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Snabbstart för Bash i Azure Cloud Shell.
Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör i Windows eller macOS kan du köra Azure CLI i en Docker-container. Mer information finns i Så här kör du Azure CLI i en Docker-container.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Andra inloggningsalternativ finns i Logga in med Azure CLI.
När du uppmanas att installera Azure CLI-tillägget vid första användningen. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
- Azure CLI-kommandona i den här artikeln är formaterade för Bash-gränssnittet . Om du använder ett annat gränssnitt som PowerShell eller Kommandotolken kan du behöva justera radfortsättningstecken eller variabeltilldelningsrader i enlighet med detta. Den här artikeln använder variabler för att minimera mängden kommandoredigering som krävs.
Skapa en resursgrupp
En Azure-resursgrupp är en logisk container där du distribuerar och hanterar dina Azure-resurser. Följande az group create-kommando skapar en resursgrupp med namnet myResourceGroup i regionen eastus . Om du vill använda ett annat namn för resursgruppen anger du RESOURCE_GROUP_NAME
ett annat värde.
RESOURCE_GROUP_NAME=myResourceGroup
az group create --name $RESOURCE_GROUP_NAME --location eastus
Skapa ett containerregister
Distribuera sedan ett containerregister till resursgruppen med följande kommandon. Innan du kör kommandot az acr create anger du ACR_NAME
ett namn för registret. Namnet måste vara unikt i Azure och är begränsat till 5–50 alfanumeriska tecken.
ACR_NAME=<acrName>
az acr create --resource-group $RESOURCE_GROUP_NAME --name $ACR_NAME --sku Basic
När registret har skapats returnerar Azure CLI utdata som liknar följande:
{
"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"
}
Skapa en händelseslutpunkt
I det här avsnittet använder du en Resource Manager-mall som finns på en GitHub-lagringsplats för att distribuera ett fördefiniert exempelwebbprogram till Azure App Service. Senare prenumererar du på registrets Event Grid-händelser och anger den här appen som den slutpunkt som händelserna skickas till.
Om du vill distribuera exempelappen anger du SITE_NAME
ett unikt namn för webbappen och kör följande kommandon. Webbplatsnamnet måste vara unikt i Azure eftersom det ingår i webbappens fullständigt kvalificerade domännamn (FQDN). I ett senare avsnitt navigerar du till appens fullständiga domännamn i en webbläsare för att visa registrets händelser.
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
När distributionen har slutförts (det kan ta några minuter) öppnar du en webbläsare och går till webbappen för att kontrollera att den körs:
http://<your-site-name>.azurewebsites.net
Du bör se exempelappen renderad utan att några händelsemeddelanden visas:
Aktivera Event Grid-resursprovidern
Om du inte tidigare har använt Event Grid i din Azure-prenumeration kan du behöva registrera Event Grid-resursprovidern. Registrera providern genom att köra följande kommando:
az provider register --namespace Microsoft.EventGrid
Det kan ta en stund innan registreringen är klar. Kontrollera statusen genom att köra följande kommando:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
När
registrationState
ärRegistered
kan du fortsätta.
Prenumerera på registerhändelser
I Event Grid prenumererar du på ett ämne för att berätta vilka händelser du vill spåra och var de ska skickas. Följande az eventgrid event-subscription create
kommando prenumererar på containerregistret som du skapade och anger webbappens URL som den slutpunkt som den ska skicka händelser till. Miljövariablerna som du fyllde i i tidigare avsnitt återanvänds här, så inga ändringar krävs.
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
När prenumerationen har slutförts bör du se utdata som liknar följande:
{
"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"
}
Utlösa registerhändelser
Nu när exempelappen är igång och du har prenumererat på ditt register med Event Grid är du redo att generera vissa händelser. I det här avsnittet använder du ACR Tasks för att skapa och push-överföra en containeravbildning till registret. ACR Tasks är en funktion i Azure Container Registry som gör att du kan skapa containeravbildningar i molnet, utan att behöva Docker-motorn installerad på den lokala datorn.
Skapa och skicka avbildning
Kör följande Azure CLI-kommando för att skapa en containeravbildning från innehållet i en GitHub-lagringsplats. Som standard skickar ACR Tasks automatiskt en avbildning som skapats till registret, vilket genererar ImagePushed
händelsen.
Kommentar
Den Dockerfile som används i följande exempel beror på en offentlig bascontaineravbildning från Docker Hub. För att förbättra tillförlitligheten när du använder offentligt innehåll importerar och hanterar du avbildningen i ett privat Azure-containerregister och uppdaterar Dockerfile så att den använder din privat hanterade basavbildning. Läs mer om hur du arbetar med offentliga avbildningar.
az acr build --registry $ACR_NAME --image myimage:v1 -f Dockerfile https://github.com/Azure-Samples/acr-build-helloworld-node.git#main
Du bör se utdata som liknar följande medan ACR Tasks bygger och sedan push-överför avbildningen. Följande exempelutdata har trunkerats för korthet.
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
...
Kontrollera att den skapade avbildningen finns i registret genom att köra följande kommando för att visa taggarna på lagringsplatsen myimage
:
az acr repository show-tags --name $ACR_NAME --repository myimage
Taggen "v1" för avbildningen som du skapade bör visas i utdata, ungefär så här:
[
"v1"
]
Ta bort bilden
Generera nu en ImageDeleted
händelse genom att ta bort avbildningen med kommandot az acr repository delete :
az acr repository delete --name $ACR_NAME --image myimage:v1
Du bör se utdata som liknar följande och be om bekräftelse för att ta bort manifestet och tillhörande bilder:
This operation will delete the manifest 'sha256:f15fa9d0a69081ba93eee308b0e475a54fac9c682196721e294b2bc20ab23a1b' and all the following images: 'myimage:v1'.
Are you sure you want to continue? (y/n):
Visa registerhändelser
Nu har du push-överfört en avbildning till registret och sedan tagit bort den. Gå till event grid viewer-webbappen så bör du se både ImageDeleted
och ImagePushed
händelser. Du kan också se en prenumerationsverifieringshändelse som genereras genom att köra kommandot i avsnittet Prenumerera på registerhändelser .
Följande skärmbild visar exempelappen med de tre händelserna och ImageDeleted
händelsen expanderas för att visa dess information.
Gratulerar! Om du ser ImagePushed
händelserna och ImageDeleted
skickar registret händelser till Event Grid och Event Grid vidarebefordrar dessa händelser till webbappens slutpunkt.
Rensa resurser
När du är klar med de resurser som du skapade i den här snabbstarten kan du ta bort alla med följande Azure CLI-kommando. När du tar bort en resursgrupp tas alla resurser som den innehåller bort permanent.
VARNING! Den här åtgärden kan inte ångras. Se till att du inte längre behöver någon av resurserna i gruppen innan du kör kommandot.
az group delete --name $RESOURCE_GROUP_NAME
Event Grid-händelseschema
Du hittar schemareferensen för Azure Container Registry-händelsemeddelandet i Event Grid-dokumentationen:
Azure Event Grid-händelseschema för Container Registry
Nästa steg
I den här snabbstarten distribuerade du ett containerregister, skapade en avbildning med ACR Tasks, tog bort den och har använt registrets händelser från Event Grid med ett exempelprogram. Gå sedan vidare till självstudien ACR Tasks för att lära dig mer om att skapa containeravbildningar i molnet, inklusive automatiserade versioner av basavbildningsuppdatering:
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för