Bagikan melalui


Mulai Cepat: Merutekan peristiwa penyimpanan Blob ke titik akhir web dengan menggunakan templat ARM

Dalam artikel ini, Anda menggunakan templat Azure Resource Manager (templat ARM) untuk membuat akun penyimpanan Blob, berlangganan peristiwa untuk penyimpanan blob tersebut, dan memicu peristiwa untuk menampilkan hasilnya. Biasanya, Anda mengirim peristiwa ke titik akhir yang memproses data peristiwa dan mengambil tindakan. Namun, untuk menyederhanakan artikel ini, Anda mengirim peristiwa ke aplikasi web yang mengumpulkan dan menampilkan pesan.

Catatan

Jika Anda baru menggunakan Azure Event Grid, lihat Apa itu Azure Event Grid untuk mendapatkan gambaran umum layanan sebelum melalui tutorial ini.

Templat Azure Resource Manager adalah file JavaScript Object Notation (JSON) yang menentukan infrastruktur dan konfigurasi untuk proyek Anda. Template tersebut menggunakan sintaksis deklaratif. Anda menjelaskan penyebaran yang Dimaksudkan tanpa menulis urutan perintah pemrograman untuk membuat penyebaran.

Jika lingkungan Anda telah memenuhi prasyarat dan Anda terbiasa menggunakan templat ARM, pilih tombol Sebarkan ke Azure. Templat akan terbuka di portal Microsoft Azure.

Tombol untuk menyebarkan templat Resource Manager ke Azure.

Prasyarat

Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.

Buat titik akhir pesan

Sebelum berlangganan peristiwa untuk penyimpanan Blob, mari kita buat titik akhir untuk pesan peristiwa. Biasanya, titik akhir mengambil tindakan berdasarkan data kejadian. Untuk menyederhanakan mulai cepat ini, Anda menyebarkan aplikasi web bawaan yang menampilkan pesan peristiwa. Solusi yang disebarkan mencakup rencana App Service, aplikasi web App Service, dan kode sumber dari GitHub.

  1. Pilih Sebarkan ke Azure untuk menyebarkan solusi ke langganan Anda. Di portal Microsoft Azure, berikan nilai untuk parameter.

    Sebarkan ke Azure

  2. Diperlukan beberapa menit untuk menyelesaikan penyebaran. Setelah penyebaran berhasil, lihat aplikasi web Anda untuk memastikannya berjalan. Di browser web, navigasi ke: https://<your-site-name>.azurewebsites.net

  3. Anda melihat situs tetapi belum ada peristiwa yang diposting ke situs tersebut.

    Menampilkan situs baru

Meninjau templat

Templat yang digunakan di mulai cepat ini berasal dari Templat Mulai Cepat Azure.

{
  "$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')]"
    }
  }
}

Dua sumber daya Azure yang ditentukan dalam templat:

Menyebarkan templat

  1. Pilih tautan berikut untuk masuk ke Azure dan membuka template. Template membuat key vault dan rahasia.

    Tombol untuk menyebarkan templat Resource Manager ke Azure.

  2. Tentukan titik akhir: berikan URL aplikasi web Anda dan tambahkan api/updates ke URL halaman beranda.

  3. Pilih Beli untuk menyebarkan templat.

Portal Microsoft Azure digunakan di sini untuk menyebarkan templat. Anda juga dapat menggunakan Azure PowerShell, Azure CLI, dan REST API. Untuk mempelajari metode penyebaran lainnya, lihat Menyebarkan templat.

Catatan

Anda dapat menemukan lebih banyak sampel templat Azure Event Grid di sini.

Memvalidasi penyebaran

Lihat lagi aplikasi web Anda, dan perhatikan bahwa peristiwa validasi langganan telah dikirim ke sana. Pilih ikon mata untuk meluaskan data peristiwa. Event Grid mengirimkan peristiwa validasi sehingga titik akhir dapat memverifikasi bahwa ia ingin menerima data peristiwa. Aplikasi web menyertakan kode untuk memvalidasi langganan.

Lihat peristiwa berlangganan

Sekarang, mari kita picu kejadian untuk melihat cara Event Grid mendistribusikan pesan ke titik akhir Anda.

Anda memicu peristiwa untuk penyimpanan Blob dengan mengunggah file. File tidak memerlukan konten tertentu. Artikel ini mengasumsikan Anda memiliki file bernama testfile.txt, tetapi Anda dapat menggunakan file apa pun.

Saat Anda mengunggah file ke penyimpanan Azure Blob, Event Grid mengirim pesan ke titik akhir yang Anda konfigurasi saat berlangganan. Pesan tersebut menggunakan format JSON dan berisi array dengan satu atau beberapa peristiwa. Dalam contoh berikut, pesan JSON berisi array dengan satu peristiwa. Lihat aplikasi web Anda dan perhatikan bahwa peristiwa yang dibuat blob diterima.

Melihat hasil

Membersihkan sumber daya

Saat tidak lagi diperlukan, hapus grup sumber daya.

Langkah berikutnya

Untuk mengetahui informasi selengkapnya tentang templat Azure Resource Manager, lihat artikel berikut: