Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Invocar al DevOps agente a través de Webhook
Los webhooks permiten que los sistemas externos AWS DevOps activen automáticamente las investigaciones de los agentes. Esto permite la integración con sistemas de emisión de tickets, herramientas de monitoreo y otras plataformas que pueden enviar solicitudes HTTP cuando se producen incidentes.
Requisitos previos
Antes de configurar el acceso a los webhooks, asegúrate de tener:
Un espacio de agente configurado en AWS DevOps Agent
Acceso a la consola del AWS DevOps agente
El sistema externo que enviará las solicitudes de webhook
Tipos de webhook
AWS DevOps El agente admite los siguientes tipos de webhooks:
Webhooks específicos para la integración: se generan automáticamente al configurar integraciones de terceros, como Dynatrace, Splunk, Datadog, New Relic o Slack. ServiceNow Estos webhooks están asociados a la integración específica y utilizan métodos de autenticación determinados por el tipo de integración
Webhooks genéricos: se pueden crear manualmente para iniciar investigaciones desde cualquier fuente que no esté incluida en una integración específica. Los webhooks genéricos utilizan actualmente la autenticación HMAC (el token portador no está disponible actualmente).
Webhooks de alertas de Grafana: Grafana puede enviar notificaciones de alerta directamente al AWS DevOps agente a través de los puntos de contacto de webhook. Para obtener instrucciones de configuración que incluyen una plantilla de notificación personalizada, consulte Conectar Grafana.
Métodos de autenticación de Webhook
El método de autenticación de tu webhook depende de la integración a la que esté asociado:
Autenticación HMAC: utilizada por:
Webhooks de integración con Dynatrace
Webhooks genéricos (no vinculados a una integración específica de terceros)
Autenticación mediante token de portador: utilizada por:
Webhooks de integración con Splunk
Webhooks de integración de Datadog
Webhooks de integración de New Relic
ServiceNow webhooks de integración
Webhooks de integración de Slack
Configurar el acceso a los webhooks
Paso 1: Navega hasta la configuración del webhook
Inicie sesión en la consola AWS de administración y navegue hasta la consola del AWS DevOps agente
Seleccione su espacio de agente
Ve a la pestaña Capacidades
En la sección Webhook, haga clic en Configurar
Paso 2: Generar las credenciales del webhook
Para webhooks específicos de la integración:
Los webhooks se generan automáticamente al completar la configuración de una integración de terceros. La URL y las credenciales del punto final del webhook se proporcionan al final del proceso de configuración de la integración.
Para los webhooks genéricos:
Haz clic en Generar webhook
El sistema generará un key pair HMAC
Guarde de forma segura la clave y el secreto generados; no podrá volver a recuperarlos
Copia la URL del punto de conexión del webhook proporcionada
Paso 3: Configura tu sistema externo
Utilice la URL y las credenciales del punto de conexión del webhook para configurar su sistema externo y enviar solicitudes al AWS DevOps agente. Los pasos de configuración específicos dependen del sistema externo.
Administrar las credenciales de webhook
Eliminar credenciales: para eliminar las credenciales del webhook, vaya a la sección de configuración del webhook y haga clic en Eliminar. Tras eliminar las credenciales, el punto final del webhook ya no aceptará solicitudes hasta que generes nuevas credenciales.
Regeneración de credenciales: para generar nuevas credenciales, elimine primero las credenciales existentes y, a continuación, genere un nuevo key pair o token.
Uso del webhook
Formato de solicitud de webhook
Para iniciar una investigación, tu sistema externo debe enviar una solicitud HTTP POST a la URL del punto final del webhook.
Para la versión 1 (autenticación HMAC):
Encabezados:
Content-Type: application/jsonx-amzn-event-signature: <HMAC signature>x-amzn-event-timestamp: <+%Y-%m-%dT%H:%M:%S.000Z>
La firma HMAC se genera al firmar el cuerpo de la solicitud con tu clave secreta mediante el SHA-256.
Para la versión 2 (autenticación con token de portador):
Encabezados:
Content-Type: application/jsonAuthorization: Bearer <your-token>
Cuerpo de la solicitud:
El organismo solicitante debe incluir información sobre el incidente:
json { "title": "Incident title", "severity": "high", "affectedResources": ["resource-id-1", "resource-id-2"], "timestamp": "2025-11-23T18:00:00Z", "description": "Detailed incident description", "data": { "metadata": { "region": "us-east-1", "environment": "production" } } }
Código de ejemplo
Versión 1 (autenticación 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ón 1 (autenticación 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ón 2 (autenticación con token de portador) -: 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ón 2 (autenticación por token de portador) - 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"
Solución de problemas de webhooks
Si no recibes un 200
Un 200 y un mensaje como el webhook recibido indican que la autenticación se ha aprobado y que el mensaje se ha puesto en cola para que el sistema lo verifique y procese. Si no obtienes un 200 sino un 4xx, lo más probable es que haya algún problema con la autenticación o los encabezados. Intenta enviarlo manualmente usando las opciones curl para ayudar a depurar la autenticación.
Si recibes un 200 pero no se inicia una investigación
La causa probable es una carga mal formateada.
Compruebe que tanto la marca de tiempo como el identificador del incidente estén actualizados y sean únicos. Los mensajes duplicados se deduplican.
Comprueba que el mensaje es un JSON válido
Comprueba que el formato es correcto
Si recibes un 200$ y la investigación se cancela inmediatamente
Lo más probable es que hayas alcanzado el límite del mes. Hable con su persona de AWS contacto para solicitar un cambio en el límite de la tarifa, si es necesario.