Mulai Cepat: Merutekan peristiwa kustom ke titik akhir web dengan PowerShell dan Event Grid

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

View results

Catatan

Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Lihat Menginstal Azure PowerShell untuk memulai. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

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

Artikel ini mengharuskan Anda menjalankan versi terbaru Azure PowerShell. Jika Anda perlu menginstal atau melakukan peningkatan, lihat Menginstal dan mengonfigurasi Azure PowerShell.

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 New-AzResourceGroup.

Contoh berikut ini membuat grup sumber daya bernama gridResourceGroup di lokasi usbarat2.

New-AzResourceGroup -Name gridResourceGroup -Location westus2

Aktifkan penyedia sumber daya Event Grid

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

Register-AzResourceProvider -ProviderNamespace Microsoft.EventGrid

Mungkin perlu beberapa saat agar pendaftaran selesai. Untuk memeriksa status, jalankan:

Get-AzResourceProvider -ProviderNamespace Microsoft.EventGrid

Saat RegistrationStatus 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. Ganti <your-topic-name> dengan nama unik untuk topik Anda. Nama topik harus unik karena merupakan bagian dari entri DNS. Selain itu, nama harus terdiri dari antara 3-50 karakter dan hanya berisi nilai a-z, A-Z, 0-9, dan "-"

$topicname="<your-topic-name>"

New-AzEventGridTopic -ResourceGroupName gridResourceGroup -Location westus2 -Name $topicname

Buat titik akhir pesan

Sebelum berlangganan topik, mari kita buat titik akhir untuk pesan peristiwa tersebut. 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.

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>"

New-AzResourceGroupDeployment `
  -ResourceGroupName gridResourceGroup `
  -TemplateUri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" `
  -siteName $sitename `
  -hostingPlanName viewerhost

Perlu 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

Anda akan melihat situs tersebut tanpa ada pesan yang ditampilkan.

Berlangganan topik

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

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

$endpoint="https://$sitename.azurewebsites.net/api/updates"

New-AzEventGridSubscription `
  -EventSubscriptionName demoViewerSub `
  -Endpoint $endpoint `
  -ResourceGroupName gridResourceGroup `
  -TopicName $topicname

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 subscription event

Mengirim peristiwa ke topik 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.

$endpoint = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name $topicname).Endpoint
$keys = Get-AzEventGridTopicKey -ResourceGroupName gridResourceGroup -Name $topicname

Untuk menyederhanakan artikel ini, mari kita siapkan sampe data peristiwa untuk dikirim ke topik kustom. Biasanya, aplikasi atau layanan Azure akan mengirimkan data peristiwa. Contoh berikut menggunakan Hashtable untuk membuat htbody data peristiwa, kemudian mengubahnya menjadi $body objek payload JSON yang terbentuk dengan baik:

$eventID = Get-Random 99999

#Date format should be SortableDateTimePattern (ISO 8601)
$eventDate = Get-Date -Format s

#Construct body using Hashtable
$htbody = @{
    id= $eventID
    eventType="recordInserted"
    subject="myapp/vehicles/motorcycles"
    eventTime= $eventDate   
    data= @{
        make="Ducati"
        model="Monster"
    }
    dataVersion="1.0"
}

#Use ConvertTo-Json to convert event body from Hashtable to JSON Object
#Append square brackets to the converted JSON payload since they are expected in the event's JSON payload syntax
$body = "["+(ConvertTo-Json $htbody)+"]"

Jika Anda melihat $body, Anda akan melihat peristiwa lengkapnya. 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.

Sekarang, kirim peristiwa ke topik Anda.

Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}

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": "2018-01-25T15:58:13",
  "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.

Remove-AzResourceGroup -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.