Hızlı Başlangıç: Özel kapsayıcı kayıt defterinden olayları Event Grid gönderQuickstart: Send events from private container registry to Event Grid

Azure Event Grid, yayımlama-abonelik modeli kullanarak Tekdüzen olay tüketimi sağlayan, tam olarak yönetilen bir olay yönlendirme hizmetidir.Azure Event Grid is a fully managed event routing service that provides uniform event consumption using a publish-subscribe model. Bu hızlı başlangıçta, Azure CLı kullanarak bir kapsayıcı kayıt defteri oluşturabilir, kayıt defteri olaylarına abone olur ve olayları almak için örnek bir Web uygulaması dağıtabilirsiniz.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. Son olarak, kapsayıcı görüntüsünü push ve delete olayları tetiklersiniz ve olay yükünü örnek uygulamada görüntüleyebilirsiniz.Finally, you trigger container image push and delete events and view the event payload in the sample application.

Bu makaledeki adımları tamamladıktan sonra, kapsayıcı Kayıt defterinizden Event Grid için gönderilen olaylar örnek Web uygulamasında görünür:After you complete the steps in this article, events sent from your container registry to Event Grid appear in the sample web app:

Üç alınan olayla örnek Web uygulamasını işleme Web tarayıcısı

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.If you don't have an Azure subscription, create a free account before you begin.

Azure Cloud Shell kullanmaUse Azure Cloud Shell

Azure, tarayıcınız aracılığıyla kullanabileceğiniz etkileşimli bir kabuk ortamı Azure Cloud Shell.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Azure hizmetleriyle çalışmak için Cloud Shell ile bash veya PowerShell kullanabilirsiniz.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. Bu makaledeki kodu, yerel ortamınıza herhangi bir şey yüklemeye gerek kalmadan çalıştırmak için Cloud Shell önceden yüklenmiş komutları kullanabilirsiniz.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Azure Cloud Shell başlamak için:To start Azure Cloud Shell:

SeçenekOption Örnek/bağlantıExample/Link
Kod bloğunun sağ üst köşesindeki Deneyin’i seçin.Select Try It in the upper-right corner of a code block. Dene ' nin seçilmesi, kodu Cloud Shell otomatik olarak kopyalamaz.Selecting Try It doesn't automatically copy the code to Cloud Shell. Azure Cloud Shell için deneme örneği
https://shell.azure.comgidin veya tarayıcınızda Cloud Shell açmak Için Cloud Shell Başlat düğmesini seçin.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Yeni bir pencerede başlatma Cloud Shell Launch Cloud Shell in a new window
Azure Portalsağ üstteki menü çubuğunda Cloud Shell düğmesini seçin.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Azure portaldaki Cloud Shell düğmesi

Bu makaledeki kodu Azure Cloud Shell çalıştırmak için:To run the code in this article in Azure Cloud Shell:

  1. Cloud Shell başlatın.Start Cloud Shell.

  2. Kodu kopyalamak için bir kod bloğunda Kopyala düğmesini seçin.Select the Copy button on a code block to copy the code.

  3. Windows ve Linux 'ta Ctrl+SHIFT+v ' i seçerek veya macos 'ta cmd+SHIFT+v ' i seçerek kodu Cloud Shell oturumuna yapıştırın.Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Kodu çalıştırmak için ENTER ' u seçin.Select Enter to run the code.

Bu makaledeki Azure CLı komutları Bash kabuğu için biçimlendirilir.The Azure CLI commands in this article are formatted for the Bash shell. PowerShell veya komut Istemi gibi farklı bir kabuk kullanıyorsanız, satır devamlılık karakterlerini veya değişken atama satırlarını uygun şekilde ayarlamanız gerekebilir.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. Bu makale, gerekli komut düzenlemesini en aza indirmek için değişkenleri kullanır.This article uses variables to minimize the amount of command editing required.

Kaynak grubu oluşturmaCreate a resource group

Azure Kaynak grubu, Azure kaynaklarınızı dağıttığınız ve yönettiğiniz bir mantıksal kapsayıcıdır.An Azure resource group is a logical container in which you deploy and manage your Azure resources. Aşağıdaki az Group Create komutu, Eastus bölgesinde myresourcegroup adlı bir kaynak grubu oluşturur.The following az group create command creates a resource group named myResourceGroup in the eastus region. Kaynak grubunuz için farklı bir ad kullanmak istiyorsanız, farklı bir değere ayarlayın RESOURCE_GROUP_NAME .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

Kapsayıcı kayıt defteri oluşturmaCreate a container registry

