Cree flujos de trabajo personalizados desde cero cuando las plantillas no satisfagan sus necesidades. Utilice el generador crear su propio para arrastrar y soltar acciones del catálogo de acciones en una automatización que se adapte 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:
- Aprenda primero los conceptos básicos: Lea Conceptos básicos y patrones de flujo de trabajo para comprender los fundamentos, luego aplíquelos
- Siga el ejemplo: Vaya al tutorial de ejemplo para crear un flujo de trabajo de cambio de tamaño automático de EC2 paso a paso
- Patrones de referencia: Utilice la sección de patrones de flujo de trabajo como referencia rápida al crear sus propios flujos de trabajo
¿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 | Objetivo |
|---|---|
parámetro para credenciales y configuración | |
Integración prediseñada (AWS, Slack, base de datos, API) | |
Pasar las salidas entre pasos | |
Inicializar y asignar valores a variables para su uso en pasos posteriores | |
Crea diferentes rutas en función de las condiciones | |
Procesar listas o encuestar para su finalización | |
Rango | Parámetros necesarios para que las funciones de bucle definan el recuento de iteraciones |
Pausa la ejecución del flujo de trabajo durante un tiempo determinado o hasta que se cumpla una condición. | |
Detener | Finalizar la ejecución del flujo de trabajo |
Sugerencia
Aprender haciendo: Cada concepto se demuestra en el recorrido de ejemplo. Verá entradas, conmutadores, bucles y compuertas de aprobación funcionando juntos en un flujo de trabajo real.
Ejemplos de sintaxis
Use estos patrones al crear flujos de trabajo:
Patrón | Sintaxis | Cuándo usar |
|---|---|---|
Recuperar secreto |
| Acceder a las credenciales desde el administrador de secretos |
Referenciar entrada de flujo de trabajo |
| Usar la configuración proporcionada al iniciar el flujo de trabajo |
Usar la salida del paso anterior |
| Pasar datos entre pasos del flujo de trabajo |
Arrastrar acción del catálogo | Arrastra | Agregar integraciones predefinidas al flujo de trabajo |
Crear variable |
| Almacenar valores calculados o intermedios |
Comprobar condición |
| Ruta por |
Iterar sobre los elementos |
| Procesar listas o encuestar para su finalización |
Definir recuento de iteraciones |
| Parámetro requerido para funciones de bucle |
Pausar ejecución |
| Pausa el flujo de trabajo durante la duración especificada |
Finalizar flujo de trabajo | Finalizar la ejecución del flujo de trabajo | Finaliza el flujo de trabajo tras fallos de validación o cancelaciones. |
Para obtener patrones detallados de manejo de errores, consulte Mejores prácticas.
Importante
Para consultar las mejores prácticas y limitaciones de seguridad y privacidad, incluida la eliminación de datos, consulte mejores prácticas de seguridad.
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 parámetros para credenciales (del administrador de secretos:
${{ :secrets:keyName }}), configuración (regiones, tipos de instancia) y datos de tiempo de ejecución (ID de cuenta, ID de alerta) - Arrastre acciones desde el catálogo, conéctelas con la sintaxis
${{ .steps.stepName.outputs.field }}para pasar datos - Inserte conmutadores para ramificación condicional, bucles para procesar listas o sondeos, puertas de aprobación para decisiones humanas
- Ejecuta después de cada sección para detectar errores a tiempo, luego inicia o programa tu flujo de trabajo
Patrones clave del flujo de trabajo
Cuatro patrones esenciales manejan la mayoría de los escenarios de automatización. Cada patrón se demuestra en el recorrido de 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 matchesEjemplo: Gestionar la respuesta del equipo, Verificar y limpiar
Bucles para procesar listas
Emplee bucles cuando: procese varios elementos o repita acciones.
Para obtener información detallada sobre la estructura de bucles, los parámetros y el uso avanzado (incluidos break/continue), consulte Estructura de bucles.
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..."Ejemplo: Ejecutar el cambio de tamaño
Puertas de aprobación y espera
Emplee puertas de aprobación cuando: Se necesita el juicio humano antes de realizar operaciones destructivas o se requiere 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 continuingEjemplo: Solicitar aprobación del equipo
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 outputs awsRegion: "${{ .inputs.region }}" instanceId: "${{ .steps.getAlert.outputs.data.entity.instanceId }}"Ejemplo: Todos los pasos del flujo de trabajo
Asignación de variables con asignar
El tipo de paso de asignación le permite inicializar y asignar valores a variables que se pueden usar en los pasos posteriores del flujo de trabajo. Este paso admite múltiples tipos de datos, incluidos cadenas, enteros, booleanos, mapas (objetos) y listas (matrices).
Estructura básica:
- name: <step_name> type: assign inputs: <variable_name>: <value_or_expression>Ejemplo:
- name: variableInitialization type: assign inputs: stringVar: "${{ .workflowInputs.initialValue }}" intVar: "${{ .workflowInputs.anotherValue }}" concatenationVar: "${{ .workflowInputs.initialValue }} - concatenated" booleanVar: true mapVar: key1: "value1" key2: "${{ .workflowInputs.initialValue }}" listVar: - "listItem1" - "${{ .workflowInputs.initialValue }}" - "${{ .workflowInputs.anotherValue }}" statusCode: ${{ .steps.runAction.outputs.statusCode }}Sugerencia
¿Quiere ejemplos completos de patrones? Consulte los ejemplos de flujos de trabajo para obtener patrones adicionales, incluyendo el manejo de errores, reintentos e integraciones complejas.
Ejemplo práctico: Redimensionamiento automático de EC2 con aprobación
Este ejemplo crea un flujo de trabajo que redimensiona instancias EC2 cuando hay picos de CPU, después de obtener la aprobación del equipo a través de Slack. Demuestra la recopilación de datos, la lógica condicional, las integraciones externas y el manejo de errores.
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.
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.
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, consulte gestor de secretos
Crea el flujo de trabajo paso a paso
Construya cada parte del flujo de trabajo. Cada paso incluye acciones específicas y demuestra patrones de flujo de trabajo.
Recopilar contexto de alerta
Consulte las API y las bases de datos para recopilar el contexto completo antes de tomar medidas.
Tres acciones recopilan información de alertas e instancias EC2:
getAlertDetails: Llama a la API de NerdGraph para obtener metadatos de alertas: hora de activación, nombre de la condición y entidades afectadas.activatedDateTime: Convierte la marca de tiempo a un formato legible (p. ej., 01-24-2025 14:30) para mensajes de Slack.impactedEC2Instance: Consulta NRDB para encontrar el ID de instancia 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
Conéctese a herramientas de colaboración para puntos de decisión humana.
Enviar detalles a Slack y esperar respuesta:
IssueDetected: Publica los detalles de la alerta, el tipo de instancia actual y el redimensionamiento propuesto. Solicita al equipo que reaccione con:+1:(aprobar) o:-1:(cancelar).GetUserReaction: Pausa durante 5 minutos esperando una reacción.checkQuery(Interruptor): Rutas basadas en la reacción::+1:→ Comienza a redimensionar:-1:→ Detener flujo de trabajo- Otro → símbolo para reacción válida, bucle de retorno

