【要約】New Relic Workflow Automationで変数とデータ受け渡しをマスターする [Qiita_Trend] | Summary by TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
運用エンジニアがインシデント対応の自動化を構築する際、データの受け渡しが複雑化し、管理が困難になる問題に直面する。具体的には以下の課題が挙げられる。
- ・外部からのパラメータ(リージョンやSlackチャンネル等)をどう定義し、受け取るか。
- ・APIレスポンスの深い階層にある特定の値(entityGuid等)をどう抽出するか。
- ・冗長な参照式を多用することで、ワークフローの可読性とメンテナンス性が低下する。
// Approach
本記事は、データの「入力」「抽出」「整理」という3つのメカニズムを用いることで、これらの課題を解決するアプローチを提示している。
- ・
workflowInputsを使用し、YAML形式で外部からの入力値とデータ型を定義する。 - ・
outputsとjq式を組み合わせ、前ステップの実行結果から必要な値を動的に抽出する。 - ・
Assignコンポーネントを活用し、複雑なパスを簡潔な変数名に再定義して再利用する。
// Result
適切なデータ制御手法を習得することで、エンジニアは高度で堅牢な自動化ワークフローを構築できる。具体的な成果は以下の通りである。
- ・NerdGraph等の複雑なJSONレスポンスから、目的のデータを正確に取得できる。
- ・
Assignによる変数化により、ワークフロー全体の可読性が向上する。 - ・条件分岐やループを組み合わせた、より高度なRunbookの自動化が可能になる。
Senior Engineer Insight
> 大規模な自動化運用において、データの「抽出」と「利用」を分離する設計思想が不可欠だ。直接的なパス参照(${{ .steps.xxx.outputs.yyy }})を多用すると、データ構造の変化に弱く、スパゲッティ化を招く。Assignを用いてデータ構造を抽象化し、ロジックとデータ抽出を切り離すべきだ。これにより、メンテナンスコストを抑えた堅牢なワークフローが実現できる。ただし、Advanced CCUの契約が前提となる点は、コスト対効果の観点から留意が必要である。