avance
Todavía estamos trabajando en esta característica, ¡pero nos encantaría que la probaras!
Esta característica se proporciona actualmente como parte de un programa de vista previa de conformidad con nuestras políticas de prelanzamiento.
Cuando las plantillas no se ajustan a tus necesidades, Crea la tuya propia te permite crear un flujo de trabajo personalizado. Emplee la interfaz de arrastrar y soltar para encadenar acciones del catálogo de acciones en una automatización que se ajuste a su proceso.
Cómo usar esta guía
Esta guía te muestra cómo construir un flujo de trabajo empleando conceptos y un ejemplo completo. Elige tu ruta de aprendizaje:
Primero aprende los conceptos básicos → Lee los conceptos básicos y los patrones de flujo de trabajo para comprender los fundamentos y luego aplícalos.
Siga el ejemplo → Vaya al tutorial del ejemplo para crear paso a paso un flujo de trabajo de redimensionamiento automático de EC2
Patrones de referencia → Emplee la sección de patrones de flujo de trabajo como referencia rápida al crear su propio flujo de trabajo.
Sugerencia
¿Eres nuevo en el flujo de trabajo? Empieza por los conceptos básicos y luego sigue el ejemplo. El flujo de trabajo de EC2 demuestra todos los patrones clave en un escenario del mundo real.
¿Por qué crear un flujo de trabajo personalizado?
Crea tu propio flujo de trabajo para:
- Implemente una lógica de negocio única que las plantillas no admitan.
- Integrar múltiples sistemas más allá de las plantillas estándar
- Gestionar decisiones complejas con ramificación condicional
- Adapta el proceso de aprobación y notificación a las necesidades de tu equipo.
Conceptos básicos
Comprenda estos fundamentos antes de construir:
Concepto | Qué hace | Ejemplo |
|---|---|---|
Entradas y secretos | parámetro para credenciales y configuración |
|
Catálogo de acciones | Integración prediseñada (AWS, Slack, base de datos, API) | Arrastra |
Flujo de datos | Pasar las salidas entre pasos |
|
Interruptores | Crea diferentes rutas en función de las condiciones |
|
Bucles | Procesar listas o encuestar para su finalización | Emplee |
Puertas de aprobación | Pausa para las decisiones humanas | Reacciones lentas antes de operaciones destructivas |
Manejo de errores | Detectar fallos y ejecutar la limpieza | Patrones try-catch con procedimientos de reversión |
Sugerencia
Aprende haciendo: Cada concepto se demuestra en el ejemplo práctico que aparece a continuación. Verás entradas, interruptores, bucles y puertas de aprobación funcionando conjuntamente en un flujo de trabajo real.
Para conocer patrones detallados de manejo de errores, consulte mejores prácticas.
Inicio rápido
Crea tu primer flujo de trabajo en cinco pasos:
- Navegue a one.newrelic.com > All Capabilities > Workflow Automation y seleccione Create Your Own
- Defina el parámetro para las credenciales (del administrador de secretos:
${{ :secrets:keyName }}), configuración (regiones, tipo de instancia) y datos de tiempo de ejecución (ID de cuenta, ID de alerta) - Arrastra acciones del catálogo y conéctalas con la sintaxis
${{ .steps.stepName.outputs.field }}para pasar datos. - Inserte interruptores para bifurcación condicional, bucles para procesar listas o realizar sondeos, y puertas de aprobación para decisiones humanas.
- Correr el programa luego de cada sección para detectar errores a tiempo y, a continuación, inicia o programa tu flujo de trabajo.
Sugerencia
Empieza con 3 pasos, realiza pruebas exhaustivas y luego amplía. Un flujo de trabajo de 5 pasos que funciona correctamente supera un flujo de trabajo de 20 pasos que no funciona.
Patrones clave del flujo de trabajo
Cuatro patrones esenciales permiten gestionar la mayoría de los escenarios de automatización. Cada patrón se muestra en el ejemplo a continuación.
Ramificación condicional con interruptores
Emplee interruptores cuando: Los resultados varíen en función de los datos (comprobaciones de umbral, respuestas de la API, decisiones del usuario).
Sintaxis clave:
- name: hasCompleted type: switch switch: - condition: "${{ .steps.waitForCompletion.outputs.automationExecutionStatus == 'Failed' }}" next: displayError - condition: "${{ .steps.waitForCompletion.outputs.automationExecutionStatus == 'Success' }}" next: displaySuccess next: displayUnexpected # Default path when no condition matchesVéalo en acción: las secciones "Gestionar la respuesta del equipo" y "Verificar y limpiar" muestran el enrutamiento de los conmutadores en función de las reacciones de Slack y el estado de AWS SSM.
Bucles para procesar listas
Emplee bucles cuando: procese varios elementos o repita acciones.
Sintaxis clave:
# Send progress updates using range loop- name: progressLoop type: loop for: in: "${{ [range(1; 5)] }}" # Loop 5 times steps: - name: wait type: wait seconds: 10 - name: progressMessage type: action action: slack.chat.postMessage version: 1 inputs: channel: "${{ .workflowInputs.channel }}" text: "Resizing in progress..."Véalo en acción: Ejecute la sección de redimensionamiento que emplea progressLoop para las actualizaciones de estado.
Puertas de aprobación y espera
Emplee puntos de aprobación cuando: se requiera criterio humano antes de operaciones destructivas o se necesite la aprobación de cumplimiento.
Sintaxis clave:
- name: requestApproval type: action action: slack.chat.postMessage version: 1 inputs: channel: "#approvals" text: "Approve? React with :thumbsup: or :thumbsdown:"
- name: getReactions type: action action: slack.chat.getReactions version: 1 inputs: token: "${{ .workflowInputs.slackToken }}" channelID: "${{ .steps.requestApproval.outputs.channelID }}" threadTs: "${{ .steps.requestApproval.outputs.threadTs }}" timeout: 300 # Wait 5 minutes for reaction
- name: checkApproval type: switch switch: - condition: '${{ .steps.getReactions.outputs.reactions | any(.name == "+1") }}' next: handleApproval - condition: '${{ .steps.getReactions.outputs.reactions | any(.name == "-1") }}' next: handleRejectionPara retrasos simples:
- name: waitBeforeRetry type: wait seconds: 60 # Wait 60 seconds before continuingVéalo en acción: La sección de solicitud de aprobación del equipo implementa el flujo de trabajo completo de aprobación de Slack.
Pasar datos entre pasos
Emplee el paso de datos cuando: La salida de un paso se convierte en la entrada de otro (la base de todo flujo de trabajo).
Sintaxis clave:
# Reference previous step outputsawsRegion: "${{ .inputs.region }}"instanceId: "${{ .steps.getAlert.outputs.data.entity.instanceId }}"Véalo en acción: Todas las secciones demuestran la transferencia de datos; cada paso se basa en los resultados anteriores.
Sugerencia
¿Quieres ejemplos de patrones completos? Consulte ejemplos de flujo de trabajo para conocer patrones adicionales que incluyen manejo de errores, reintentos e integración compleja.
Ejemplo práctico: Redimensionamiento automático de EC2 con aprobación
Este ejemplo completo muestra cómo crear un flujo de trabajo que redimensione automáticamente las instancias EC2 cuando se produzcan picos de uso de CPU, tras obtener la aprobación del equipo a través de Slack. Muestra la recopilación de datos, la lógica condicional, la integración externa y el manejo de errores en un escenario del mundo real.
Sugerencia
¿Eres nuevo en el flujo de trabajo? Este ejemplo emplea AWS, Slack y lógica de aprobación. Si estás empezando, prueba primero a enviar el reporte a Slack.
Requisitos previos
Antes de crear este flujo de trabajo, cerciorar de tener lo siguiente:
- AWS: Credenciales con licencias de EC2 y Systems Manager
- Slack: token de bot y canal de notificación
- New Relic: condición de alerta monitoreo CPU EC2
- Gestor de secretos: Configurado (ver gestión de secretos)
Descripción general del flujo de trabajo
Flujo de alto nivel:
- Recopilar datos: Obtener detalles de alertas e instancias de New Relic
- Aplicar aprobación: Enviar mensaje por Slack, esperar respuesta del equipo
- Ejecutar cambio de tamaño: Emplee AWS Systems Manager para cambiar el tamaño de las instancias EC2.
- Verificar y limpiar: Comprobar los resultados, notificar al equipo, eliminar los recursos temporales.
Este ejemplo muestra patrones clave que empleará en un flujo de trabajo personalizado: consultas a API, ramificación condicional, integración externa, bucles de sondeo y manejo de errores.
Entradas del flujo de trabajo
Sugerencia
Si solo lees para comprender los conceptos, puedes saltarte esta parte. Esta tabla detalla los 12 parámetros que emplea este flujo de trabajo. Puedes consultarlo al construir, pero no es esencial para comprender el flujo.
Este flujo de trabajo requiere credenciales, configuración y contexto de tiempo de ejecución como entradas. Los valores confidenciales provienen del administrador de secretos empleando la sintaxis ${{ :secrets:keyName }}.
Categorías de entrada:
- Autenticación: credenciales de AWS y Slack del administrador de secretos
- Contexto de la alerta: ID de cuenta e ID de incidencia de New Relic
- Configuración: Región, tipo de instancia, zona horaria, canal Slack
Crea el flujo de trabajo paso a paso
Ahora vamos a construir cada parte del flujo de trabajo. Cada paso incluye las acciones específicas que se deben agregar y los patrones de flujo de trabajo que demuestran.
Recopilar contexto de alerta
Consulta las API y la base de datos antes de tomar medidas. Esto garantiza que tengas el contexto completo.
El flujo de trabajo recopila información de alertas e instancias EC2 mediante tres acciones:
getAlertDetails: Llama a API de NerdGraph ( API GraphQL de New Relic) para obtener los metadatos de la alerta: hora de activación, nombre de la condición y entidad afectada.activatedDateTime: Convierte la timestamp a un formato legible como "01-24-2025 14:30" para los mensajes de Slack.impactedEC2Instance: consulta NRDB (New Relic base de datos) para encontrar el ID de instancias EC2 y el tipo actual.
Por qué esto es importante: Sin estos detalles, no se pueden crear mensajes de Slack significativos ni dirigir a las instancias EC2 correctas.
Aplicar aprobación del equipo
Conectar a herramientas de colaboración como Slack, PagerDuty o ServiceNow para puntos de decisión humana.
El flujo de trabajo envía los detalles a Slack y espera una respuesta:
IssueDetected: Publica detalles de alerta, tipo de instancia actual y cambio de tamaño propuesto en Slack. Aplicar al equipo que reaccione con:+1:(aprobar) o:-1:(cancelar).GetUserReaction: Hace una pausa de 5 minutos (300 segundos) esperando una reacción.checkQuery(Interruptor): Rutas basadas en la reacción::+1:→ Comienza a redimensionar:-1:→ Detener flujo de trabajoOtro → símbolo para reacción válida, bucle de retorno