Ardından, aşağıdaki komutlarla bir kapsayıcı kayıt defteri 'ni kaynak grubuna dağıtın.Next, deploy a container registry into the resource group with the following commands. Az ACR Create komutunu çalıştırmadan önce, kayıt defteriniz için ACR_NAME bir ad ayarlayın.Before you run the az acr create command, set ACR_NAME to a name for your registry. Ad, Azure içinde benzersiz olmalıdır ve 5-50 alfasayısal karakterlerle kısıtlıdır.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

Kayıt defteri oluşturulduktan sonra Azure CLı, aşağıdakine benzer bir çıktı döndürür: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"
}

Olay uç noktası oluşturmaCreate an event endpoint

Bu bölümde, önceden oluşturulmuş örnek bir Web uygulamasını Azure App Service dağıtmak için GitHub deposunda bulunan Kaynak Yöneticisi şablonunu kullanırsınız.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. Daha sonra, kayıt defterinizin Event Grid olaylarına abone olur ve bu uygulamayı olayların gönderildiği uç nokta olarak belirtirsiniz.Later, you subscribe to your registry's Event Grid events and specify this app as the endpoint to which the events are sent.

Örnek uygulamayı dağıtmak için, Web uygulamanız SITE_NAME için benzersiz bir ad ayarlayın ve aşağıdaki komutları yürütün.To deploy the sample app, set SITE_NAME to a unique name for your web app, and execute the following commands. Site adı, Web uygulamasının tam etki alanı adının (FQDN) bir kısmını oluşturduğundan Azure içinde benzersiz olmalıdır.The site name must be unique within Azure because it forms part of the fully qualified domain name (FQDN) of the web app. Daha sonraki bir bölümde, kayıt defterinizin olaylarını görüntülemek için bir Web tarayıcısında uygulamanın FQDN 'sine gidebilirsiniz.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 group deployment 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

Dağıtım başarılı olduktan sonra (birkaç dakika sürebilir), bir tarayıcı açın ve çalıştığından emin olmak için Web uygulamanıza gidin: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

Örnek uygulamanın, hiçbir olay iletisi görüntülenmediğinde görüntülendiğini görmeniz gerekir:You should see the sample app rendered with no event messages displayed:

Olay görüntülenmeden örnek Web uygulamasını gösteren Web tarayıcısı

Event Grid kaynak sağlayıcısını etkinleştirmeEnable Event Grid resource provider

Azure aboneliğinizde daha önce Event Grid kullanmadıysanız Event Grid kaynak sağlayıcısına kaydolmanız gerekebilir.If you haven't previously used Event Grid in your Azure subscription, you may need to register the Event Grid resource provider. Sağlayıcıyı kaydetmek için şu komutu çalıştırın:Run the following command to register the provider:

az provider register --namespace Microsoft.EventGrid

Kayıt işleminin tamamlanması biraz sürebilir.It may take a moment for the registration to finish. Durumu denetlemek için şunu çalıştırın:To check the status, run:

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

registrationState Registered olduğu zaman devam edebilirsiniz.When registrationState is Registered, you're ready to continue.

Kayıt defteri olaylarına abone olmaSubscribe to registry events

Event Grid, izlemek istediğiniz olayları ve nereden gönderileceğini söylemek için bir konuya abone olursunuz.In Event Grid, you subscribe to a topic to tell it which events you want to track, and where to send them. Aşağıdaki az eventgrid olay-abonelik oluştur komutu oluşturduğunuz kapsayıcı kayıt defterine abone olur ve Web uygulamanızın URL 'sini, olayları göndereceği uç nokta olarak belirtir.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. Önceki bölümlerde doldurmuş olduğunuz ortam değişkenleri burada yeniden kullanılır, bu nedenle hiçbir düzenleme gerekmez.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

Abonelik tamamlandığında aşağıdakine benzer bir çıktı görmeniz gerekir: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"
}

Kayıt defteri olaylarını tetiklemeTrigger registry events

Örnek uygulama çalışır duruma gelmiştir ve Event Grid Kayıt defterinize abone olduğunuza göre, bazı olaylar oluşturmaya hazırsınız demektir.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. Bu bölümde, Kayıt defterinize bir kapsayıcı görüntüsü derlemek ve göndermek için ACR görevlerini kullanırsınız.In this section, you use ACR Tasks to build and push a container image to your registry. ACR görevleri, yerel makinenizde Docker altyapısının yüklü olması gerekmeden bulutta kapsayıcı görüntüleri oluşturmanıza olanak sağlayan bir Azure Container Registry özelliğidir.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örüntü oluşturma ve göndermeBuild and push image

GitHub deposunun içeriğinden bir kapsayıcı görüntüsü oluşturmak için aşağıdaki Azure CLı komutunu yürütün.Execute the following Azure CLI command to build a container image from the contents of a GitHub repository. Varsayılan olarak, ACR görevleri başarıyla oluşturulmuş bir görüntüyü Kayıt defterinize otomatik olarak gönderir ve ImagePushed olayı oluşturur.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

