magnifying glass leaning against a stack of files of paper

本ブログでは Alerts & AI 機能の destination (宛先) がコンソールでの操作で、削除できない際の確認方法と対処方法をご紹介します。
workflow で利用されている場合は該当の destination をはずせば、削除ができるようになります。workflow で利用されていない場合は channel での利用状況を確認します。channel はコンソールからは表示されないため、NerdGraph API から確認、削除をする必要があります。それぞれの方法についてご紹介します。

Failed to remove destination

Alerts & AI > Destinations にて、対象の destination を ”Delete destination” にて削除しようとした際に「Failed to remove destination」と表示され削除ができないことがあります。
destination は  利用中の場合、コンソールからは直接削除ができません。Workflow または Channel での利用状況を確認し、解除後に削除を行う必要があります。

権限上の問題

destination の削除権限がないユーザ操作の場合があります。Applied intelligence > Destinations または Incident Intelligence > Destinations にて Delete 権限が必要となります。
また最新の権限情報はドキュメントをご確認ください。

 

利用中の場合

workflow での利用状況を確認

Alerts & AI > Workflows にて、workflow で利用されている destination を検索などで見つけます (上手く見つからない場合は、後述の「channel での利用状況を確認」のステップ1-3 での検索をお試しください)。
対象の workflow の編集にて、Notify から対象の destination を含む通知を除外します。利用解除状態であれば destination は削除が可能になりますので、再度 Alerts & AI > Destinations から対象の destination の削除を実施ください。

 

channel での利用状況を確認 (NerdGraph API を利用)

channel はコンソールでは明示的には記載されませんが、workflow と destination を関連づける項目です。例えば、Email タイプの場合は、Email Subject や Custom Details が channel の設定項目となります。
destination は channel と紐付き、channell が workflow と関連づいています。

 

コンソールから操作する場合、Workflow 編集ページで (channel 情報を入力し) destination と workflow を結びつけます。
Notify の通知先から外すと Channel は自動で削除されるため、workflow と destination の関連もなくなります。
コンソールでの操作の場合、channel を意識せずに設定が行われます。

一方、NerdGraph API や terraform など API で Alerts 設定をする場合、channel を作成し、その後に workflow に結びつけるという操作を行います。
順番の都合上、workflow に結びついていない channel を作ることができます。
更新に失敗してしまった場合、動作テストや運用上の都合などで channel を workflow と結びつけるという操作をしなかった場合、野良 channel が残ってしまう場合があります。そして野良 channel に紐づいている destination は コンソールからは削除ができなくなってしまいます。

そのような destination を削除するには NerdGraph API にて、channel を削除する必要があります。

本ブログでは、NerdGraph API および Explorer の機能や概要は、割愛させていただきます。詳細はドキュメントをご確認ください。

野良 channel と結びついている destination を削除するには下記の 5ステップとなります。

  1. 対象の destination Id を取得する
  2. 対象の destination が利用されている channel を検索する
  3. 見つかった channel を利用している workflow が存在しないかを確認する
  4. 見つかった channel を削除
  5. destination を削除

また、NerdGraph API Explorer には、Apps > NerdGraph API Explorer からアクセスします。

1. 対象の Destination Id を取得する

NerdGraph API Explorer から DestinationId を検索することも可能ですが、コンソールから取得する方が簡易です。
Alerts & AI > Destinations にて、対象の destination に対して ”Copy destination id to clipboard” にて取得できます。

または、NerdGraph API Explorer にて Destination を検索して見つけることも可能です。
(方法は後述の channel の検索などを参照ください)

 

2. 対象の Destination が利用されている Channel を検索する

NerdGraph API Explorer には、Apps > NerdGraph API Explorer からアクセスします。
下記のようなクエリにて、アカウントID と先に取得した destination Id をフィルタ条件として、紐ついている channel 一覧を取得します。

参考ドキュメント: NerdGraphチュートリアル:適用されたインテリジェンスチャネル > 宛先IDですべてのチャネルを検索

{
  actor {
    account(id: YOUR_ACCOUNT_ID) {
      aiNotifications {
        channels(filters: { destinationId: "TARGET_DESTINATION_ID" }) {
          entities {
            id
            name
            product
            properties {
              key
              value
            }
            status
            type
          }
        }
      }
    }
  }
}

channel id さえ分かれば十分ですが、誤削除を防ぐためにも必要に応じて、出力項目 (黄点線枠) を追加し、間違いがないかの確認しておきましょう。
対象の destination が複数の channel で利用されている場合は、すべての channel が出力されます。

 

3. 見つかった channel を利用している workflow が存在しないかを確認する

本ステップは、誤削除を防ぐための確認ステップです。必ずしも実施する必要はありません。
先と同様に アカウントID と先に見つかった channel Id をフィルタ条件として、紐ついている workflow 一覧を取得します。

参考ドキュメント: NerdGraphチュートリアル:適用されたインテリジェンスワークフローを作成および管理する > ワークフローの一覧表示とフィルタリング

query searchWorkflow {
  actor {
    account(id: YOUR_ACCOUNT_ID) {
      aiWorkflows {
        workflows(filters: {channelId: “TARGET_CHANNEL_ID”}) {
          entities {
            id
            name
          }
        }
      }
    }
  }
}

利用されていないことの確認なので、結果は対象がないことを期待します。結果があるようであれば workflow にて利用されていることになるので「workflow で利用されている場合」を参考に、コンソールから確認を実施ください。

4. 見つかった Channel を削除

ステップ 2 で見つかった channel が利用されていない野良 channel であることが確認できたので、channel の削除を実施します。失敗した場合に理由がわかるように error 出力にはチェックを入れておきましょう。

参考ドキュメント: NerdGraphチュートリアル:適用されたインテリジェンスチャネル > チャンネルの削除

入力が削除対象の channel id であることを確認し、削除を実行します。

 

mutation {
  aiNotificationsDeleteChannel(
    accountId: YOUR_ACCOUNT_ID
    channelId: "TARGET_CHANNEL_ID"
  ) {
    ids
    error {
      details
    }
  }
}

存在しない channel Id を指定された場合などは、エラーが出力されますが、workflow で利用中の channel Id の場合でも削除されてしまいます。
その場合は workflow では参照先の channel 情報がない Notify として残ってしまいます。削除操作を行う前にステップ3 のように事前確認を行っておくことを推奨します。

コンソールから Notify の削除が可能です

5. Destination を削除

最後に目的であった destination の削除を行います (ステップ4 削除したのは channel なので、destination は削除されていません) 。
コンソール操作にて、再度 Alerts & AI > Destinations から対象の destination の削除を実施ください。


または NerdGraph API Explorer から destination の削除を行うことも可能です。
参考ドキュメント : NerdGraphチュートリアル:適用されたインテリジェンスの目的地 > 宛先を削除する

 

まとめ

本ブログポストでは、Destination が コンソールから削除できない場合の例として、NerdGraph API Explorer を用いた確認方法をご紹介しました。NerdGraph API では、本用途以外にも多くの情報取得や設定変更が可能です。UI 操作で手間となるような操作にも便利ですので、ぜひご活用ください。