Mulai Cepat: Merutekan kejadian kustom ke titik akhir web dengan Azure CLI dan Event Grid

Azure Event Grid adalah layanan pembuat peristiwa untuk cloud. Dalam artikel ini, Anda menggunakan Azure CLI untuk membuat topik kustom, berlangganan topik kustom, 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.

Setelah selesai, Anda akan melihat bahwa data peristiwa telah dikirim ke aplikasi web.

Screenshot showing the Event Grid Viewer sample with a sample event.

Jika Anda tidak memiliki Langganan Azure, buat Akun gratis Azure sebelum memulai.

Prasyarat

  • Artikel ini memerlukan Azure CLI versi 2.0.70 atau yang lebih baru. Jika menggunakan Azure Cloud Shell, versi terbaru sudah terinstal.

Buat grup sumber daya

Topik Event Grid merupakan sumber daya Azure, dan harus ditempatkan di grup sumber daya Azure. Grup sumber daya Azure adalah koleksi logis tempat sumber daya Azure disebarkan dan dikelola.

Buat grup sumber daya dengan perintah az group create. Contoh berikut ini membuat grup sumber daya bernama gridResourceGroup di lokasi usbarat2. Jika Anda memilih Coba, Anda akan melihat jendela Azure Cloud Shell di panel kanan. Kemudian, pilih Salin untuk menyalin perintah dan menempelkannya di jendela Azure Cloud Shell, dan tekan ENTER untuk menjalankan perintah. Ubah nama grup sumber daya dan lokasi jika Anda mau.

az group create --name gridResourceGroup --location westus2

Aktifkan penyedia sumber daya Event Grid

  1. Jika sebelumnya Anda belum menggunakan Event Grid di langganan Azure, Anda mungkin perlu mendaftarkan penyedia sumber daya Event Grid. Jalankan perintah berikut untuk mendaftarkan penyedia:

    az provider register --namespace Microsoft.EventGrid
    
  2. Mungkin perlu beberapa saat agar pendaftaran selesai. Untuk memeriksa status, jalankan perintah berikut:

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

    Saat registrationState adalah Registered, Anda siap untuk melanjutkan.

Membuat topik kustom

Topik Event Grid menyediakan titik akhir yang ditentukan pengguna tempat Anda memposting peristiwa. Contoh berikut membuat topik kustom di grup sumber daya Anda menggunakan Bash di Azure Cloud Shell. Ganti <your-topic-name> dengan nama unik untuk topik Anda. Nama topik kustom harus unik karena ini adalah bagian dari entri Sistem Nama Domain (DNS). Selain itu, nama harus terdiri dari antara 3-50 karakter dan hanya berisi nilai a-z, A-Z, 0-9, dan "-"

  1. Salin perintah berikut, tentukan nama untuk topik tersebut, dan tekan ENTER untuk menjalankan perintah.

    topicname=<your-topic-name>
    
  2. az eventgrid topic create Gunakan perintah untuk membuat topik kustom.

    az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
    

Buat titik akhir pesan

Sebelum berlangganan topik kustom, mari kita buat titik akhir untuk pesan kejadian. 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. Salin perintah berikut, tentukan nama untuk aplikasi web (sampel Penampil Event Grid), dan tekan ENTER untuk menjalankan perintah. Ganti <your-site-name> dengan nama unik untuk aplikasi web Anda. Nama aplikasi web harus unik karena merupakan bagian dari entri DNS.

    sitename=<your-site-name>
    
  2. Jalankan az deployment group create untuk menyebarkan aplikasi web menggunakan templat Azure Resource Manager.

    az deployment group create \
      --resource-group gridResourceGroup \
      --template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" \
      --parameters siteName=$sitename hostingPlanName=viewerhost
    

Penyebaran mungkin perlu waktu beberapa menit untuk diselesaikan. Setelah penyebaran berhasil, lihat aplikasi web Anda untuk memastikannya berjalan. Di browser web, navigasi ke: https://<your-site-name>.azurewebsites.net

Anda akan melihat situs tersebut tanpa ada pesan yang ditampilkan.

Berlangganan topik kustom

Anda berlangganan topik Event Grid untuk memberi tahu Event Grid peristiwa mana yang ingin Anda lacak dan tempat mengirim peristiwa tersebut. Contoh berikut berlangganan topik kustom yang Anda buat, dan meneruskan URL dari aplikasi web Anda sebagai titik akhir untuk pemberitahuan kejadian.

Titik akhir untuk aplikasi web Anda harus menyertakan akhiran /api/updates/.

  1. Salin perintah berikut, ganti $sitename dengan nama aplikasi web yang Anda buat di langkah sebelumnya, dan tekan ENTER untuk menjalankan perintah.

    endpoint=https://$sitename.azurewebsites.net/api/updates
    
  2. Jalankan perintah berikut untuk mendapatkan ID sumber daya topik yang Anda buat.

    topicresourceid=$(az eventgrid topic show --resource-group gridResourceGroup --name $topicname --query "id" --output tsv)
    
  3. Jalankan perintah berikut untuk membuat langganan ke topik kustom menggunakan titik akhir.

    az eventgrid event-subscription create \
      --source-resource-id $topicresourceid \
      --name demoViewerSub \
      --endpoint $endpoint      
    

    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.

    View the subscription event in Azure Event Grid Viewer

Mengirim peristiwa ke topik kustom Anda

Mari kita picu peristiwa untuk melihat cara Event Grid mendistribusikan pesan ke titik akhir Anda. Pertama, mari kita dapatkan URL dan kunci untuk topik kustom.

endpoint=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicname -g gridResourceGroup --query "key1" --output tsv)

Untuk menyederhanakan artikel ini, Anda dapat menggunakan sampel data kejadian untuk dikirim ke topik kustom. Biasanya, aplikasi atau layanan Azure akan mengirimkan data peristiwa. Contoh berikut membuat sampel data kejadian:

event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/motorcycles", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "make": "Ducati", "model": "Monster"},"dataVersion": "1.0"} ]'

Elemen data JSON adalah payload peristiwa Anda. Setiap JSON yang terbentuk dengan baik dapat masuk dalam bidang ini. Anda juga dapat menggunakan bidang subjek untuk perutean dan pemfilteran tingkat lanjut.

CURL adalah utilitas yang mengirim permintaan HTTP. Dalam artikel ini, gunakan CURL untuk mengirim kejadian ke topik.

curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint

Anda telah memicu kejadian, dan Event Grid mengirim pesan ke titik akhir yang Anda konfigurasi saat berlangganan. Lihat aplikasi web Anda untuk melihat peristiwa yang baru saja Anda kirim.

[{
  "id": "1807",
  "eventType": "recordInserted",
  "subject": "myapp/vehicles/motorcycles",
  "eventTime": "2017-08-10T21:03:07+00:00",
  "data": {
    "make": "Ducati",
    "model": "Monster"
  },
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/topics/{topic}"
}]

Membersihkan sumber daya

Jika Anda berencana untuk terus bekerja dengan kejadian ini atau aplikasi penampil kejadian, jangan bersihkan sumber daya yang dibuat di artikel ini. Jika tidak, gunakan perintah berikut untuk menghapus sumber daya yang Anda buat di artikel ini.

az group delete --name gridResourceGroup

Langkah berikutnya

Setelah mengetahui cara membuat topik dan langganan kejadian, pelajari lebih lanjut tentang Azure Event Grid apa yang dapat membantu Anda melakukan:

Lihat contoh berikut untuk mempelajari tentang penerbitan peristiwa ke dan menggunakan peristiwa dari Event Grid menggunakan bahasa pemrograman yang berbeda.