Mengirimkan peristiwa ke Azure Event Hubs menggunakan topik namespace - Azure CLI (pratinjau)

Artikel ini menyediakan instruksi langkah demi langkah untuk menerbitkan peristiwa ke Azure Event Grid dalam format CloudEvents JSON dan mengirimkan peristiwa tersebut dengan menggunakan model pengiriman push. Untuk spesifiknya, Anda menggunakan Azure CLI dan Curl untuk menerbitkan peristiwa ke topik namespace di Event Grid dan mendorong peristiwa tersebut dari langganan peristiwa ke tujuan handler Azure Event Hubs. Untuk informasi selengkapnya tentang model pengiriman push, lihat Gambaran umum pengiriman push.

Catatan

  • Namespace, topik namespace layanan, dan langganan peristiwa yang terkait dengan topik namespace layanan awalnya tersedia di wilayah berikut: US Timur, AS Tengah, AS Tengah Selatan, US Barat 2, Asia Timur, Asia Tenggara, Eropa Utara, Eropa Barat, UEA Utara.
  • Ekstensi Azure CLI Event Grid belum mendukung namespace layanan dan sumber daya apa pun yang dikandungnya. Kami akan menggunakan sumber daya Azure CLI untuk membuat sumber daya Event Grid.
  • Namespace Layanan Azure Event Grid saat ini mendukung token Tanda Tangan Akses Bersama (SAS) dan autentikasi kunci akses.

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

Prasyarat

  • Gunakan lingkungan Bash di Azure Cloud Shell. Untuk informasi selengkapnya, lihat Mulai Cepat untuk Bash di Azure Cloud Shell.

  • Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, instal Azure CLI. Jika Anda menjalankan Windows atau macOS, pertimbangkan untuk menjalankan Azure CLI dalam kontainer Docker. Untuk informasi lebih lanjut, lihat Cara menjalankan Azure CLI di kontainer Docker.

    • Jika Anda menggunakan penginstalan lokal, masuk ke Azure CLI dengan menggunakan az login perintah . Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk lainnya, lihat Masuk dengan Azure CLI.

    • Saat Anda diminta, instal ekstensi Azure CLI pada penggunaan pertama. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan ekstensi dengan Azure CLI.

    • Jalankan versi az untuk menemukan versi dan pustaka dependen yang diinstal. Untuk meningkatkan ke versi terbaru, jalankan peningkatan az.

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

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.

Buat grup sumber daya

Buat grup sumber daya Azure dengan perintah pembuatan grupaz. Anda menggunakan grup sumber daya ini untuk memuat semua sumber daya yang dibuat dalam artikel ini.

Langkah-langkah umum untuk menggunakan Cloud Shell untuk menjalankan perintah adalah:

  • Pilih Buka Cloud Shell untuk melihat jendela Azure Cloud Shell di panel kanan.
  • Salin perintah dan tempelkan ke jendela Azure Cloud Shell.
  • Tekan ENTER untuk menjalankan perintah.
  1. Deklarasikan variabel untuk menyimpan nama grup sumber daya Azure. Tentukan nama untuk grup sumber daya dengan mengganti <your-resource-group-name> dengan nilai yang Anda suka.

    resource_group="<your-resource-group-name>"
    
    location="<your-resource-group-location>"
    
  2. Buat grup sumber daya. Ubah lokasi sesuai keinginan Anda.

    az group create --name $resource_group --location $location
    

Membuat namespace

