1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS SNS - Chatbot 経由でメッセージが送信されない要因の3例

Last updated at Posted at 2024-11-08

はじめに

AWS の運用で

何らかの AWS サービス → SNS → Chatbot → Slack チャンネル

という具合に、通知をSlack チャンネルに流すユースケースは色々あると思いますが、
設定をしていざ上流でトリガーされてもSlackまで流れなくて、SNS - Chatbot 間で止まってしまっている3つのケースがこれまでにありました。

たまに忘れるので備忘録として残しておきます。

SNS トピックが バージニア北部 (us-east-1) になかった

これは

AWS Cost Anomaly Detection → SNSトピック → Chatbot → Slack チャンネル

の流れで構築した際に、いつものように 東京リージョン (ap-northeast-1) で作成していました。

Chatbot が Cost Anomaly Detection と連携するためには、SNS Topic を us-east-1 リージョンで作成する必要がある(※)ようで、そのため以下のエラーが出ていました。グローバルサービスは us-east-1 リージョンでホストされているからでしょうか。

(※公式ドキュメントに記載は見当たりませんでしたが、このときはこれで回避しました)

We were unable to publish to your SNS topic arn:aws:sns:ap-northeast-1:999999999999:xxxxx-slack-notification for the alert subscription xxxxx-immediate. As a result, you won’t be notified of all of the anomalies that have been configured with that alert subscription. 
To resolve the issue, check that you’ve entered the correct SNS ARN, or follow the user guide (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/ad-SNS.html) to ensure the alert is set up correctly to work with AWS Cost Anomaly Detection. 
If you have any questions, contact us at https://aws.amazon.com/support.

エラーメッセージやドキュメントにも特に記載はありませんでしたが、試しにバージニア北部リージョンにSNSトピックを作成し直し試したところ流れるようになりました。

Cost Anomaly Detection に限らず、グローバルサービスのものは当てはまるかもしれません。

Chatbot には対応していない AWS サービスだった

RDS の OSアップデート関連の通知を Slack で受け取りたいユースケースがありました。
RDS には、インスタンスやデータベースに発生する特定のイベントを監視し、それらのイベントに対して通知を受け取るための「イベントサブスクリプション」という仕組みがあります。

これには「OS のアップデートが可能になった」というイベントの監視も可能で、このときはそれを使用し、SNS, ChatBot を介して Slack まで通知する機構を構築しました。

しかし、Chatbot が RDS イベントサブスクリプションに対応していませんでした。最初からこれを見とけばよかった。。

そのため EventBridge を介して通知するパターンに変更しました。

OS のアップデートが可能になった場合に発生するイベント RDS-EVENT-0230 を EventBridge で検知し、SNS, ChatBot を介して Slack まで通知する機構を構築しました。

RDS <--(検知)-- EventBridge →SNS → Chatbot → Slack チャンネル

カスタム通知のメッセージフォーマットが不正だった

前述の対応サービス以外(Lambda や Fargate の中などから)でも、カスタム通知として SNS トピック - Chatbot 経由で送れますが、フォーマットに準規していないとエラーとなります。
ただ単に test と送ろうとしていましたが、フォーマットに準規していなくてエラーとなっていました。

以下のフォーマットである必要があります。

{
    "version": "1.0",
    "source": "custom",
    "content": {
        "description": "test"
    }
}
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?