Teamsのワークフローアプリを使ってAWSリソースの通知をしてみよう!

2025年03月25日 火曜日


【この記事を書いた人】
たっきー

クラウド本部 クラウドソリューション部に所属(2024年入社) 主に社内向けのクラウド記事を書いてます。でかい鯉を見るのが好き。

「Teamsのワークフローアプリを使ってAWSリソースの通知をしてみよう!」のイメージ

TeamsのIncomming Webhook、廃止されたってよ

2025年01月31日にTeamsのIncoming Webhookが廃止されました。
AWSリソースの通知をするのによく使用していたので悲しいです…。

ただ、ずっとは悲しんではいられません。
代替方法がないか、その謎を解明すべく、我々はMicrosoftのHPを漁った……

Teams のワークフローアプリを使おう

代替方法は簡単に見つかりました。

以下のURLの内容を見ると、Teams のワークフローアプリがオススメされています。
Microsoft Teams 内の Office 365 コネクタの廃止

というわけで、今回はTeams のワークフローアプリを使用して、AWSリソースの通知を行ってみたいと思います。

構成について

構成は以下の通り、Amazon EventBridgeから呼び出したAWS Lambdaで、Teams のワークフローアプリのURLを叩くような形にしたいと思います。

Lambdaのソースコード

今回作成したLambdaは、動作しているEC2のIDをTeamsにリクエストするようにしてみました。
ワークフローのURLに関しては、ワークフローを作成した後に埋め込みます。

import boto3
import json
import requests

def lambda_handler(event, context):
    ec2 = boto3.client('ec2')
    
    # runningのEC2を取得
    running_instances = ec2.describe_instances(Filters=[{'Name': 'instance-state-name','Values': ['running']}])
    for reservation in running_instances['Reservations']:
        indtance_dict = {'InstanceId': reservation['Instances'][0]['InstanceId']}
        webhook_request = json.dumps({"type":"message","text": indtance_dict}, ensure_ascii=False).encode('utf8')
        webhook_url = "<ワークフローのURL>"
        requests.post(webhook_url, headers={"Content-Type": "application/json"}, data=webhook_request)

ワークフローの作成

それでは、ワークフローの作成をしていきましょう。
ワークフローの画面を開いて、「Webhook要求を受信するとチャネルに投稿する」を選択します。

ワークフローの名前、通知を行うチャネルを指定し、ワークフローを作成します。
このとき発行されるURLは、先ほど作成したLambdaの方に埋め込みます。

ワークフローの編集画面を開くと、初期値に「Send each adaptive card」が入っていると思います。
こちらを「チャットまたはチャネルでメッセージを投稿する」に変更します。

投稿内容を埋めていきます。
メッセージにはtriggerBodyを使用することで、リクエストの情報を拾うことが可能です。

<p>以下のインスタンスが起動しています。</p>
@{triggerBody()?['text']['InstanceId']}

これにて設定は完了です。Lambdaのテスト実行を行ってみましょう。

インスタンスIDを含めてちゃんと投稿されていますね。

え!メンションも出来るの!

実は、特定のユーザーにメンションされるように設定することが可能です。
方法は簡単で、メッセージにUPN(ユーザープリンシパル名)を入れて<at></at>で囲みます。

<p>以下のインスタンスが起動しています。<at>UPN</at></p>
@{triggerBody()?['text']['InstanceId']}

メンション出来ています。
これでリソースの停止忘れをしていたら、CloudTrailを絡ませてメンション付きで作成者に通知することができますね!

Teams のワークフローアプリは新しい友達

Incoming Webhookが廃止されてしまいましたが、Teamsのワークフローアプリで代替出来ることを確認しました。
ワークフローには様々な機能があるので、他にもSharePointと連携させたりと色々面白いことが出来そうです。
興味のある方は、ぜひ試してみてください。

以上、読んでいただいてありがとうございました!

たっきー

2025年03月25日 火曜日

クラウド本部 クラウドソリューション部に所属(2024年入社) 主に社内向けのクラウド記事を書いてます。でかい鯉を見るのが好き。

Related
関連記事