SNSとSlackを統合しています。着信Webhookを有効にしてSlackアプリを作成しました。 WebhookのURLを取得しました。 HTTPSプロトコルを使用してSNSトピックのサブスクリプションを作成し、エンドポイントをwebhookURLに設定しました。現在、サブスクリプションはPendingConfirmationです。宛先チャネルではなく、確認メッセージを受信しませんでした。
サブスクリプションを確認するにはどうすればよいですか?
ラムダ関数を作成したり、SlackでHTTPSサブスクリプションを作成したりする必要はありません。
Slackチャネルに、「メール統合」アプリを追加します。完了すると、Slackはslack.comドメインのメールアドレスを提供します。
このアドレスに送信されたメールは、Slackチャネルにインポートされます。
次に、SNSでメールサブスクリプションを作成し、上記のスラックメールを提供します。
Slackに表示されない理由は、デフォルトの SNSメッセージのJSON形式 がSlackで必要な形式に準拠していないためです。
上記のWebhookURLにデータを送信するには2つのオプションがあります。
- POSTリクエストのペイロードパラメータとしてJSON文字列を送信します
- POSTリクエストの本文としてJSON文字列を送信します
単純なメッセージの場合、JSONペイロードには少なくともtextプロパティを含めることができます。これは、チャンネルに投稿されるテキストです。
別のユーザーが提案したように、AWSLambda関数を使用してこれを容易にすることができます。 this one (私が作成したものではなく、使用したこともありません...参照ポイントとしてのみ含める)など、無料の公開ソリューションがすでに利用可能です。
SNSフィードバックを受信してWebhookURLにPOST送信するラムダ関数を作成しました。
ラムダトピックへのサブスクリプションを作成するときは、プロトコルとしてAWS Lambdaを選択し、作成したラムダを選択します。