はじめに
今回はIBM Cloudのサービスの中で、Event NotificationsをSlackと連携し、通知を受けるテストを行ってみました。
まだ一度も触れたことのない初心者目線で記述していますので、初めての方がいたら参考にしていただければと思います。
今回の内容にはIBM Cloudのアカウント(無料利用可能)が前提となっています。
Event Notificationsとは
概要
IBM Cloud® Event Notifications は、 IBM Cloud アカウントで発生する重大なイベントについてユーザーに提供したり、Webhook を使用して自動化アクションをトリガーしたりするルーティング・サービスです。 Monitoringなどの IBM Cloud サービスから、E メール、SMS、Webhook などの通信チャネルにイベント通知をフィルタリングしてルーティングできます。
Event Notificationsの概念
- ソース
- イベント通知を送信したり Event Notifications サービス内のトピックにイベント通知をパブリッシュしたりする IBM Cloud のサービスまたはリソース
- 宛先
- イベント通知の配信ターゲット(Eメール、Webhook、プッシュなどの宛先)
- トピック
- トピックによって対象になる一連の着信イベント通知を保持します。 各ソースは、ユーザー定義フィルター経由でトピックに接続されます。 トピックに渡された通知は、サブスクライブしているすべての宛先にプッシュされます。(複数のソースに接続可能)
- サブスクリプション
- サブスクリプションによって、トピックを宛先に接続します。 サブスクリプションは 1つのトピックを1つの宛先に接続しますが、トピックには複数の宛先が設定できます。 通知がトピックに到達すると、サブスクライブしているすべての宛先にそのトピックから通知が送信されます。
- SDK
- イベント通知でサービスを構成できます。
- サービス資格情報
- アプリまたは外部利用者を IBM Cloud サービスに手動で接続する場合は、資格情報の新しいセットを生成できます。
- プラン
Event Notifications インスタンスの作成方法
IBM Cloudのコンソールに入ってカタログをクリックします。
Event Notificationsを検索し、アクセスします。
ライトプラン選択し、ロケーション、サービス名などを設定します。ここでEndpointなどの設定も可能です。
2024年10月30日時点で、以下のリージョンで利用可能であり、今後徐々に拡大される見込みです。
作成されたEvent Notificationsの画面です。
Slack Webhook設定の流れ
Event NotificationsとSlackを連携するには、SlackのWebhook機能を使います。
(詳しい手順はこちらにも記載されています。)
まず、Slack Help Centerにアクセスし、着信Webhookの設定手順が記載されています。
メッセージを投稿する新しいワークスペースを作成していきます。
「Create a new Slack app」
をクリックすると、Slack API画面に移ります。
「Create New App」
をクリックし、アプリケーション名やSlackのワークスペースを選択します。
その後、「Create App」
をクリックすると作成完了です。
アプリケーションを作成したら、「Incoming Webhook」
ボタンをクリックします。
Incoming Webhooks画面で「Activate Incoming Webhooks」
をoff
からon
に変えます。
すると、変更すると非表示になっていた画面が表示されるので、
下の「Add New Webhook to Work space」
をクリックします。
投稿先のチャンネルを選択する画面が表示されるので、プルダウンし任意のチャンネルを選択し許可
をクリックします。
再度Incoming画面に戻り、Webhook URLが作成されたことが確認できます。
一度テストとして、ターミナルにてメッセージを投げてみます。
「Sample curl request to post to a channel」
のコマンドをコピーしターミナルに打ちます。
curl -X POST -H 'Content-type: application/json' --data '{"text":"Hello, World!"}' https://hooks.slack.com/services/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
ターミナルにOK
表示がされたら成功した意味であり、SlackにもHello World
メッセージが届きました。
これでSlackアプリのWebhookに関する設定は完了です。
IBM Cloudサービスとの連携 - Secrets Managerとの連携
Slackアプリの設定が完了したので、ここからはIBM Cloudのサービスインスタンスと連携し、通知を飛ばしてみます。
Event Notificationsには冒頭で記載したとおり、さまざまなインスタンスと連携することができますが、今回はIBm CloudのSecrets Managerと連携したいと思います。
まず、カタログでSecrets Managerのインスタンスを作成します。Secrets Managerは無料版もありますので試してみましょう。
その次には、管理画面にてアクセス権限を設定する必要があります。IBM Cloudでのアクセス権限の管理はIBM Cloud Identity and Access Management(IAM)を使いますが、IAMは、IBM Cloud内でユーザーおよび管理対象のリソースを一貫して制御するための仕組みです。
管理画面のIAMタブをクリックします。
左メニューの中のアクセス管理
タブをクリックし、右側の作成
ボタンを押すと以下の画面が表示されます。
ここでソース・サービスをSecrets Manager
、ターゲット・サービスをEvent Notifications
に設定し、サービス・アクセス権限はリーダー
とEvent Source Manager
両方チェックします。
これでアクセス権限の付与は完了ですが、詳しい内容はこちらに記載されています。
最初作成したEvent Notificationsのインスタンスにアクセスし、通知が流れる道を設定していきます。
まず、ソース
タブで先ほどアクセス権限を付与したSecrets Manager
が適用・有効化されているか確認を行います。
その次は通知の到着地(宛先)の設定を行います。今回はSlackへの通知を行う前提ですので、Slackの設定を行います。
タイプ
をプルダウンしSlack
を設定し、URLにはSlackのWebhook設定時に取得したWebhook URLをコピペします。
その後追加
ボタンをクリックします。
今度はトピックを設定します。
ソース
でSecrets Managerのインスタンスを選び、作成ボタンをクリックします。
最後にサブスクリプションを設定します。
上で設定したトピック(Secrets Manager)と宛先(Slack)のインスタンスを設定し、添付ファイルの色を設定します。
添付ファイルの色は通知の際にSlackに適用される色ですが、自由に選択可能です。
設定が完了したら作成
ボタンをクリックします。
これでEvent Notificationsの設定が完了し、Secrets ManagerとSlackが連携されましたので、そのテストを行います。
すでに作成したSecrets Managerインスタンスにアクセスし、左メニューの設定
からテスト・イベントの送信
をクリックします。
設定されていたSlackのワークスペースに通知が来たことが確認できます。
また、サブスクリプションで設定した通知色も赤色になっていることも確認できます。
最後に
今回はEvent Notificaionsを使ってSecrets ManagerとSlackを連携し、通知を飛ばす流れについて整理しました。
全く関係性のないサービスをEvent Notificationsを使うことでつながることが非常に興味深く面白い検証でした。
今回のようにSecrets ManagerやSlack以外にも様々なソースと宛先を選択することができるので、ぜひ試してみたらと思います。