Namespace Layanan Event Grid menyediakan titik akhir yang ditentukan pengguna tempat Anda memposting peristiwa Anda. Contoh berikut membuat namespace layanan di grup sumber daya Anda menggunakan Bash di Azure Cloud Shell. Nama namespace harus unik karena merupakan bagian dari entri Sistem Nama Domain (DNS). Nama namespace harus memenuhi aturan berikut:

  • Harus antara 3-50 karakter.
  • Ini harus unik secara regional.
  • Hanya karakter yang diizinkan adalah a-z, A-Z, 0-9 dan -
  • Seharusnya tidak dimulai dengan awalan kata kunci yang dipesan seperti Microsoft, System atau EventGrid.
  1. Deklarasikan variabel untuk menyimpan nama untuk namespace Layanan Event Grid Anda. Tentukan nama untuk namespace layanan dengan mengganti <your-namespace-name> dengan nilai yang Anda suka.

    namespace="<your-namespace-name>"
    
  2. Buat kumpulan nama XML. Anda mungkin ingin mengubah lokasi tempat penyebarannya.

    az eventgrid namespace create -g $resource_group -n $namespace -l $location
    

Membuat topik namespace layanan

Buat topik yang digunakan untuk menyimpan semua peristiwa yang diterbitkan ke titik akhir namespace.

  1. Deklarasikan variabel untuk menyimpan nama untuk topik namespace Anda. Tentukan nama untuk topik namespace dengan mengganti <your-topic-name> dengan nilai yang Anda suka.

    topic="<your-topic-name>"
    
  2. Buat topik namespace Anda:

    az eventgrid namespace topic create -g $resource_group -n $topic --namespace-name $namespace 
    

Membuat sumber daya Azure Event Hubs baru

Buat sumber daya Azure Event Hubs yang digunakan sebagai tujuan handler untuk langganan pengiriman push topik namespace.

  1. Deklarasikan variabel untuk menyimpan nama namespace Layanan Pusat Aktivitas.

    eventHubsNamespace="<your-event-hubs-namespace-name>"
    
  2. Membuat namespace layanan Pusat Aktivitas.

    az eventhubs namespace create --resource-group $resource_group --name $eventHubsNamespace --location $location  
    
  3. Deklarasikan variabel untuk menyimpan nama pusat aktivitas.

    eventHubsEventHub="<your-event-hub-name>"
    
  4. Jalankan perintah berikut untuk membuat pusat aktivitas di namespace layanan.

    az eventhubs eventhub create --resource-group $resource_group --namespace-name $eventHubsNamespace --name $eventHubsEventHub 
    

Mengirimkan kejadian ke Azure Event Hubs menggunakan identitas terkelola

Untuk mengirimkan kejadian ke hub kejadian di ruang nama Azure Event Hubs Anda menggunakan identitas terkelola, ikuti langkah-langkah berikut:

  1. Aktifkan identitas terkelola yang ditetapkan sistem atau ditetapkan pengguna: namespace. Lanjutkan membaca ke bagian berikutnya untuk menemukan cara mengaktifkan identitas terkelola menggunakan Azure CLI.
  2. Tambahkan identitas ke peran Pengirim Data Azure Event Hubs di namespace Layanan Pusat Aktivitas, lanjutkan membaca ke bagian berikutnya untuk menemukan cara menambahkan penetapan peran.
  3. Fungsikan setelan Perbolehkan layanan Microsoft tepercaya untuk melewati setelan firewall ini pada ruang nama Azure Event Hubs Anda.
  4. Konfigurasikan langganan peristiwa yang menggunakan hub peristiwa sebagai titik akhir untuk menggunakan identitas terkelola yang ditetapkan sistem atau yang ditetapkan pengguna.

Catatan

Mengirimkan peristiwa ke Azure Event Hubs saat ini dalam pratinjau.

Mengaktifkan identitas terkelola di namespace Layanan Event Grid

Aktifkan identitas terkelola yang ditetapkan sistem di namespace Layanan Event Grid.

az eventgrid namespace update --resource-group $resource_group --name $namespace --identity {type:systemassigned}

Menambahkan penetapan peran di Azure Event Hubs untuk identitas terkelola Event Grid

  1. Dapatkan ID prinsipal identitas terkelola sistem namespace layanan Event Grid.

    principalId=$(az eventgrid namespace show --resource-group $resource_group --name $namespace --query identity.principalId -o tsv)
    
  2. Dapatkan ID sumber daya pusat aktivitas Azure Event Hubs.

    eventHubResourceId=$(az eventhubs eventhub show --resource-group $resource_group --namespace-name $eventHubsNamespace --name $eventHubsEventHub --query id -o tsv)
    
  3. Tambahkan penetapan peran di Azure Event Hubs untuk identitas terkelola sistem Event Grid.

    az role assignment create --role "Azure Event Hubs Data Sender" --assignee $principalId --scope $eventHubResourceId
    