ACR görevleri görüntünüzü oluşturup daha sonra iletirken aşağıdakine benzer bir çıktı görmeniz gerekir.You should see output similar to the following while ACR Tasks builds and then pushes your image. Aşağıdaki örnek çıktı, breçekimi için kesildi.The following sample output has been truncated for brevity.

$ az acr build -r $ACR_NAME --image myimage:v1 -f Dockerfile https://github.com/Azure-Samples/acr-build-helloworld-node.git
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
...

Oluşturulan görüntünün kayıt defterinizde olduğunu doğrulamak için, "MyImage" deposundaki etiketleri görüntülemek için aşağıdaki komutu yürütün: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

Oluşturduğunuz görüntünün "v1" etiketinin çıktıda görünmesi gerekir, aşağıdakine benzer:The "v1" tag of the image you built should appear in the output, similar to the following:

$ az acr repository show-tags --name $ACR_NAME --repository myimage
[
  "v1"
]

Görüntüyü silmeDelete the image

Şimdi, ImageDeleted az ACR Repository Delete komutuyla görüntüyü silerek bir olay oluşturun: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

Aşağıdakine benzer bir çıktı görmeniz ve bildirimi ve ilişkili görüntüleri silmeyi onaylamanız istenir:You should see output similar to the following, asking for confirmation to delete the manifest and associated images:

$ az acr repository delete --name $ACR_NAME --image myimage:v1
This operation will delete the manifest 'sha256:f15fa9d0a69081ba93eee308b0e475a54fac9c682196721e294b2bc20ab23a1b' and all the following images: 'myimage:v1'.
Are you sure you want to continue? (y/n): y

Kayıt defteri olaylarını görüntülemeView registry events

Şimdi Kayıt defterinize bir görüntü gönderdi ve sonra dosyayı silmiş oldunuz.You've now pushed an image to your registry and then deleted it. Event Grid Viewer Web uygulamanıza gidin ve hem hem de ImageDeleted ImagePushed olayları görmeniz gerekir.Navigate to your Event Grid Viewer web app, and you should see both ImageDeleted and ImagePushed events. Ayrıca, kayıt defteri olaylarına abone ol bölümünde komutunu yürüterek oluşturulan bir abonelik doğrulama olayı da görebilirsiniz.You might also see a subscription validation event generated by executing the command in the Subscribe to registry events section.

Aşağıdaki ekran görüntüsünde, üç olayla örnek uygulama gösterilmektedir ve ImageDeleted bu olay, ayrıntılarını göstermek için genişletilir.The following screenshot shows the sample app with the three events, and the ImageDeleted event is expanded to show its details.

Imageitilmiş ve ımagedeleted olayları ile örnek uygulamayı gösteren Web tarayıcısı

Tebrikler!Congratulations! ImagePushed VeImageDeleted olaylarını görürseniz, kayıt defteriniz Event Grid olaylar gönderiyor ve Event Grid bu olayları Web uygulaması uç noktanıza iletiyor.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.

Kaynakları temizlemeClean up resources

Bu hızlı başlangıçta oluşturduğunuz kaynaklarla işiniz bittiğinde, bunları aşağıdaki Azure CLı komutuyla silebilirsiniz.Once you're done with the resources you created in this quickstart, you can delete them all with the following Azure CLI command. Bir kaynak grubunu sildiğinizde, içerdiği tüm kaynaklar kalıcı olarak silinir.When you delete a resource group, all of the resources it contains are permanently deleted.

UYARI: Bu işlem geri alınamaz.WARNING: This operation is irreversible. Komutu çalıştırmadan önce gruptaki herhangi bir kaynağa artık ihtiyacınız olmadığından emin olun.Be sure you no longer need any of the resources in the group before running the command.

az group delete --name $RESOURCE_GROUP_NAME

Event Grid olay şemasıEvent Grid event schema

Azure Container Registry olay iletisi şeması başvurusunu Event Grid belgelerinde bulabilirsiniz:You can find the Azure Container Registry event message schema reference in the Event Grid documentation:

Container Registry için Azure Event Grid olay şemasıAzure Event Grid event schema for Container Registry

Sonraki adımlarNext steps

Bu hızlı başlangıçta bir kapsayıcı kayıt defteri dağıttığınızda, ACR görevleri ile bir görüntü oluşturup, silmiş ve kayıt defterinizin olaylarını örnek bir uygulamayla Event Grid kullandınız.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. Ardından, bulutta kapsayıcı görüntüleri oluşturma hakkında daha fazla bilgi edinmek için ACR görevleri öğreticisine geçin ve temel görüntü güncelleştirmesinde otomatik derlemeler de dahildir: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: