Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memanggil A DevOps gen melalui Webhook
Webhook memungkinkan sistem eksternal untuk secara otomatis memicu investigasi AWS DevOps Agen. Ini memungkinkan integrasi dengan sistem tiket, alat pemantauan, dan platform lain yang dapat mengirim permintaan HTTP ketika insiden terjadi.
Prasyarat
Sebelum mengkonfigurasi akses webhook, pastikan Anda memiliki:
Ruang Agen dikonfigurasi di AWS DevOps Agen
Akses ke konsol AWS DevOps Agen
Sistem eksternal yang akan mengirim permintaan webhook
Jenis Webhook
AWS DevOps Agen mendukung jenis webhook berikut:
Integration-specific webhooks — Dibuat secara otomatis saat Anda mengkonfigurasi integrasi pihak ketiga seperti Dynatrace, Splunk, Datadog, New Relic,, atau Slack. ServiceNow Webhook ini dikaitkan dengan integrasi spesifik dan menggunakan metode otentikasi yang ditentukan oleh jenis integrasi
Webhook generik — Dapat dibuat secara manual untuk memicu investigasi dari sumber apa pun yang tidak tercakup oleh integrasi tertentu. Di konsol AWS DevOps Agen, webhook generik dibuat sebagai webhook Agent Space (dicakup ke Ruang Agen). Saat Anda membuat webhook generik, Anda memilih metode otentikasi: HMAC atau kunci API (token pembawa).
Grafana alert webhooks - Grafana dapat mengirim pemberitahuan peringatan langsung ke AWS DevOps Agen melalui titik kontak webhook. Untuk petunjuk penyiapan termasuk template pemberitahuan khusus, lihat Menghubun gkan Grafana.
Metode otentikasi Webhook
Metode otentikasi untuk webhook Anda bergantung pada integrasi mana yang terkait dengannya:
Otentikasi HMAC - Digunakan oleh:
Webhook integrasi Dynatrace
Webhook generik (pilih HMAC saat pembuatan)
Webhook server MCP (pilih HMAC saat pembuatan)
Otentikasi token pembawa - Digunakan oleh:
Webhook integrasi splunk
Webhook integrasi datadog
Webhook integrasi Relic Baru
ServiceNow integrasi webhook
Webhook integrasi Slack
Webhook integrasi Grafana
Webhook generik (pilih kunci API saat pembuatan)
Webhook server MCP (pilih kunci API saat pembuatan)
Memahami otentikasi HMAC
HMAC (Hash-based Message Authentication Code) adalah mekanisme kriptografi yang memverifikasi integritas dan keaslian permintaan webhook. Saat Anda mengirim webhook dengan otentikasi HMAC, Anda menghasilkan tanda tangan dengan men-hash stempel waktu permintaan dan payload bersama-sama menggunakan kunci rahasia Anda dengan algoritma. SHA-256 AWS DevOps Agen secara independen menghitung hash yang sama di sisinya dan membandingkan dua tanda tangan. Jika cocok, permintaan diterima.
Karena stempel waktu disertakan dalam tanda tangan, HMAC juga menyediakan perlindungan pemutaran ulang — AWS DevOps Agen dapat menolak permintaan dengan stempel waktu yang terlalu jauh di masa lalu, mencegah penyerang menangkap dan mengirim ulang permintaan yang valid.
Memilih antara token HMAC dan Bearer
| Pertimbangan | HMAC | Token pembawa |
|---|---|---|
| Kompleksitas pengaturan | Lebih kompleks — klien Anda harus menghitung tanda tangan untuk setiap permintaan menggunakan stempel waktu dan payload | Sederhana - sertakan token statis di Authorization header |
| Integritas muatan | Diverifikasi — setiap modifikasi pada payload setelah penandatanganan membatalkan tanda tangan | Tidak diverifikasi — token mengotentikasi pengirim tetapi tidak melindungi isi muatan |
| Perlindungan putar ulang | Built-in — stempel waktu dalam tanda tangan memungkinkan server untuk menolak permintaan basi | Tidak terpasang — token yang ditangkap dapat digunakan kembali hingga diputar |
| Risiko paparan rahasia | Lebih rendah — rahasia tidak pernah dikirimkan dalam permintaan; hanya tanda tangan yang dihitung yang dikirim | Lebih tinggi - token dikirim di setiap header permintaan, meningkatkan eksposur jika lalu lintas dicegat |
| Kapan harus digunakan | Direkomendasikan ketika Anda membutuhkan jaminan keamanan yang lebih kuat, seperti untuk webhook generik atau lingkungan dengan persyaratan kepatuhan yang ketat | Cocokan ketika kemudahan integrasi menjadi prioritas dan transportasi jaringan Anda dipercaya, seperti untuk integrasi SaaS terkelola melalui HTTPS |
Mengkonfigurasi akses webhook
Langkah 1: Arahkan ke konfigurasi webhook
Masuk ke Konsol AWS Manajemen dan navigasikan ke konsol AWS DevOps Agen
Pilih Ruang Agen Anda
Buka tab Capabilities
Di bagian Webhook, pilih Konfigurasi
Langkah 2: Hasilkan kredenSIAL webhook
Untuk webhook khusus integrasi:
Webhook dibuat secara otomatis ketika Anda menyelesaikan konfigurasi integrasi pihak ketiga. URL titik akhir webhook dan kredenSIAL disediakan di akhir proses penyiapan integrasi.
Untuk webhook generik:
Pilih Buat webhook
Untuk jenis otentikasi Webhook, pilih kunci HMAC atau API:
HMAC — Sistem menghasilkan rahasia penandatanganan webhook. Klien Anda menandatangani setiap permintaan dan mengirimkan tanda tangan di
x-amzn-event-signatureheader (lihat Versi 1 di bawah).Kunci API — Sistem menghasilkan kunci API (token pembawa). Klien Anda mengirimkannya di
Authorization: Bearer <token>header (lihat Versi 2 di bawah).
Simpan rahasia atau kunci API yang dihasilkan dengan aman. Anda tidak akan bisa mengambilnya lagi.
Salin URL titik akhir webhook yang disediakan
Langkah 3: Konfigurasikan sistem eksternal Anda
Gunakan URL titik akhir webhook dan kredenSIAL untuk mengonfigurasi sistem eksternal Anda untuk mengirim permintaan ke AWS DevOps Agen. Langkah-langkah konfigurasi spesifik tergantung pada sistem eksternal Anda.
Mengelola kredentif webhook
KredenSIAL Webhook sensitif. AWS DevOps Agen menunjukkan rahasia webhook satu kali, saat Anda membuat webhook. Itu tidak mengembalikan rahasia lagi melalui konsol, API, atau infrastruktur sebagai kode. URL webhook tetap tersedia. Jika Anda kehilangan rahasia, atau Anda membuat webhook tanpa merekamnya, putar webhook untuk menghasilkan rahasia baru.
Memutar kredenSIAL webhook
Anda dapat memutar kredenSIAL webhook apa pun dari tab Cap abilities. Rotasi menyimpan URL webhook yang sama dan menghasilkan rahasia baru. Rotasi membatalkan rahasia sebelumnya, sehingga pengirim berhenti sampai Anda memperbaruinya dengan rahasia baru. Putar webhook saat Anda kehilangan rahasia, atau ketika Anda ingin mengganti rahasia yang mungkin dikompromikan.
Untuk memutar webhook:
Masuk ke Konsol AWS Manajemen dan buka konsol AWS DevOps Agen.
Pilih Ruang Agen Anda.
Buka tab Cap abilities, lalu temukan webhook:
Untuk webhook integrasi, gunakan tabel Capability Webhooks. Temukan integrasi dengan Identifier, misalnya URL ServiceNow instans Anda atau titik akhir Grafana Anda.
Untuk webhook generik, gunakan bagian Agent Space Webhook.
Buka editor webhook. Untuk webhook integrasi, pilih Edit. Untuk webhook generik, pilih Tindakan , lalu Edit.
Pilih Putar webhook. Konsol menghasilkan rahasia baru dan menyimpan URL webhook yang sama.
Pilih Unduh file.csv untuk menyimpan URL dan rahasia, lalu konfirmasikan bahwa Anda menyimpannya. Anda tidak dapat mengambil rahasia setelah Anda meninggalkan halaman ini.
Perbarui pengirim dengan rahasia baru. Untuk integrasi, perluas Petunjuk Penyiapan Layanan untuk langkah-langkah khusus layanan, atau lihat panduan koneksi untuk integrasi Anda.
Untuk menyalin URL webhook tanpa memutar rahasia, pilih Salin URL.
Webhook dibuat dengan infrastruktur sebagai kode
Saat Anda membuat webhook dengan AWS CloudFormation, AWS CDK, atau Terraform, tumpukan tidak mengembalikan rahasia webhook sebagai output, karena ini adalah nilai sensitif. Setelah penerapan selesai, dapatkan rahasianya dengan memutar webhook, seperti yang dijelaskan di bagian sebelumnya. Kemudian konfigurasikan layanan pihak ketiga Anda dengan URL webhook dan rahasia baru.
Menghapus kredenSIAL webhook
Untuk menghapus webhook generik, buka bagian Webhook Ruang Agen, pilih Tindakan, lalu pilih Hapus. Setelah Anda menghapus webhook, titik akhir tidak lagi menerima permintaan sampai Anda membuat webhook baru.
Menggunakan webhook
Format permintaan Webhook
Untuk memicu penyelidikan, sistem eksternal Anda harus mengirim permintaan HTTP POST ke URL endpoint webhook.
Untuk Versi 1 (otentikasi HMAC):
Header:
Content-Type: application/jsonx-amzn-event-signature: <HMAC signature>x-amzn-event-timestamp: <+%Y-%m-%dT%H:%M:%S.000Z>
Tanda tangan HMAC dihasilkan dengan menandatangani isi permintaan dengan kunci rahasia Anda menggunakan SHA-256.
Untuk Versi 2 (otentikasi token pembawa):
Header:
Content-Type: application/jsonAuthorization: Bearer <your-token>
Badan permintaan:
Badan permintaan harus menyertakan informasi tentang insiden tersebut:
{ "eventType": "incident", "incidentId": "incident-123", "action": "created", "priority": "HIGH", "title": "High CPU usage on production server", "description": "High CPU usage on production server host ABC in AWS account 1234 region us-east-1", "timestamp": "2025-11-23T18:00:00Z", "service": "MyProductionService", "data": { "metadata": { "region": "us-east-1", "environment": "production" } } }
Skema muatan:
{ eventType: 'incident'; incidentId: string; action: 'created' | 'updated' | 'closed' | 'resolved'; priority: "CRITICAL" | "HIGH" | "MEDIUM" | "LOW" | "MINIMAL"; title: string; description?: string; timestamp?: string; service?: string; // The original event generated by service is attached here. data?: object; }
Contoh kode
Versi 1 (otentikasi HMAC) -: JavaScript
const crypto = require('crypto'); // Webhook configuration const webhookUrl = 'https://your-webhook-endpoint.amazonaws.com/invoke'; const webhookSecret = 'your-webhook-secret-key'; // Incident data const incidentData = { eventType: 'incident', incidentId: 'incident-123', action: 'created', priority: "HIGH", title: 'High CPU usage on production server', description: 'High CPU usage on production server host ABC in AWS account 1234 region us-east-1', timestamp: new Date().toISOString(), service: 'MyTestService', data: { metadata: { region: 'us-east-1', environment: 'production' } } }; // Convert data to JSON string const payload = JSON.stringify(incidentData); const timestamp = new Date().toISOString(); const hmac = crypto.createHmac("sha256", webhookSecret); hmac.update(`${timestamp}:${payload}`, "utf8"); const signature = hmac.digest("base64"); // Send the request fetch(webhookUrl, { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-amzn-event-timestamp': timestamp, 'x-amzn-event-signature': signature }, body: payload }) .then(res => { console.log(`Status Code: ${res.status}`); return res.text(); }) .then(data => { console.log('Response:', data); }) .catch(error => { console.error('Error:', error); });
Versi 1 (otentikasi HMAC) - cURL:
#!/bin/bash # Configuration WEBHOOK_URL="https://event-ai.us-east-1.api.aws/webhook/generic/YOUR_WEBHOOK_ID" SECRET="YOUR_WEBHOOK_SECRET" # Create payload TIMESTAMP=$(date -u +%Y-%m-%dT%H:%M:%S.000Z) INCIDENT_ID="test-alert-$(date +%s)" PAYLOAD=$(cat <<EOF { "eventType": "incident", "incidentId": "$INCIDENT_ID", "action": "created", "priority": "HIGH", "title": "Test Alert", "description": "Test alert description", "service": "TestService", "timestamp": "$TIMESTAMP" } EOF ) # Generate HMAC signature SIGNATURE=$(echo -n "${TIMESTAMP}:${PAYLOAD}" | openssl dgst -sha256 -hmac "$SECRET" -binary | base64) # Send webhook curl -X POST "$WEBHOOK_URL" \ -H "Content-Type: application/json" \ -H "x-amzn-event-timestamp: $TIMESTAMP" \ -H "x-amzn-event-signature: $SIGNATURE" \ -d "$PAYLOAD"
Versi 2 (otentikasi token pembawa) -: JavaScript
function sendEventToWebhook(webhookUrl, secret) { const timestamp = new Date().toISOString(); const payload = { eventType: 'incident', incidentId: 'incident-123', action: 'created', priority: "HIGH", title: 'Test Alert', description: 'Test description', timestamp: timestamp, service: 'TestService', data: {} }; fetch(webhookUrl, { method: "POST", headers: { "Content-Type": "application/json", "x-amzn-event-timestamp": timestamp, "Authorization": `Bearer ${secret}`, // Fixed: template literal }, body: JSON.stringify(payload), }); }
Versi 2 (otentikasi token pembawa) - cURL:
#!/bin/bash # Configuration WEBHOOK_URL="https://event-ai.us-east-1.api.aws/webhook/generic/YOUR_WEBHOOK_ID" SECRET="YOUR_WEBHOOK_SECRET" # Create payload TIMESTAMP=$(date -u +%Y-%m-%dT%H:%M:%S.000Z) INCIDENT_ID="test-alert-$(date +%s)" PAYLOAD=$(cat <<EOF { "eventType": "incident", "incidentId": "$INCIDENT_ID", "action": "created", "priority": "HIGH", "title": "Test Alert", "description": "Test alert description", "service": "TestService", "timestamp": "$TIMESTAMP" } EOF ) # Send webhook curl -X POST "$WEBHOOK_URL" \ -H "Content-Type: application/json" \ -H "x-amzn-event-timestamp: $TIMESTAMP" \ -H "Authorization: Bearer $SECRET" \ -d "$PAYLOAD"
Pemecahan masalah webhook
Jika Anda tidak menerima 200
Sebuah 200 dan pesan seperti webhook yang diterima menunjukkan otentikasi dilewati dan pesan telah diantri untuk diverifikasi dan diproses oleh sistem. Jika Anda tidak mendapatkan 200 tetapi 4xx kemungkinan besar ada sesuatu yang salah dengan otentikasi atau header. Coba kirim secara manual menggunakan opsi curl untuk membantu men-debug otentikasi.
Jika Anda menerima 200 tetapi penyelidikan tidak dimulai
Kemungkinan penyebabnya adalah muatan yang salah format.
Periksa stempel waktu dan id insiden diperbarui dan unik. Pesan duplikat dideduplikasi.
Periksa pesan apakah JSON valid
Periksa formatnya benar
Jika Anda menerima 200 dan penyelidikan segera dibatalkan
Kemungkinan besar Anda telah mencapai batas untuk bulan itu. Silakan berbicara dengan AWS kontak Anda untuk meminta perubahan batas tarif jika sesuai.