Membuat langganan peristiwa

Buat langganan peristiwa pengiriman push baru.

event_subscription="<your_event_subscription_name>"
az resource create --api-version 2023-06-01-preview --resource-group $resource_group --namespace Microsoft.EventGrid --resource-type eventsubscriptions --name $event_subscription --parent namespaces/$namespace/topics/$topic --location $location --properties "{\"deliveryConfiguration\":{\"deliveryMode\":\"Push\",\"push\":{\"maxDeliveryCount\":10,\"deliveryWithResourceIdentity\":{\"identity\":{\"type\":\"SystemAssigned\"},\"destination\":{\"endpointType\":\"EventHub\",\"properties\":{\"resourceId\":\"$eventHubResourceId\"}}}}}}"

Mengirim peristiwa ke topik Anda

Sekarang, kirim contoh peristiwa ke topik namespace dengan mengikuti langkah-langkah di bagian ini.

Mencantumkan kunci akses namespace layanan

  1. Dapatkan kunci akses yang terkait dengan namespace yang Anda buat. Anda menggunakan salah satunya untuk mengautentikasi saat menerbitkan peristiwa. Untuk mencantumkan kunci, Anda memerlukan ID sumber daya namespace lengkap terlebih dahulu. Dapatkan dengan menjalankan perintah berikut:

    namespace_resource_id=$(az eventgrid namespace show -g $resource_group -n $namespace --query "id" --output tsv)
    
  2. Dapatkan kunci pertama dari namespace:

    key=$(az eventgrid namespace list-key -g $resource_group --namespace-name $namespace --query "key1" --output tsv)
    

Menerbitkan peristiwa

  1. Ambil nama host namespace layanan. Anda menggunakannya untuk menyusun titik akhir HTTP namespace layanan tempat peristiwa dikirim. Operasi berikut pertama kali tersedia dengan versi 2023-06-01-previewAPI .

    publish_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic:publish?api-version=2023-06-01-preview
    
  2. Buat contoh peristiwa yang sesuai dengan CloudEvents :

    event=' { "specversion": "1.0", "id": "'"$RANDOM"'", "type": "com.yourcompany.order.ordercreatedV2", "source" : "/mycontext", "subject": "orders/O-234595", "time": "'`date +%Y-%m-%dT%H:%M:%SZ`'", "datacontenttype" : "application/json", "data":{ "orderId": "O-234595", "url": "https://yourcompany.com/orders/o-234595"}} '
    

    Elemen data adalah payload peristiwa Anda. Setiap JSON yang terbentuk dengan baik dapat masuk dalam bidang ini. Untuk informasi selengkapnya tentang properti (juga dikenal sebagai atribut konteks) yang dapat masuk dalam suatu peristiwa, lihat spesifikasi CloudEvents .

  3. Gunakan CURL untuk mengirim peristiwa ke topik tersebut. CURL adalah utilitas yang mengirim permintaan HTTP.

    curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
    

    Navigasi ke halaman Namespace Layanan Pusat Aktivitas di portal Azure, refresh halaman dan verifikasi bahwa penghitung pesan masuk di bagan menunjukkan bahwa peristiwa telah diterima.

    Cuplikan layar yang memperlihatkan halaman Pusat aktivitas dengan bagan yang memperlihatkan peristiwa telah diterima.

Langkah berikutnya

Dalam artikel ini, Anda membuat dan mengonfigurasi namespace Layanan Event Grid dan sumber daya Azure Event Hubs. Untuk instruksi langkah demi langkah untuk menerima peristiwa dari pusat aktivitas, lihat tutorial berikut: