Créez des workflows personnalisés à partir de zéro lorsque les modèles ne répondent pas à vos besoins. Utilisez le générateur créez le vôtre pour glisser-déposer des actions du catalogue d'actions dans une automatisation qui correspond à votre processus.
Comment utiliser ce guide
Ce guide vous montre comment construire un workflow à l'aide de concepts et d'un exemple complet. Choisissez votre parcours d'apprentissage :
- Apprenez d'abord les concepts fondamentaux: Lisez Concepts fondamentaux et modèles de workflow pour comprendre les bases, puis appliquez-les
- Suivez l'exemple: Accédez à Procédure pas à pas de l'exemple pour créer un workflow de redimensionnement automatique EC2 étape par étape
- Modèles de référence: Utilisez la section modèles de workflow comme référence rapide lors de la création de vos propres workflows
Pourquoi créer un workflow personnalisé ?
Créez votre propre workflow pour :
- Implémenter une logique métier unique que les modèles ne prennent pas en charge
- Intégrez plusieurs systèmes au-delà des modèles standards
- Gérer les décisions complexes grâce à la branchement conditionnel
- Alignez vos processus d'approbation et de notification avec ceux de votre équipe.
Concepts de base
Comprenez ces principes fondamentaux avant de construire :
Concept | But |
|---|---|
Paramètres d'identification et de configuration | |
Intégration pré-construite (AWS, Slack, base de données, API) | |
Transmettez les sorties entre les étapes | |
Initialiser et affecter des valeurs aux variables à utiliser dans les étapes suivantes | |
Créez différents chemins en fonction des conditions | |
Listes de processus ou sondage pour l'achèvement | |
Gamme | Paramètre requis pour les fonctions de boucle afin de définir le nombre d'itérations |
Suspend l'exécution workflow pendant une durée spécifiée ou jusqu'à ce qu'une condition soit remplie. | |
Arrêt | Interrompre l'exécution workflow |
Conseil
Apprendre par la pratique : Chaque concept est illustré dans l'exemple de procédure pas à pas. Vous verrez des entrées, des commutateurs, des boucles et des portes d'approbation fonctionner ensemble dans un workflow réel.
Exemples de syntaxe
Utilisez ces modèles lors de la création de workflows :
Modèle | Syntaxe | Quand l'utiliser |
|---|---|---|
Récupérer le secret |
| Accéder aux identifiants depuis le gestionnaire de secrets |
Référencer une entrée de workflow |
| Utiliser la configuration fournie au démarrage du workflow |
Utiliser la sortie de l'étape précédente |
| Transmettre des données entre les étapes du workflow |
Faire glisser une action depuis le catalogue | Faites glisser | Ajouter des intégrations préconfigurées au workflow |
Créer une variable |
| Stocker les valeurs calculées ou intermédiaires |
Condition de vérification |
| Itinéraire par |
Boucler sur les éléments |
| Listes de processus ou sondage pour l'achèvement |
Définir le nombre d'itérations |
| Paramètre requis pour les fonctions de boucle |
Suspendre l'exécution |
| Met en pause le workflow pendant une durée spécifiée |
Terminer le workflow | Interrompre l'exécution workflow | workflow est interrompu en cas d'échec de validation ou d'annulation. |
Pour des modèles détaillés de gestion des erreurs, consultez les Bonnes pratiques.
Important
Pour les bonnes pratiques et limitations en matière de sécurité et de confidentialité, y compris la suppression des données, consultez les bonnes pratiques de sécurité.
Démarrage rapide
Créez votre premier workflow en cinq étapes :
- Accédez à one.newrelic.com > All Capabilities > Workflow Automation et sélectionnez Create Your Own
- Définir les paramètres pour les identifiants (depuis le gestionnaire de secrets:
${{ :secrets:keyName }}), la configuration (régions, types d'instance) et les données d'exécution (ID de compte, ID d'alerte) - Faites glisser des actions depuis le catalogue, connectez-les avec la syntaxe
${{ .steps.stepName.outputs.field }}pour transmettre des données - Insérez des commutateurs pour le branchement conditionnel, des boucles pour le traitement de listes ou l'interrogation, des portes d'approbation pour les décisions humaines
- Exécutez après chaque section pour détecter les erreurs rapidement, puis démarrez ou planifiez votre workflow
Modèles workflow clés
Quatre modèles essentiels couvrent la plupart des scénarios d'automatisation. Chaque modèle est illustré dans l'exemple détaillé ci-dessous.
Branchement conditionnel avec commutateurs
Utilisez des commutateurs lorsque : les résultats varient en fonction des données (vérifications de seuil, réponses d’API, décisions de l’utilisateur).
Syntaxe clé :
- 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 matchesExemple : Gérer la réponse de l'équipe, Vérifier et nettoyer
Boucles pour le traitement des listes
Utilisez les boucles lorsque vous traitez plusieurs éléments ou répétez des actions.
Pour des informations détaillées sur la structure des boucles, les paramètres et l'utilisation avancée (y compris break/continue), consultez Structure de la boucle.
Syntaxe clé :
# 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..."Exemple : Exécuter le redimensionnement
Portails d'approbation et attente
Utilisez les portes d'approbation lorsque : Un jugement humain est nécessaire avant les opérations destructrices ou une validation de conformité est requise
Syntaxe clé :
- 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: handleRejectionPour les retards simples :
- name: waitBeforeRetry type: wait seconds: 60 # Wait 60 seconds before continuingExemple : Demander l'approbation de l'équipe
Transmission de données entre les étapes
Utilisez le passage de données lorsque : la sortie d'une étape devient l'entrée d'une autre (la base de tout workflow).
Syntaxe clé :
# Reference previous step outputs awsRegion: "${{ .inputs.region }}" instanceId: "${{ .steps.getAlert.outputs.data.entity.instanceId }}"Exemple : Toutes les étapes du workflow
Affectation de variables avec assign
Le type d'étape d'affectation vous permet d'initialiser et d'affecter des valeurs à des variables qui peuvent être utilisées dans les étapes de workflow suivantes. Cette étape prend en charge plusieurs types de données, notamment les chaînes, les entiers, les booléens, les cartes (objets) et les listes (tableaux).
Structure de base :
- name: <step_name> type: assign inputs: <variable_name>: <value_or_expression>Exemple:
- 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 }}Conseil
Vous voulez des exemples de modèles complets ? Consultez Exemples de workflows pour des modèles supplémentaires, notamment la gestion des erreurs, les nouvelles tentatives et les intégrations complexes.
Exemple de procédure pas à pas : redimensionnement automatique des instances EC2 avec approbation
Cet exemple crée un workflow qui redimensionne les instances EC2 en cas de pic d'utilisation du CPU, après avoir obtenu l'approbation de l'équipe via Slack. Il démontre la collecte de données, la logique conditionnelle, les intégrations externes et la gestion des erreurs.
Conseil
Vous débutez dans le monde du workflow ? Cet exemple utilise AWS, Slack et une logique d'approbation. Si vous débutez, essayez d'abord d'envoyer le rapport sur Slack.
aperçu du flux de travail
Flux de haut niveau :
- Collecte de données: Récupérer les détails de l'alerte et de l'instance auprès de New Relic
- Demande d'approbation: Envoyer un message Slack, attendre la réponse de l'équipe
- Exécuter le redimensionnement: Utilisez AWS Systems Manager pour redimensionner instanceEC2.
- Vérification et nettoyage: Vérifier les résultats, informer l'équipe, supprimer les ressources temporaires
Prérequis
Avant de mettre en place ce workflow, assurez-vous d'avoir :
- AWS: Identifiants avec autorisations EC2 et système Manager
- Slack: Bot Jeton et canal de notification
- New Relic: état d'alerte monitoring du processeur EC2
- Gestionnaire de secrets: Configuré, voir gestionnaire de secrets
Élaborez le workflow étape par étape
Construisez chaque partie du workflow. Chaque étape comprend des actions spécifiques et illustre des modèles de workflow.
Recueillir le contexte de l'alerte
Interrogez les API et les bases de données pour recueillir le contexte complet avant d'agir.
Trois actions collectent des informations sur les alertes et les instances EC2 :
getAlertDetails: Appelle l'API NerdGraph pour récupérer les métadonnées d'alerte — heure d'activation, nom de la condition et entités affectées.activatedDateTime: Convertit l'horodatage en un format lisible (par ex. 01-24-2025 14:30) pour les messages Slack.impactedEC2Instance: Interroge NRDB pour trouver l'ID d'instance EC2 et le type actuel.
Pourquoi c'est important : sans ces détails, vous ne pouvez pas construire de messages Slack significatifs ni cibler la bonne instanceEC2.
Demander l'approbation de l'équipe
Connectez-vous aux outils de collaboration pour les points de décision humaine.
Envoyer les détails sur Slack et attendre une réponse :
IssueDetected: Publie les détails de l'alerte, le type d'instance actuel et le redimensionnement proposé. Demande à l'équipe de réagir avec:+1:(approuver) ou:-1:(annuler).GetUserReaction: Pause de 5 minutes en attendant une réaction.checkQuery(Interrupteur): Routes basées sur la réaction ::+1:→ Commencer le redimensionnement:-1:→ Arrêter workflow- Autre → invite à une réaction valide, retour en arrière

