Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Griglia di eventi di Azure è un servizio di routing di eventi completamente gestito che consente un uso degli eventi uniforme tramite un modello di pubblicazione-sottoscrizione. In questa guida introduttiva si usa l'interfaccia della riga di comando di Azure per creare un registro contenitori, sottoscrivere gli eventi del registro e quindi distribuire un'applicazione Web di esempio per ricevere gli eventi. Infine, si attivano gli eventi push
e delete
di un'immagine di contenitore e si visualizza il payload degli eventi nell'applicazione di esempio.
Al termine dei passaggi descritti in questo articolo, gli eventi inviati dal registro contenitori a Griglia di eventi vengono visualizzati nell'app Web di esempio:
Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.
Prerequisiti
Usare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Avvio rapido su Bash in Azure Cloud Shell.
Se si preferisce eseguire i comandi di riferimento dell'interfaccia della riga di comando in locale, installare l'interfaccia della riga di comando di Azure. Per l'esecuzione in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per altre informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Se si usa un'installazione locale, accedere all'interfaccia della riga di comando di Azure con il comando az login. Per completare il processo di autenticazione, seguire la procedura visualizzata nel terminale. Per altre opzioni di accesso, vedere Accedere tramite l'interfaccia della riga di comando di Azure.
Quando richiesto, al primo utilizzo installare l'estensione dell'interfaccia della riga di comando di Azure. Per altre informazioni sulle estensioni, vedere Usare le estensioni con l'interfaccia della riga di comando di Azure.
Eseguire az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, eseguire az upgrade.
- I comandi dell'interfaccia della riga di comando di Azure in questo articolo sono formattati per la shell Bash. Se si usa una shell diversa, ad esempio PowerShell o il prompt dei comandi, può essere necessario modificare di conseguenza i caratteri di continuazione di riga o le righe di assegnazione di variabile. Questo articolo usa le variabili per ridurre al minimo la quantità di modifiche necessarie per i comandi.
Creare un gruppo di risorse
Un gruppo di risorse di Azure è un contenitore logico in cui vengono distribuite e gestite le risorse di Azure. Il comando az group create seguente crea un gruppo di risorse denominato myResourceGroup nell'area eastus. Se si vuole usare un altro nome per il gruppo di risorse, impostare RESOURCE_GROUP_NAME
su un valore diverso.
RESOURCE_GROUP_NAME=myResourceGroup
az group create --name $RESOURCE_GROUP_NAME --location eastus
Creare un registro contenitori
Dopo aver creato il gruppo di risorse, distribuire un registro contenitori nel gruppo con i comandi seguenti. Prima di eseguire il comando az acr create, impostare ACR_NAME
specificando un nome per il registro. Il nome del registro deve essere univoco in Azure e contenere un numero di caratteri alfanumerici compreso tra 5 e 50.
ACR_NAME=<acrName>
az acr create --resource-group $RESOURCE_GROUP_NAME --name $ACR_NAME --sku Basic
Dopo la creazione del registro, l'interfaccia della riga di comando di Azure restituisce un output simile al seguente:
{
"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"
}
Creare un endpoint per gli eventi
In questa sezione si usa un modello di Resource Manager disponibile in un repository GitHub per distribuire un'applicazione Web di esempio nel servizio app di Azure. Successivamente, si sottoscrivono gli eventi di Griglia di eventi del registro e si specifica l'app come endpoint a cui vengono inviati gli eventi.
Per distribuire l'app di esempio, impostare SITE_NAME
su un nome univoco per l'app Web ed eseguire i comandi seguenti. Il nome del sito deve essere univoco all'interno di Azure perché fa parte del nome di dominio completo (FQDN) dell'app Web. In una sezione successiva, si passa al nome di dominio completo dell'app in un Web browser per visualizzare gli eventi del registro.
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
Al termine della distribuzione (che può richiedere alcuni minuti), aprire un browser e passare all'app Web per verificare se è in esecuzione:
http://<your-site-name>.azurewebsites.net
Verrà visualizzata l'app di esempio senza messaggi di evento:
Abilitare il provider di risorse di Griglia di eventi
Se Griglia di eventi non è stato usato in precedenza nella sottoscrizione di Azure, potrebbe essere necessario registrare il provider di risorse di Griglia di eventi. Eseguire il comando seguente per registrare il provider:
az provider register --namespace Microsoft.EventGrid
La registrazione può richiedere qualche secondo. Eseguire il comando seguente per verificare lo stato:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
Quando
registrationState
èRegistered
, è possibile continuare.
Sottoscrivere gli eventi del registro
In Griglia di eventi si sottoscrive un argomento per indicare gli eventi di cui si vuole tenere traccia e la destinazione a cui inviarli. Il comando az eventgrid event-subscription create
seguente sottoscrive al registro contenitori creato e specifica l'URL dell'app Web come endpoint a cui inviare eventi. In questo caso vengono riutilizzate le variabili di ambiente popolate nelle sezioni precedenti. Non è quindi necessaria alcuna modifica.
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
Al termine della sottoscrizione, l'output dovrebbe essere simile al seguente:
{
"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"
}
Attivare gli eventi del registro
Ora che l'app di esempio è attiva e si è eseguita la sottoscrizione al registro con Griglia di eventi, si è pronti per generare alcuni eventi. In questa sezione si usa Attività del Registro Azure Container per compilare un'immagine di contenitore ed eseguirne il push nel registro. ACR Tasks è una funzionalità di Registro Azure Container che consente di compilare immagini dei contenitori nel cloud, senza che sia necessario installare il motore Docker nel computer locale.
Compilare l'immagine ed eseguirne il push
Eseguire il seguente comando dell'interfaccia della riga di comando di Azure per compilare un'immagine di contenitore dal contenuto di un repository GitHub. Per impostazione predefinita, ACR Tasks esegue automaticamente il push di un'immagine compilata nel registro generando l'evento ImagePushed
.
Nota
Il Dockerfile usato nell'esempio seguente dipende da un'immagine del contenitore di base pubblica proveniente dall'hub Docker. Per migliorare l'affidabilità quando si usa contenuto pubblico, importare e gestire l'immagine in un registro Azure Container privato e aggiornare il Dockerfile per usare l'immagine di base gestita privatamente. Altre informazioni sull'uso delle immagini pubbliche.
az acr build --registry $ACR_NAME --image myimage:v1 -f Dockerfile https://github.com/Azure-Samples/acr-build-helloworld-node.git#main
Mentre Attività del Registro Azure Container compila l'immagine e ne esegue il push, dovrebbe essere visualizzato un output simile al seguente. L'output di esempio seguente è stato troncato per motivi di brevità.
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
...
Per verificare che l'immagine compilata sia presente nel registro, eseguire il comando seguente per visualizzare i tag nel repository myimage
:
az acr repository show-tags --name $ACR_NAME --repository myimage
Il tag "v1" dell'immagine compilata dovrebbe essere visualizzato nell'output, come nell'esempio seguente:
[
"v1"
]
Eliminare l'immagine
A questo punto, generare un evento ImageDeleted
eliminando l'immagine con il comando az acr repository delete:
az acr repository delete --name $ACR_NAME --image myimage:v1
Verrà visualizzato un output simile al seguente, in cui viene chiesto di confermare l'eliminazione del manifesto e delle immagini associate:
This operation will delete the manifest 'sha256:f15fa9d0a69081ba93eee308b0e475a54fac9c682196721e294b2bc20ab23a1b' and all the following images: 'myimage:v1'.
Are you sure you want to continue? (y/n):
Visualizzare gli eventi del registro
È stato ora eseguito il push di un'immagine nel registro ed è stata eliminata l'immagine. Passando all'app Web Event Grid Viewer dovrebbe essere possibile visualizzare entrambi gli eventi ImageDeleted
e ImagePushed
. È anche possibile che venga visualizzato un evento di convalida della sottoscrizione generato dall'esecuzione del comando nella sezione Sottoscrivere gli eventi del registro.
Lo screenshot seguente mostra l'app di esempio con tre eventi. L'evento ImageDeleted
è espanso per mostrare i dettagli.
Complimenti. Se vengono visualizzati gli eventi ImagePushed
e ImageDeleted
, significa che il registro invia eventi a Griglia di eventi e che quest'ultimo li inoltra a sua volta all'endpoint dell'app Web.
Pulire le risorse
Quando le risorse create in questa guida introduttiva non sono più necessarie, è possibile eliminarle tutte con il seguente comando dell'interfaccia della riga di comando di Azure. Quando si elimina un gruppo di risorse, vengono eliminate definitivamente tutte le risorse contenute nel gruppo.
AVVISO: questa operazione è irreversibile. Prima di eseguire il comando assicurarsi che nessuna delle risorse del gruppo sia più necessaria.
az group delete --name $RESOURCE_GROUP_NAME
Schema di eventi di Griglia di eventi
È possibile trovare informazioni di riferimento sullo schema dei messaggi di evento di Registro Azure Container nella documentazione relativa a Griglia di eventi:
Schema di eventi di Griglia di eventi di Azure per il Registro contenitori
Passaggi successivi
In questa guida introduttiva si è distribuito un registro contenitori, si è compilata un'immagine con Attività del Registro Azure Container, si è eliminata l'immagine e si sono usati gli eventi del registro da Griglia di eventi con un'applicazione di esempio. A questo punto, passare all'esercitazione di ACR Tasks per altre informazioni sulla compilazione di immagini dei contenitori nel cloud, tra cui la compilazione automatizzata in caso di aggiornamento dell'immagine di base: