Aplikasi terkelola Azure dengan pemberitahuan
Pemberitahuan aplikasi terkelola Azure memungkinkan penerbit mengotomatiskan tindakan berdasarkan peristiwa siklus hidup instans aplikasi terkelola. Penerbit dapat menentukan titik akhir webhook pemberitahuan kustom agar menerima pemberitahuan kejadian terkait instans aplikasi terkelola baru dan yang sudah ada. Penerbit dapat menyiapkan alur kerja kustom pada saat penyediaan aplikasi, pembaruan, dan penghapusan.
Memulai
Untuk mulai menerima pemberitahuan aplikasi terkelola, buat titik akhir HTTPS publik. Tentukan titik akhir saat Anda menerbitkan definisi aplikasi katalog layanan atau penawaran Marketplace Microsoft Azure.
Berikut adalah langkah-langkah yang direkomendasikan untuk memulai dengan cepat:
- Buat titik akhir HTTPS publik yang mencatat permintaan POST yang masuk dan menampilkan
200 OK
. - Tambahkan titik akhir ke definisi aplikasi katalog layanan atau penawaran Marketplace Azure seperti yang dijelaskan kemudian di artikel ini.
- Buat instans aplikasi terkelola yang mereferensikan definisi aplikasi atau penawaran Marketplace Azure.
- Validasi bahwa pemberitahuan sedang diterima.
- Aktifkan otorisasi seperti yang dijelaskan di bagian Autentikasi titik akhir di artikel ini.
- Ikuti instruksi di bagian Skema pemberitahuan di artikel ini untuk memilah permintaan pemberitahuan dan menerapkan logika bisnis Anda berdasarkan pemberitahuan.
Menambahkan pemberitahuan definisi aplikasi katalog layanan
Contoh berikut menunjukkan cara menambahkan URI titik akhir pemberitahuan dengan menggunakan portal atau REST API.
Portal Azure
Untuk memulai, lihat Mulai Cepat: Membuat dan menerbitkan definisi Azure Managed Application.
REST API
Catatan
Anda hanya dapat menyediakan satu titik akhir di properti notificationEndpoints
pada definisi aplikasi terkelola.
{
"properties": {
"isEnabled": true,
"lockLevel": "ReadOnly",
"displayName": "Sample Application Definition",
"description": "Notification-enabled application definition.",
"notificationPolicy": {
"notificationEndpoints": [
{
"uri": "https://isv.azurewebsites.net:1214?sig=unique_token"
}
]
},
"authorizations": [
{
"principalId": "d6b7fbd3-4d99-43fe-8a7a-f13aef11dc18",
"roleDefinitionId": "8e3af657-a8ff-443c-a75c-2fe8c4bcb635"
},
...
Menambahkan pemberitahuan aplikasi terkelola Marketplace Azure
Untuk informasi selengkapnya, lihat Membuat penawaran aplikasi Azure.
Pemicu kejadian
Tabel berikut menjelaskan semua kemungkinan kombinasi eventType
dan provisioningState
sekaligus pemicunya:
EventType | ProvisioningState | Pemicu untuk pemberitahuan |
---|---|---|
TARUH | Diterima | Grup sumber daya terkelola telah dibuat dan diproyeksikan dengan sukses setelah aplikasi PUT (sebelum penyebaran di dalam grup sumber daya terkelola dimulai). |
TARUH | Berhasil | Penyediaan penuh aplikasi terkelola berhasil setelah PUT. |
TARUH | Gagal | Kegagalan PUT penyediaan instans aplikasi di titik mana saja. |
PATCH | Berhasil | Setelah PATCH berhasil pada instans aplikasi terkelola untuk memperbarui tag, kebijakan akses JIT, atau identitas terkelola. |
DELETE | Menghapus | Segera setelah pengguna memulai DELETE instans aplikasi terkelola. |
DELETE | Dihapus | Setelah penghapusan keseluruhan dan sukses dari aplikasi terkelola. |
DELETE | Gagal | Setelah kesalahan selama proses pencabutan akses yang memblokir penghapusan. |
Skema pemberitahuan
Ketika Anda membuat titik akhir webhook Anda untuk menangani pemberitahuan, Anda harus mengurai payload agar mendapatkan properti penting untuk kemudian bertindak atas pemberitahuan yang diterima. Katalog layanan dan pemberitahuan aplikasi yang dikelola Marketplace Microsoft Azure menyediakan banyak properti yang sama, tetapi ada beberapa perbedaan pada properti tersebut. Properti applicationDefinitionId
hanya berlaku untuk katalog layanan. Properti billingDetails
dan plan
hanya berlaku untuk Marketplace Microsoft Azure.
Azure menambahkan /resource
ke URI titik akhir pemberitahuan yang telah Anda berikan dalam definisi aplikasi terkelola. Titik akhir webhook harus dapat menangani pemberitahuan pada URI /resource
. Sebagai contohnya, jika Anda memberikan URI titik akhir pemberitahuan seperti https://fabrikam.com
, URI titik akhir webhook adalah https://fabrikam.com/resource
.
Skema pemberitahuan aplikasi katalog layanan
Sampel berikut menunjukkan pemberitahuan katalog layanan setelah berhasilnya penyediaan instans aplikasi terkelola.
POST https://{your_endpoint_URI}/resource?{optional_parameter}={optional_parameter_value} HTTP/1.1
{
"eventType": "PUT",
"applicationId": "/subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.Solutions/applications/<applicationName>",
"eventTime": "2019-08-14T19:20:08.1707163Z",
"provisioningState": "Succeeded",
"applicationDefinitionId": "/subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.Solutions/applicationDefinitions/<appDefName>"
}
Jika penyediaan gagal, pemberitahuan dengan detail kesalahan akan dikirim ke titik akhir yang ditentukan.
POST https://{your_endpoint_URI}/resource?{optional_parameter}={optional_parameter_value} HTTP/1.1
{
"eventType": "PUT",
"applicationId": "subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.Solutions/applications/<applicationName>",
"eventTime": "2019-08-14T19:20:08.1707163Z",
"provisioningState": "Failed",
"applicationDefinitionId": "/subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.Solutions/applicationDefinitions/<appDefName>",
"error": {
"code": "ErrorCode",
"message": "error message",
"details": [
{
"code": "DetailedErrorCode",
"message": "error message"
}
]
}
}
Skema pemberitahuan aplikasi Marketplace Azure
Sampel berikut menunjukkan pemberitahuan katalog layanan setelah berhasilnya penyediaan instans aplikasi terkelola.
POST https://{your_endpoint_URI}/resource?{optional_parameter}={optional_parameter_value} HTTP/1.1
{
"eventType": "PUT",
"applicationId": "/subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.Solutions/applications/<applicationName>",
"eventTime": "2019-08-14T19:20:08.1707163Z",
"provisioningState": "Succeeded",
"billingDetails": {
"resourceUsageId": "<resourceUsageId>"
},
"plan": {
"publisher": "publisherId",
"product": "offer",
"name": "skuName",
"version": "1.0.1"
}
}
Jika penyediaan gagal, pemberitahuan dengan detail kesalahan akan dikirim ke titik akhir yang ditentukan.
POST https://{your_endpoint_URI}/resource?{optional_parameter}={optional_parameter_value} HTTP/1.1
{
"eventType": "PUT",
"applicationId": "/subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.Solutions/applications/<applicationName>",
"eventTime": "2019-08-14T19:20:08.1707163Z",
"provisioningState": "Failed",
"billingDetails": {
"resourceUsageId": "<resourceUsageId>"
},
"plan": {
"publisher": "publisherId",
"product": "offer",
"name": "skuName",
"version": "1.0.1"
},
"error": {
"code": "ErrorCode",
"message": "error message",
"details": [
{
"code": "DetailedErrorCode",
"message": "error message"
}
]
}
}
Properti | Deskripsi |
---|---|
eventType |
Jenis peristiwa yang memicu pemberitahuan. (Misalnya, PUT, PATCH, DELETE.) |
applicationId |
Pengidentifikasi sumber daya yang sepenuhnya memenuhi syarat dari aplikasi terkelola yang dipicu oleh pemberitahuan. |
eventTime |
Tanda waktu peristiwa yang memicu pemberitahuan. (Tanggal dan waktu dalam format UTC ISO 8601.) |
provisioningState |
Status penyediaan instans aplikasi terkelola. Contohnya Berhasil, Gagal, Menghapus, Dihapus. |
applicationDefinitionId |
Hanya ditentukan untuk aplikasi terkelola katalog layanan. Mewakili pengidentifikasi sumber daya yang sepenuhnya memenuhi syarat dari definisi aplikasi tempat instans aplikasi terkelola disediakan. |
billingDetails |
Hanya ditentukan untuk aplikasi yang dikelola Marketplace Azure. Detail penagihan instans aplikasi terkelola. Berisi resourceUsageId yang bisa Anda gunakan untuk mengkueri Marketplace Microsoft Azure untuk detail penggunaan. |
plan |
Hanya ditentukan untuk aplikasi yang dikelola Marketplace Azure. Mewakili penerbit, penawaran, SKU, dan versi instans aplikasi terkelola. |
error |
Ditentukan hanya ketika provisioningState gagal. Berisi kode kesalahan, pesan, dan detail masalah yang menyebabkan kegagalan. |
Autentikasi titik akhir
Untuk mengamankan titik akhir webhook dan memastikan keaslian pemberitahuan:
- Sediakan parameter kueri di atas URI webhook, seperti:
https://your-endpoint.com?sig=Guid
. Dengan setiap pemberitahuan, periksa apakah parameter kuerisig
memiliki nilai yang diharapkanGuid
. - Terbitkan GET pada instans aplikasi terkelola dengan menggunakan
applicationId
. Validasi bahwaprovisioningState
cocok denganprovisioningState
pemberitahuan untuk memastikan konsistensi.
Pengambilan pemberitahuan
Layanan pemberitahuan aplikasi terkelola mengharapkan respons 200 OK
dari titik akhir webhook ke pemberitahuan. Layanan pemberitahuan akan mencoba kembali jika titik akhir webhook menampilkan kode galat HTTP yang lebih besar atau sama dengan 500, jika menampilkan kode galat 429, atau jika titik akhir tidak dapat dijangkau untuk sementara waktu. Jika titik akhir webhook tidak tersedia dalam waktu 10 jam, pesan pemberitahuan akan dihilangkan dan upaya untuk mengulang akan berhenti.