Sugerencia
Problema común: emplee el ID del canal de Slack (
C01234ABCD), no el nombre del canal. Lo encontrarás en los detalles del canal de Slack. Ver resolución de problemas para más.
Gestionar la respuesta del equipo
Emplee interruptores para crear diferentes rutas en función de los valores de los datos o la entrada del usuario.
Las ramificaciones del flujo de trabajo se basan en la reacción:
unexpectedReaction: Explica las reacciones válidas y vuelve a esperar.gotCancelReaction: Confirma la cancelación, pasa a la finalización. Sin cambios en la infraestructura.gotYesReaction: Confirma la aprobación, procede a cambiar el tamaño.Sugerencia
Patrón de puertas de aprobación: Emplee interruptores como este cuando necesite criterio humano antes de realizar cambios arriesgados. Este patrón funciona con reacciones de Slack, confirmaciones de PagerDuty, respuestas por email o webhooks personalizados.
Ejecutar el cambio de tamaño
Emplee un token único para evitar operaciones duplicadas. Emplee bucles para comprobar el estado de las operaciones de larga duración.
El flujo de trabajo redimensiona la instancia a través de AWS Systems Manager (SSM):
createSsmDocument: Crea un documento de automatización de SSM que detiene la instancia, modifica el tipo y la resetear.generateIdempotencyToken: Crea un UUID único. Evita cambios de tamaño duplicados si el flujo de trabajo se ejecuta dos veces.startResizing: Ejecuta el documento SSM con ID de la instancia y nuevo tipo.progressLoop(Bucle): Publica actualizaciones de Slack cada 10 segundos (5 veces en total).waitForCompletion: Consulta el estado de SSM con un tiempo de espera de 2 minutos.Importante
¿Por qué SSM? Systems Manager proporciona manejo de errores, verificación de estado y logs de auditoría de CloudTrail. Mejor que una llamada directa a API de EC2.
Sugerencia
Problema común: Cerciorar de que las credenciales de AWS tengan licencias
ec2:StopInstances,ec2:ModifyInstanceAttribute,ec2:StartInstancesyssm:*. Las licencias faltantes provocan un fallo silencioso.
Verificar y limpiar
Planee para los fracasos y gestione los recursos temporales independientemente del resultado.
El flujo de trabajo comprueba los resultados y elimina los recursos temporales:
hasCompleted(Interruptor): Se ramifica según el estado de SSM (éxito/fallo/tiempo de espera agotado).displaySuccess: Registra el éxito en New Relic.sendSuccessMessage: Confirma la finalización en Slack.displayError: Registra los detalles del error para la resolución de problemas.displayUnexpected: Registra estados inusuales (cancelación manual, etc.).cleanupSsmDocument: Elimina el documento SSM temporal.sendSSMCleanMessage: Confirma la limpieza en Slack.workflowCompleted: Mensaje de finalización final (se ejecuta en caso de éxito o cancelación).Sugerencia
- Siempre limpia. Estructura el flujo de trabajo para que la limpieza se ejecute incluso cuando fallen los pasos anteriores. Esto evita fugas de recursos y cargos inesperados de AWS.
- Problema común: Si SSM agota el tiempo de espera, las instancias EC2 aún pueden estar en transición entre estados. Consulte AWS Console para verificar el estado real de la instancia antes de volver a ejecutarla.
Próximos pasos
Ejecutar y gestionar
- Iniciar y programar el flujo de trabajo: Activar manualmente o programar automáticamente.
- Gestionar el flujo de trabajo: editar, versionar, clonar o desactivar el flujo de trabajo.
Mejorar
- mejores prácticas: Manejo de errores, gestión de secretos, rendimiento, testing.
- Catálogo de acciones: AWS, Azure, GCP, HTTP, transformaciones de datos.
- Ejemplos de flujo de trabajo: más escenarios de automatización del mundo real.
Escala
- flujo de trabajo API de automatización: desplegar vía API para infraestructura como código.
- Límites del flujo de trabajo: Tiempos de espera, límites de acciones, restricciones de carga útil.