[アップデート]AWS Chatbotの通知内容をカスタマイズできるカスタム通知がサポートされました

2023.09.13

はじめに

AWS Chatbotがカスタム通知をサポートし、通知内容のカスタマイズが可能になりました。

従来ですと、AWS ChatbotからSlackに通知する内容は、CloudWatch アラームの場合、下記のような内容で通知され、通知内容はカスタマイズできませんでした。

日本語変換もできません。

そのため、通知内容をカスタマイズする場合は、AWS Chatbotを利用せず、EventBridgeやLambdaからSlack通知するなどの方法をとられていたと思います。

今回のアップデートでAWS ChatbotからMicrosoft TeamsやSlackチャネルへの通知内容をカスタマイズできるようになりましたので、通知内容の可視性を向上させることができます。AWS Chatbotの利用が増えそうですね。

AWS Chatbotの概要は、下記のブログをご参考ください

LambdaからSlack通知する場合、LambdaにSlackアプリのIncoming Webhook URLを取得する必要がありますが、AWS Chatbotであれば、不要なので便利です。

カスタム通知について

カスタム通知を利用するには、特定のイベント形式でSNSトピックに送信する必要があります。

Lambda関数を利用するか、EventBridgeの入力トランスフォーマを使用し、特定のイベント形式に変換し、SNSトピックに送信します。

AWS ChatbotはSNSトピックから、Microsoft TeamsまたはSlackのチャットチャンネルに配信します。

カスタム通知するには、以下のような構成が必要です。イベント内容は、例としてCloudWatchを挙げていますが、他のAWSリソースでも構いません。

Chatbot カスタム通知で利用できるイベント形式とパラメータは、下記のドキュメントに記載されていますのでご参考ください。

試してみた

今回は、「CloudWatch アラーム → EventBridge → SNS → Chatbot → Slack」という構成で、Chatbotのカスタム通知を試してみます。

まず、SNSトピックを作成します。トピックタイプがFIFOではなく、スタンダードにする必要があります。

続いて、AWS Chatbotを設定します。

Slackと連携させます。

チャネルの設定は、設定名を記載し、自分のSlackのチャンネルIDと先程作成したSNSトピックを設定し、他はデフォルトのままにします。

CloudWatchアラームを設定します。今回は、EC2インスタンスのCPUが80%以上になったらアラームする設定にします。

EventBridgeをトリガーにするため、通知は不要です。

アラーム説明の文章は、Chatbotのカスタム通知で利用します。

最後に、EventBridgeを設定します。

イベントパターンは、CloudWatchのアラート状態の変更をトリガーにします。

{
  "source": ["aws.cloudwatch"],
  "detail-type": ["CloudWatch Alarm State Change"]
}

ターゲットは、先程作成したSNSトピックにします。

入力トランスフォーマーで、Chatbotがカスタム通知できるイベント形式に変更します。あくまでも一例とお考えください。

入力パスは、下記にします。

{
  "description": "$.detail.configuration.description",
  "instance": "$.detail.configuration.metrics[0].metricStat.metric.dimensions.InstanceId"
}

テンプレートは、下記にしました。

インスタンスID(instance)とアラーム説明の文章(description)を通知内容として入れています。

{
    "version": "1.0",
    "source": "custom",
    "content": {
      "textType": "client-markdown",
      "title": ":warning:アラート",
      "description": "<description>",
      "nextSteps": [
        "AWSコンソールでCloudWatch メトリクスを確認しにいきましょう",
        "インスタンスIDは、<instance> です。"
      ]
    }
}

ちなみに、パラメータのversionsourceは必須です。

下記のドキュメントをご参考ください(再掲)

これで設定完了です。

通知内容を確認

それでは、EC2のCPU使用率を80%以上にし、アラートを通知させてみます。

ただし、CPUを80%まで上げるのが手間だったため、EC2のCPU使用率が80%以下の場合アラートを上げる設定にしました。

従来の「CloudWatch アラーム → SNS → Chatbot → Slack」という構成であれば、以下のような通知内容がSlackに送られます。

今回の「CloudWatch アラーム → EventBridge → SNS → Chatbot → Slack」の構成であれば、以下のようなカスタマイズされた通知内容にすることができました。

Custom notification delivered by AWS Chatbotと記載されてますね。

最後に

今回のアップデートのカスタム通知によって、必要な情報のみを選択して通知をカスタムできるため、可視性の向上に繋がります。

また、今回のカスタム通知内容は、あくまでも例の一つです。様々なカスタマイズができますので、色々試してみて下さい!