• /
  • EnglishEspañolFrançais日本語한국어Português
  • ログイン今すぐ開始

この機械翻訳は、参考として提供されています。

英語版と翻訳版に矛盾がある場合は、英語版が優先されます。詳細については、このページを参照してください。

問題を作成する

独自のワークフローを作成する

テンプレートがニーズを満たさない場合は、カスタム ワークフローを最初から構築します。独自のビルダーを作成して、アクション カタログからアクションをドラッグ アンド ドロップし、プロセスに一致する自動化にドロップします。

このガイドの使い方

このガイドでは、概念と完全な例を使用してワークフローを構築する方法を説明します。学習パスを選択してください:

カスタムワークフローを構築する理由は何ですか?

独自のワークフローを構築して、次のことを実現します。

  • テンプレートがサポートしていない独自のビジネスロジックを実装する
  • 標準テンプレートを超えて複数のシステムを統合
  • 条件分岐で複雑な決定を処理する
  • チームの承認と通知のプロセスに合わせる

コアコンセプト

構築する前に、次の基本事項を理解してください。

コンセプト

目的

入力と秘密

認証情報と設定に関する問題

アクション

事前構築された統合 ( AWS 、Slack、データベース、API)

データフロー

ステップ間で出力を渡す

割り当てる

後続のステップで使用するために変数を初期化して値を割り当てる

スイッチ

条件に応じて異なるパスを作成する

ループ

リストを処理するか完了をポーリングする

範囲

繰り返し回数を定義するためにループ関数に必要な問題

待って

指定された期間または条件が満たされるまでワークフローの実行を一時停止します

停止

ワークフロー実行を終了する

ヒント

実践で学ぶ:各概念は、サンプルのウォークスルーで説明されています。実際のワークフローで、入力、スイッチ、ループ、承認ゲートが連携して動作する様子を確認できます。

構文例

ワークフローを構築するときは、次のパターンを使用します。

パターン

構文

用途

秘密を取得する

${{ :secrets:awsKeyId }}

シークレット マネージャーからのアクセス資格情報

参照ワークフロー入力

${{ .inputs.region }}

ワークフロー開始時に提供される設定を使用する

前のステップの出力を使用する

${{ .steps.getAlert.outputs.entityGuid }}

ワークフローステップ間でデータを渡す

カタログからのドラッグアクション

aws.ec2.stopInstancesワークフローキャンバスにドラッグします

事前構築されたインテグレーションをワークフローに追加

変数を作成する

type: assigninputs:

計算値または中間値を保存する

状態を確認する

condition: "${{ ... }}" スイッチ内

CPU > 90% vs. 70-90% vs. によるルート < 70%

アイテムをループする

type: loop forinを使用してコレクションを反復処理します

リストを処理するか完了をポーリングする

反復回数を定義する

range(1, 6) 5回ループする

ループ関数に必要な問題

実行を一時停止

type: wait seconds: 60で60秒遅延

指定された期間ワークフローを一時停止します

ワークフローの終了

ワークフロー実行を終了する

検証失敗またはキャンセル後にワークフローを終了します

エラー処理パターンの詳細については、 「ベストプラクティス」を参照してください。

重要

セキュリティとプライバシーのベストプラクティス、およびデータ削除を含む制限事項については、セキュリティ ベストプラクティスを参照してください。

クイックスタート

最初のワークフローを 5 つのステップで構築します。

  1. one.newrelic.com > All Capabilities > Workflow Automationに移動し、Create Your Own [独自の作成を]選択します
  2. 資格情報 (シークレットマネージャーから: ${{ :secrets:keyName }})、設定 (リージョン、インスタンスタイプ)、およびランタイムデータ (アカウント ID、集計 ID) の定義
  3. カタログからアクションをドラッグし、 ${{ .steps.stepName.outputs.field }}構文で接続してデータを渡します
  4. 条件分岐用のスイッチ、リストやポーリングの処理用のループ、人間の決定のための承認ゲートを挿入します。
  5. 各セクションの後に実行してエラーを早期に発見し、ワークフローを開始またはスケジュールします。

主要なワークフローパターン

4 つの基本パターンで、ほとんどの自動化シナリオに対応します。各パターンについては、以下の例のウォークスルーで説明します。

スイッチを使った条件分岐

次の場合にスイッチを使用します:結果はデータに基づいて変化します (閾値チェック、 API応答、ユーザーの決定)

キー構文:

- 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 matches

例:チームの対応検証、クリーンアップ

リストを処理するためのループ

ループを使用するのは、複数のアイテムを処理する場合やアクションを繰り返す場合です。

ループ構造、パラメーター、高度な使用法 (break/continue を含む) の詳細については、 「ループ構造」を参照してください。

キー構文:

# 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..."

例:サイズ変更を実行する

承認ゲートと待機

承認ゲートを使用するのは、破壊的な操作やコンプライアンスの承認が必要になる前に人間の判断が必要な場合です。

キー構文:

- 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: handleRejection

単純な遅延の場合:

- name: waitBeforeRetry
type: wait
seconds: 60 # Wait 60 seconds before continuing

例:チームの承認をリクエストする

ステップ間でのデータの受け渡し

データ受け渡しは次の場合に使用します: 1 つのステップの出力が別のステップの入力になる場合 (すべてのワークフローの基礎)

キー構文:

# Reference previous step outputs
awsRegion: "${{ .inputs.region }}"
instanceId: "${{ .steps.getAlert.outputs.data.entity.instanceId }}"

例:すべてのワークフローステップ

assignによる変数の代入

割り当てステップ タイプを使用すると、後続のワークフロー ステップで使用できる変数を初期化して値を割り当てることができます。このステップでは、文字列、整数、ブール値、マップ (オブジェクト)、リスト (配列) など、複数のデータ型がサポートされます。

基本構造:

- name: <step_name>
type: assign
inputs:
<variable_name>: <value_or_expression>

例:

- 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 }}

ヒント

完全なパターン例が必要ですか?エラー処理、再試行、複雑な統合などの追加のパターンについては、ワークフローの例を参照してください。

ウォークスルーの例: 承認による EC2 の自動サイズ変更

この例では、Slack 経由でチームの承認を得た後、CPU が急増したときに EC2 インスタンスのサイズを変更するワークフローを構築します。 データ収集、条件付きロジック、外部統合、およびエラー処理を示します。

ヒント

ワークフローは初めてですか?この例では、AWS、Slack、承認ロジックを使用します。始めたばかりの場合は、まずSlack にレポートを送信してみてください。

ワークフローの概要

大まかなフロー:

  1. データを収集する: New Relicから集計とインスタンスの詳細を取得します
  2. 承認リクエスト: Slack メッセージを送信し、チームの応答を待ちます
  3. サイズ変更の実行: AWS Systems Manager を使用して EC2 インスタンスのサイズを変更します
  4. 検証とクリーンアップ: 結果を確認し、チームに通知し、一時的なリソースを削除します

前提条件

このワークフローを構築する前に、次のものを用意してください。

  • AWS : EC2 および Systems Manager の権限を持つ認証情報
  • Slack : 通知用のボットトークンとチャンネル
  • New Relic : アラート条件監視 EC2 CPU
  • シークレット マネージャー: 構成済み。 シークレット マネージャーを参照してください。

ワークフローを段階的に構築する

ワークフローの各部分を構築します。各ステップには特定のアクションが含まれており、ワークフロー パターンを示します。

まとまったコンテキストを収集する

アクションを実行する前に、API とデータベースをクエリして完全なコンテキストを収集します。

3 つのアクションにより、集計および EC2 インスタンス情報が収集されます。

  • getAlertDetails : NerdGraph APIを呼び出して、積算メタデータ (アクティブ化時間、条件名、影響を受けるエンティティ) を取得します。

  • activatedDateTime : Slack メッセージのタイムスタンプを読み取り可能な形式 (例: 01-24-2025 14:30) に変換します。

  • impactedEC2Instance : EC2 インスタンス ID と現在のタイプを見つけるための NRDB 。

    Workflow diagram showing three steps: getAlertDetails queries NerdGraph API, activatedDateTime converts timestamp, and impactedEC2Instance retrieves instance details from NRDB

    これが重要な理由:これらの詳細がなければ、意味のある Slack メッセージを作成したり、適切な EC2 インスタンスをターゲットにしたりすることはできません。

チームの承認をリクエスト

人間の意思決定ポイントのためのコラボレーション ツールに接続します。

詳細を Slack に送信し、応答を待ちます。

  • IssueDetected : 積算詳細、現在のインスタンスタイプ、および提案されたサイズ変更を投稿します。 チームに:+1: (承認) または:-1: (キャンセル) で反応するよう求めます。

  • GetUserReaction : 反応を待つために 5 分間一時停止します。

  • checkQuery (スイッチ) : 反応に基づいたルート:

    • :+1: → サイズ変更を開始
    • :-1: → ワークフローを停止
    • その他→ 有効な反応のプロンプト、ループバック
    Workflow diagram showing user approval process: IssueDetected posts Slack message, GetUserReaction waits for response, checkQuery evaluates reactions with three conditions for approval, cancellation, or unexpected responses

チームの対応を処理する

データ値またはユーザー入力に基づいてさまざまなパスを作成します。

反応に基づいて分岐します。

  • unexpectedReaction : 有効な反応を説明し、再度待機するためにループします。

  • gotCancelReaction : キャンセルを確認し、完了までスキップします。インフラストラクチャの変更はありません。

  • gotYesReaction : 承認を確認し、サイズ変更に進みます。

    ヒント

    承認ゲート パターン:リスクのある変更の前に人間の判断が必要な場合は、このようなスイッチを使用します。このパターンは、Slack の反応、PagerDuty の確認、電子メールの応答、またはカスタム Webhook で機能します。

サイズ変更を実行する

一意のトークンを使用して重複した操作を防止します。ループを使用して長時間実行される操作を確認します。

AWS Systems Manager (SSM) を使用してインスタンスのサイズを変更します。

  • createSsmDocument : インスタンスを停止し、タイプを変更して再起動する SSM 自動化ドキュメントを作成します。

  • generateIdempotencyToken : 重複したサイズ変更を防ぐために一意の UUID を作成します。

  • startResizing : インスタンス ID と新しいタイプで SSM ドキュメントを実行します。

  • progressLoop (ループ) : Slack の更新を 10 秒ごとに (5 回) 投稿します。

  • waitForCompletion : 2 分間のタイムアウトで SSM ステータスをポーリングします。

    重要

    SSM を使用する理由Systems Manager は、エラー処理、状態検証、CloudTrail 監査ログを提供します。直接 EC2 APIコールよりも優れています。

検証とクリーンアップ

結果に関係なく、一時的なリソースをクリーンアップします。

結果を確認し、一時リソースを削除します。

  • hasCompleted (スイッチ) : SSM ステータス (成功/失敗/タイムアウト) に応じて分岐します。
  • displaySuccess : New Relicに成功をログします。
  • sendSuccessMessage : Slack で完了を確認します。
  • displayError : トラブルシューティングのエラー詳細をログに記録します。
  • displayUnexpected : 異常な状態 (手動キャンセルなど) をログに記録します。
  • cleanupSsmDocument : 一時 SSM ドキュメントを削除します。
  • sendSSMCleanMessage : Slack でクリーンアップを確認します。
  • workflowCompleted : 最終完了メッセージ (成功またはキャンセルの場合に実行されます)。

完全な論点リファレンス

このワークフローには、入力として資格情報、設定、およびランタイム コンテキストが必要です。 機密値は、 ${{ :secrets:keyName }}構文を使用して シークレット マネージャーから取得されます。

入力カテゴリ:

  • 認証: AWS および Slack の認証情報
  • まとめコンテキスト: New Relicからのアカウント ID と問題 ID
  • 設定: リージョン、インスタンスタイプ、タイムゾーン、Slackチャンネル

問題の名前

タイプ

デフォルト値

説明

awsAccessKeyId

${{ :secrets:awsAccessKeyId }}

AWSサービスで認証するためのAWSアクセスキーID。

awsSecretAccessKey

${{ :secrets:awsSecretAccessKey }}

AWS シークレットアクセスキー。アクセスキーIDとペアになります。

awsSessionToken

${{ :secrets:awsSessionToken }}

一時的な AWS 認証情報のセッショントークン (オプション、IAM ロールで使用)。

slackToken

${{ :secrets:slackToken }}

Slack でメッセージを投稿したり反応を読んだりするためのボット トークン。

accountId

Int

必須

New Relic アカウント ID。集計詳細およびエンティティ データのクエリに使用されます。

issueId

必須

このワークフローをトリガーしたNew Relic集計の課題 ID。 ワークフローが累計から実行されるときに自動的に提供されます。

awsRegion

us-east-2

EC2 インスタンスが実行されるAWSリージョン (例: us-east-1us-west-2eu-west-1 )。

InstanceType

t4g.nano

目標 EC2 サイズ変更用インスタンスタイプ。 パフォーマンスのニーズと予算に基づいて選択してください。

timestampUnit

MILLISECONDS

積算タイムスタンプの時間単位。 通常はMILLISECONDSまたはSECONDSです。

timezoneId

America/Los_Angeles

Slack メッセージで一括アクティベーション時間を表示するためのタイムゾーン (例: America/New_YorkEurope/LondonAsia/Tokyo )。

pattern

MM-dd-yyyy HH:mm

タイムスタンプを表示するための日付/時刻形式パターン。Java SimpleDateFormat パターンを使用します。

channel

必須

通知が投稿される Slack チャンネル ID (名前ではありません)。Slack のチャンネル詳細でこれを見つけてください。

次のステップ

この例を完了したら、次のリソースを調べてください。

AWS認証情報を設定する

EC2およびその他のAWSアクションのIAMロールを設定する

アクションカタログ

ワークフローで利用可能なすべてのアクションを調べる

ワークフローの例

HTTP API、Slack 統合などの例をご覧ください。

ベストプラクティス

エラー処理、再試行ロジック、セキュリティ パターンを学ぶ

ワークフローエンティティの概要

ワークフローを手動で、アラートから、またはスケジュールに基づいてトリガーします

ワークフローを管理する

ワークフローの実行を編集、複製、監視する

トラブルシューティング

カスタムワークフローの一般的な問題と解決策

Copyright © 2026 New Relic株式会社。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.