Gestionar la respuesta del equipo
Cree diferentes rutas según los valores de datos o la entrada del usuario.
Ramificar según 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
Evite operaciones duplicadas con tokens únicos. Verifique las operaciones de larga duración con bucles.
Redimensione 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 reinicia.generateIdempotencyToken: Crea un UUID único para evitar redimensionamientos duplicados.startResizing: Ejecuta el documento SSM con el ID de instancia y el nuevo tipo.progressLoop(Bucle): Publica actualizaciones de Slack cada 10 segundos (5 veces).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.
Verificar y limpiar
Limpie los recursos temporales independientemente del resultado.
Verifique los resultados y elimine 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).
Referencia completa de parámetros
Este flujo de trabajo requiere credenciales, configuración y contexto de tiempo de ejecución como entradas. Los valores sensibles provienen del administrador de secretos usando la sintaxis ${{ :secrets:keyName }}.
Categorías de entrada:
- Autenticación: credenciales de AWS y Slack
- 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
Nombre del parámetro | Tipo | Valor por defecto | Descripción |
|---|---|---|---|
| Cadena |
| ID de clave de acceso de AWS para autenticarse con los servicios de AWS. |
| Cadena |
| Clave de acceso secreta de AWS. Se empareja con el ID de clave de acceso. |
| Cadena |
| token de sesión para credenciales temporales AWS (opcional, se usa con roles de IAM). |
| Cadena |
| token del bot para publicar mensajes y leer reacciones en Slack. |
| En t | Requerido | Tu ID de cuenta de New Relic. Se emplea para consultar detalles de alertas y datos de entidades. |
| Cadena | Requerido | El ID del problema de la alerta de New Relic que desencadenó este flujo de trabajo. Se proporciona automáticamente cuando se ejecuta el flujo de trabajo a partir de una alerta. |
| Cadena |
| Región AWS donde se ejecutan sus instancias EC2 (por ejemplo, |
| Cadena |
| objetivo EC2 tipo de instancia para cambiar el tamaño. Elige en función de tus necesidades de rendimiento y cotización. |
| Cadena |
| Unidad de tiempo para la timestamp de la alerta. Normalmente |
| Cadena |
| Zona horaria para mostrar la hora de activación de la alerta en los mensajes de Slack (por ejemplo, |
| Cadena |
| Formato de fecha y hora para mostrar la marca de tiempo. Emplea patrones SimpleDateFormat de Java. |
| Cadena | Requerido | ID del canal de Slack (no el nombre) donde se publican las notificaciones. Puedes encontrarlo en los detalles del canal de Slack. |
Próximos pasos
Después de completar este ejemplo, explore estos recursos:
Configurar las credenciales de AWS
Configurar roles de IAM para EC2 y otras acciones de AWS
Catálogo de acciones
Explorar todas las acciones disponibles para flujos de trabajo
Ejemplos de flujo de trabajo
Vea ejemplos de APIs HTTP, integraciones de Slack y más
Mejores practicas
Aprenda manejo de errores, lógica de reintento y patrones de seguridad
Descripción general de la entidad de flujo de trabajo
Active su flujo de trabajo manualmente, desde alertas o según una programación
Administrar flujos de trabajo
Editar, duplicar y monitorear la ejecución del flujo de trabajo
Resolución de problemas
Problemas comunes y soluciones para flujos de trabajo personalizados