Hızlı Başlangıç: ARM şablonu kullanarak Blob depolama olaylarını web uç noktasına yönlendirme
Bu makalede, Bir Blob depolama hesabı oluşturmak, bu blob depolama için olaylara abone olmak ve sonucu görüntülemek için bir olayı tetikleme amacıyla bir Azure Resource Manager şablonu (ARM şablonu) kullanırsınız. Normalde olayları, olay verilerini işleyen ve eylemler gerçekleştiren bir uç noktaya gönderirsiniz. Bununla birlikte, bu makaleyi basitleştirmek için olayları iletilerin toplandığı ve görüntülendiği bir web uygulamasına gönderirsiniz.
Not
Azure Event Grid'de yeniyseniz, bu öğreticiden önce hizmete genel bir bakış elde etmek için bkz . Azure Event Grid nedir?
Azure Resource Manager şablonu, projenizin altyapısını ve yapılandırmasını tanımlayan bir JavaScript Nesne Gösterimi (JSON) dosyasıdır. Bu şablonda, bildirim temelli sözdizimi kullanılır. Dağıtımı oluşturmak için programlama komutlarının sırasını yazmadan hedeflenen dağıtımınızı açıklarsınız.
Ortamınız önkoşulları karşılıyorsa ve ARM şablonlarını kullanma hakkında bilginiz varsa, Azure’a dağıtma düğmesini seçin. Şablon Azure portalda açılır.
Önkoşullar
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
İleti uç noktası oluşturma
Blob depolamasındaki olaylara abone olmadan önce olay iletisi için uç noktayı oluşturalım. Normalde, olay verileri temelinde uç nokta eylemleri gerçekleştirir. Bu hızlı başlangıcı basitleştirmek için, olay iletilerini görüntüleyen önceden oluşturulmuş bir web uygulaması dağıtacaksınız. Dağıtılan çözüm bir App Service planı, App Service web uygulaması ve GitHub'dan kaynak kod içerir.
Çözümü aboneliğinize dağıtmak için Azure'a Dağıt'ı seçin. Azure portalında parametre değerlerini girin.
Dağıtımın tamamlanması birkaç dakika sürebilir. Dağıtım başarılı olduktan sonra çalıştığından emin olmak için web uygulamanızı görüntüleyin. Web tarayıcısında şu adrese gidin:
https://<your-site-name>.azurewebsites.net
Siteyi görürsünüz ancak henüz hiçbir olay gönderilmez.
Şablonu gözden geçirme
Bu hızlı başlangıçta kullanılan şablon Azure Hızlı Başlangıç Şablonlarından alınmıştır.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.26.54.24096",
"templateHash": "17805408638569592847"
}
},
"parameters": {
"storageAccountName": {
"type": "string",
"defaultValue": "[format('storage{0}', uniqueString(resourceGroup().id))]",
"metadata": {
"description": "Provide a unique name for the Blob Storage account."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Provide a location for the Blob Storage account that supports Event Grid."
}
},
"eventSubName": {
"type": "string",
"defaultValue": "subToStorage",
"metadata": {
"description": "Provide a name for the Event Grid subscription."
}
},
"endpoint": {
"type": "string",
"metadata": {
"description": "Provide the URL for the WebHook to receive events. Create your own endpoint for events."
}
},
"systemTopicName": {
"type": "string",
"defaultValue": "mystoragesystemtopic",
"metadata": {
"description": "Provide a name for the system topic."
}
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-01-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"accessTier": "Hot",
"minimumTlsVersion": "TLS1_2",
"supportsHttpsTrafficOnly": true,
"allowBlobPublicAccess": false
}
},
{
"type": "Microsoft.EventGrid/systemTopics",
"apiVersion": "2023-12-15-preview",
"name": "[parameters('systemTopicName')]",
"location": "[parameters('location')]",
"identity": {
"type": "SystemAssigned"
},
"properties": {
"source": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]",
"topicType": "Microsoft.Storage.StorageAccounts"
},
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
]
},
{
"type": "Microsoft.EventGrid/systemTopics/eventSubscriptions",
"apiVersion": "2023-12-15-preview",
"name": "[format('{0}/{1}', parameters('systemTopicName'), parameters('eventSubName'))]",
"properties": {
"destination": {
"properties": {
"endpointUrl": "[parameters('endpoint')]"
},
"endpointType": "WebHook"
},
"filter": {
"includedEventTypes": [
"Microsoft.Storage.BlobCreated",
"Microsoft.Storage.BlobDeleted"
]
}
},
"dependsOn": [
"[resourceId('Microsoft.EventGrid/systemTopics', parameters('systemTopicName'))]"
]
}
],
"outputs": {
"name": {
"type": "string",
"value": "[parameters('eventSubName')]"
},
"resourceId": {
"type": "string",
"value": "[resourceId('Microsoft.EventGrid/systemTopics/eventSubscriptions', parameters('systemTopicName'), parameters('eventSubName'))]"
},
"resourceGroupName": {
"type": "string",
"value": "[resourceGroup().name]"
},
"location": {
"type": "string",
"value": "[parameters('location')]"
}
}
}
Şablonda iki Azure kaynağı tanımlanır:
- Microsoft.Storage/storageAccounts: Bir Azure Depolama hesabı oluşturun.
- Microsoft.EventGrid/systemTopics: Depolama hesabı için belirtilen ada sahip bir sistem konusu oluşturun.
- Microsoft.EventGrid/systemTopics/eventSubscriptions: Sistem konusu için bir Azure Event Grid aboneliği oluşturun.
Şablonu dağıtma
Azure'da oturum açmak ve bir şablon açmak için aşağıdaki bağlantıyı seçin. Şablon bir anahtar kasası ve bir gizli dizi oluşturur.
Uç noktayı belirtin: Web uygulamanızın URL'sini sağlayın ve giriş sayfası URL'sine ekleyin
api/updates
.Şablonu dağıtmak için Satın Al'ı seçin.
Azure portalı burada şablonu dağıtmak için kullanılır. Azure PowerShell, Azure CLI ve REST API'yi de kullanabilirsiniz. Diğer dağıtım yöntemlerini öğrenmek için bkz . Şablonları dağıtma.
Not
Burada daha fazla Azure Event Grid şablonu örneği bulabilirsiniz.
Dağıtımı doğrulama
Web uygulamanızı yeniden görüntüleyin ve buna bir abonelik doğrulama olayının gönderildiğine dikkat edin. Göz simgesini seçerek olay verilerini genişletin. Uç noktanın olay verilerini almak istediğini doğrulayabilmesi için Event Grid doğrulama olayını gönderir. Web uygulaması aboneliği doğrulamak için kod içerir.
Şimdi, Event Grid’in iletiyi uç noktanıza nasıl dağıttığını görmek için bir olay tetikleyelim.
Dosya yükleyerek Blob depolaması için bir olay tetiklemiş olursunuz. Dosyanın belirli bir içeriğe sahip olmasına gerek yoktur. Makalede, testfile.txt adlı bir dosyanız olduğu varsayılır, ancak herhangi bir dosyayı kullanabilirsiniz.
Dosyayı Azure Blob depolamaya yüklediğinizde, Event Grid abone olduğunuzda yapılandırdığınız uç noktaya bir ileti gönderir. İleti JSON biçimindedir ve bir veya daha fazla olay içeren bir dizi içerir. Aşağıdaki örnekte, JSON iletisi tek olaylı bir dizi içerir. Web uygulamanızı görüntülediğinizde blob oluşturma olayının gönderildiğini göreceksiniz.
Kaynakları temizleme
Artık gerekli olmadığında kaynak grubunu silin.
Sonraki adımlar
Azure Resource Manager şablonları hakkında daha fazla bilgi için aşağıdaki makalelere bakın: