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

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

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

問題を作成する

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

プレビュー

この機能はまだ開発中ですが、ぜひお試しください。

この機能は現在、弊社のプレリリース ポリシーに従ってプレビュー プログラムの一部として提供されています。

テンプレートがニーズに合わない場合は、 「Create Your Own」を使用してカスタムワークフローを構築できます。ドラッグ アンド ドロップ インターフェイスを使用して、アクション カタログのアクションをプロセスに一致する自動化に連結します。

このガイドの使い方

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

  • まずコアコンセプトを学ぶコアコンセプトワークフローパターンを読んで基礎を理解し、それを応用する

  • 例に従ってください例のウォークスルーにジャンプして、EC2 自動サイズ変更ワークフローを段階的に構築します

  • 参考パターン→ 独自のワークフローを構築する際のクイックリファレンスとしてワークフローパターンセクションを使用してください

    ヒント

    ワークフローは初めてですか?コアコンセプトから始めて、例に従ってください。EC2 ワークフローは、実際のシナリオにおけるすべての主要パターンを示します。

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

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

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

コアコンセプト

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

コンセプト

何をするのか

入力と秘密

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

${{ :secrets:awsKeyId }} 資格情報の場合は${{ .inputs.region }}、構成の場合は 。

アクション( Play )

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

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

データフロー

ステップ間で出力を渡す

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

スイッチ

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

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

ループ

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

コレクションを反復処理するには、 type: loop forおよびinと一緒に使用します。

範囲

ループ関数の反復回数を定義するための必須フィールド

${{ range(1, 6) }}を使用して5回ループします

待って

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

type: waitseconds: 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. 各セクションの後に実行してエラーを早期に発見し、ワークフローを開始またはスケジュールします。

ヒント

3 つのステップから始めて、徹底的にテストしてから拡張します。機能する 5 ステップのワークフローは、機能しない 20 ステップのワークフローよりも優れています。

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

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

実際のアクションをご覧ください:チームの対応の処理検証およびクリーンアップのセクションでは、Slack の反応と AWS SSM のステータスに基づいてスイッチのルーティングが表示されます。

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

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

キー構文:

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

実際に動作しているところをご覧ください:サイズ変更セクションを実行すると、ステータスの更新にprogressLoopが使用されます。

承認ゲートと待機

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

キー構文:

- 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

実際の手順をご覧ください:リクエスト チーム承認セクションでは、完全な Slack 承認ワークフローが実装されます。

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

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

キー構文:

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

実際に動作を確認してください。すべてのセクションでデータの受け渡しが示され、各ステップは前の結果に基づいて構築されます。

ヒント

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

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

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

ヒント

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

前提条件

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

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

ワークフローの概要

大まかなフロー:

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

この例では、カスタム ワークフローで使用する主要なパターン (API のクエリ、条件分岐、外部統合、ポーリング ループ、エラー処理) を示します。

ワークフロー入力

ヒント

概念を理解するために読んでいる場合は飛ばしてください。この表は、このワークフローで使用される 12 の問題の詳細を示しています。 ビルド時に参照することはできますが、フローを理解するために必須ではありません。

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

入力カテゴリ:

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

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

それでは、ワークフローの各部分を構築してみましょう。各ステップには、追加する特定のアクションと、それらが示すワークフロー パターンが含まれます。

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

アクションを実行する前に、API とデータベースをクエリします。これにより、完全なコンテキストが確保されます。

ワークフローは、次の 3 つのアクションを使用して、集計および EC2 インスタンス情報を収集します。

  • getAlertDetails : NerdGraph API ( New RelicのGraphQL API ) を呼び出して、アクティブ化時刻、条件名、影響を受けるエンティティなどの細分メタデータを取得します。

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

  • impactedEC2Instance : NRDB ( New Relicデータベース) を使用して EC2 インスタンス ID と現在のタイプを見つけます。

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

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

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

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

ワークフローは詳細を Slack に送信し、応答を待ちます。

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

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

  • 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

    ヒント

    よくある問題:チャンネル名ではなく、Slack チャンネルID ( C01234ABCD ) を使用してください。Slack のチャンネル詳細で見つけてください。詳細についてはトラブルシューティングを参照してください。

チームの対応を処理する

スイッチを使用して、データ値またはユーザー入力に基づいて異なるパスを作成します。

ワークフローは反応に基づいて分岐します。

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

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

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

    ヒント

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

サイズ変更を実行する

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

ワークフローは、AWS Systems Manager (SSM) を通じてインスタンスのサイズを変更します。

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

  • generateIdempotencyToken : 一意の UUID を作成します。ワークフローが 2 回実行された場合に、重複したサイズ変更を防止します。

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

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

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

    重要

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

    ヒント

    一般的な問題: AWS 認証情報にec2:StopInstancesec2:ModifyInstanceAttributeec2:StartInstances 、およびssm:*権限があることを確認します。権限が不足している場合は、何も表示されずに失敗します。

検証とクリーンアップ

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

ワークフローは結果をチェックし、一時リソースを削除します。

  • hasCompleted (スイッチ) : SSM ステータス (成功/失敗/タイムアウト) に応じて分岐します。

  • displaySuccess : New Relicに成功をログします。

  • sendSuccessMessage : Slack で完了を確認します。

  • displayError : トラブルシューティングのエラー詳細をログに記録します。

  • displayUnexpected : 異常な状態 (手動キャンセルなど) をログに記録します。

  • cleanupSsmDocument : 一時 SSM ドキュメントを削除します。

  • sendSSMCleanMessage : Slack でクリーンアップを確認します。

  • workflowCompleted : 最終完了メッセージ (成功またはキャンセルの場合に実行されます)。

    ヒント

    • 常に掃除をしてください。前のステップが失敗した場合でもクリーンアップが実行されるようにワークフローを構成します。これにより、リソースの漏洩や予期しない AWS 料金の発生を防ぐことができます。
    • 一般的な問題: SSM がタイムアウトしても、EC2 インスタンスは依然として状態間で遷移している可能性があります。 再実行する前に、 AWS Console実際のインスタンスのステータスを確認してください。

次のステップ

実行と管理

改善する

規模

Copyright © 2025 New Relic株式会社。

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