As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Invocando o DevOps Agente por meio do Webhook
Os webhooks permitem que sistemas externos acionem automaticamente as investigações do AWS DevOps agente. Isso permite a integração com sistemas de emissão de bilhetes, ferramentas de monitoramento e outras plataformas que podem enviar solicitações HTTP quando ocorrem incidentes.
Pré-requisitos
Antes de configurar o acesso ao webhook, verifique se você tem:
Um Espaço do Agente configurado no AWS DevOps Agente
Acesso ao console do AWS DevOps agente
O sistema externo que enviará solicitações de webhook
Tipos de webhook
AWS DevOps O Agent oferece suporte aos seguintes tipos de webhooks:
Webhooks específicos de integração — gerados automaticamente quando você configura integrações de terceiros, como Dynatrace, Splunk, Datadog, New Relic ou Slack. ServiceNow Esses webhooks estão associados à integração específica e usam métodos de autenticação determinados pelo tipo de integração.
Webhooks genéricos — Podem ser criados manualmente para acionar investigações de qualquer fonte não coberta por uma integração específica. Atualmente, os webhooks genéricos usam autenticação HMAC (o token do portador não está disponível no momento).
Webhooks de alerta do Grafana — O Grafana pode enviar notificações de alerta diretamente AWS DevOps ao Agente por meio de pontos de contato do webhook. Para obter instruções de configuração, incluindo um modelo de notificação personalizado, consulte Conectando o Grafana.
Métodos de autenticação de webhook
O método de autenticação do seu webhook depende da integração à qual ele está associado:
Autenticação HMAC — Usada por:
Webhooks de integração com o Dynatrace
Webhooks genéricos (não vinculados a uma integração específica de terceiros)
Autenticação de token do portador — usada por:
Webhooks de integração com o Splunk
Webhooks de integração com Datadog
Webhooks de integração com a New Relic
ServiceNow webhooks de integração
Webhooks de integração com o Slack
Configurando o acesso ao webhook
Etapa 1: Navegue até a configuração do webhook
Faça login no console AWS de gerenciamento e navegue até o console do AWS DevOps agente
Selecione seu espaço de agente
Vá para a guia Capacidades
Na seção Webhook, clique em Configurar
Etapa 2: gerar credenciais de webhook
Para webhooks específicos de integração:
Os webhooks são gerados automaticamente quando você conclui a configuração de uma integração de terceiros. O URL e as credenciais do endpoint do webhook são fornecidos no final do processo de configuração da integração.
Para webhooks genéricos:
Clique em Gerar webhook
O sistema gerará um par de chaves HMAC
Armazene com segurança a chave e o segredo gerados — você não poderá recuperá-los novamente
Copie o URL do endpoint do webhook fornecido
Etapa 3: configurar seu sistema externo
Use o URL e as credenciais do endpoint do webhook para configurar seu sistema externo para enviar solicitações ao Agente. AWS DevOps As etapas específicas de configuração dependem do seu sistema externo.
Gerenciando credenciais de webhook
Removendo credenciais — Para excluir as credenciais do webhook, acesse a seção de configuração do webhook e clique em Remover. Depois de remover as credenciais, o endpoint do webhook não aceitará mais solicitações até que você gere novas credenciais.
Regeneração de credenciais — Para gerar novas credenciais, primeiro remova as existentes e, em seguida, gere um novo token ou par de chaves.
Usando o webhook
Formato de solicitação de webhook
Para acionar uma investigação, seu sistema externo deve enviar uma solicitação HTTP POST para a URL do endpoint do webhook.
Para a versão 1 (autenticação HMAC):
Cabeçalhos:
Content-Type: application/jsonx-amzn-event-signature: <HMAC signature>x-amzn-event-timestamp: <+%Y-%m-%dT%H:%M:%S.000Z>
A assinatura HMAC é gerada assinando o corpo da solicitação com sua chave secreta usando SHA-256.
Para a versão 2 (autenticação de token do portador):
Cabeçalhos:
Content-Type: application/jsonAuthorization: Bearer <your-token>
Corpo da solicitação:
O corpo da solicitação deve incluir informações sobre o 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 exemplo
Versão 1 (autenticação 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); });
Versão 1 (autenticação 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"
Versão 2 (autenticação do token do 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), }); }
Versão 2 (autenticação do token do 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"
Solução de problemas com webhooks
Se você não receber um 200
Um 200 e uma mensagem como webhook recebida indicam que a autenticação foi aprovada e a mensagem foi colocada na fila para o sistema verificar e processar. Se você não obtiver um 200, mas um 4xx, provavelmente há algo errado com a autenticação ou os cabeçalhos. Tente enviar manualmente usando as opções de curl para ajudar a depurar a autenticação.
Se você receber um 200, mas a investigação não começar
A causa provável é uma carga com formato incorreto.
Verifique se o carimbo de data/hora e o ID do incidente estão atualizados e exclusivos. As mensagens duplicadas são desduplicadas.
Verifique se a mensagem é um JSON válido
Verifique se o formato está correto
Se você receber uma nota de 200 e a investigação for imediatamente cancelada
Provavelmente você atingiu o limite do mês. Fale com seu AWS contato para solicitar uma alteração do limite de tarifa, se apropriado.