Gérer la réponse de l'équipe
Créez différents chemins en fonction des valeurs de données ou de la saisie utilisateur.
Branche basée sur la réaction :
unexpectedReaction: Explique les réactions valides et revient en arrière pour attendre à nouveau.gotCancelReaction: Confirme l'annulation, passe à la fin. Aucun changement d'infrastructure.gotYesReaction: Confirme l'approbation, procède au redimensionnement.Conseil
Modèle de contrôle d'approbation : Utilisez ce type de mécanisme lorsque vous avez besoin d'un jugement humain avant d'entreprendre des changements risqués. Ce modèle fonctionne avec les réactions Slack, les accusés de réception PagerDuty, les réponses par e-mail ou les webhooks personnalisés.
Exécutez le redimensionnement
Évitez les opérations en double avec des jetons uniques. Vérifiez les opérations de longue durée avec des boucles.
Redimensionnez l'instance via AWS Systems Manager (SSM) :
createSsmDocument: Crée un document d'automatisation SSM qui arrête l'instance, en modifie le type et la redémarre.generateIdempotencyToken: Génère un UUID unique pour éviter les redimensionnements en double.startResizing: Exécute le document SSM avec l'ID d'instance et le nouveau type.progressLoop(Boucle): Publie des mises à jour Slack toutes les 10 secondes (5 fois).waitForCompletion: Interroge l'état du SSM avec un délai d'expiration de 2 minutes.Important
Pourquoi SSM ? Système Manager assure la gestion des erreurs, la vérification de l’état et les logs d’audit CloudTrail. Mieux qu'un appel d'API EC2 direct.
Vérifier et nettoyer
Nettoyez les ressources temporaires quel que soit le résultat.
Vérifiez les résultats et supprimez les ressources temporaires :
hasCompleted(Switch): Branches sur l'état SSM (succès/échec/délai d'attente dépassé).displaySuccess: enregistrer le succès dans New Relic.sendSuccessMessage: Confirme la fin de la tâche dans Slack.displayError: enregiste les détails de l'erreur pour le dépannage.displayUnexpected: consigner les états inhabituels (annulation manuelle, etc.).cleanupSsmDocument: Supprime le document SSM temporaire.sendSSMCleanMessage: Confirme le nettoyage dans Slack.workflowCompleted: Message de fin de série (exécute pour réussir ou annuler).
Référence complète des paramètres
Ce workflow nécessite des identifiants, une configuration et un contexte d'exécution en entrée. Les valeurs sensibles proviennent du gestionnaire de secrets en utilisant la syntaxe ${{ :secrets:keyName }}.
Catégories d'entrée :
- Authentification: identifiants AWS et Slack
- Contexte de l'alerte: ID du compte et ID du problème provenant de New Relic
- Configuration: Région, type d'instance, fuseau horaire, canal Slack
Nom du paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
| Chaîne |
| ID de clé d'accès AWS pour s'authentifier auprès des services AWS. |
| Chaîne |
| Clé d'accès secrète AWS. S'associe à l'ID de clé d'accès. |
| Chaîne |
| Jeton de session pour les informations d'identification AWS temporaires (facultatif, utilisé avec les rôles IAM). |
| Chaîne |
| Bot Jeton permettant de publier des messages et de lire les réactions sur Slack. |
| Int | Requis | Votre identifiant de compte New Relic. Utilisé pour interroger les détails des alertes et les données des entités. |
| Chaîne | Requis | L'identifiant du problème de l'alerte New Relic qui a déclenché ce workflow. Fourni automatiquement lorsque le workflow s'exécute à partir d'une alerte. |
| Chaîne |
| région AWS dans laquelle votre instanceEC2 s'exécute (par exemple, |
| Chaîne |
| instance cible EC2 de type d'instance à redimensionner. Choisissez en fonction de vos besoins en matière de performance et de votre budget. |
| Chaîne |
| Unité de temps pour l'horodatage de l'alerte. Généralement |
| Chaîne |
| Fuseau horaire pour l'affichage de l'heure d'activation de l'alerte dans les messages Slack (par exemple, |
| Chaîne |
| Modèle de format de date/heure pour l'affichage de l'horodatage. Utilise les modèles SimpleDateFormat de Java. |
| Chaîne | Requis | Identifiant (et non nom) du canal Slack où les notifications sont publiées. Vous trouverez cela dans les détails du canal Slack. |
Prochaines étapes
Après avoir terminé cet exemple, consultez ces ressources :
Configurer les identifiants AWS
Configurer les rôles IAM pour EC2 et d'autres actions AWS
Catalogue des actions
Explorer toutes les actions disponibles pour les workflows
Exemples de workflow
Voir des exemples d'API HTTP, d'intégrations Slack et plus encore
Meilleures pratiques
Découvrir la gestion des erreurs, la logique de nouvelle tentative et les modèles de sécurité
Vue d'ensemble de l'entité de workflow
Déclenchez votre workflow manuellement, à partir d'alertes ou selon un planning
Gérer les workflows
Modifier, dupliquer et monitorer l'exécution du workflow
Dépannage
Problèmes courants et solutions pour les workflows personnalisés