Подтверждение подписки на тему AWS SNS для Slack Webhook
Я интегрирую SNS и Slack. Я создал слабое приложение с включенным входящим webhook. У меня есть URL-адрес webhook. Я создал подписку на тему SNS с протоколом HTTPS и установил конечную точку webhook URL. Теперь подписка PendingConfirmation. Я не получил никакого подтверждающего сообщения, не в назначенном канале.
Как мне подтвердить подписку?
6 ответов
Вам не нужно создавать лямбда-функцию или создавать подписку HTTPS в Slack.
На своем Slack-канале добавьте приложение "интеграция электронной почты". После этого Slack предоставит вам адрес электронной почты с доменом slack.com.
Письма, отправленные на этот адрес, будут импортированы в ваш канал Slack.
Затем в соцсети создайте подписку по электронной почте и предоставьте резервный адрес электронной почты, указанный выше.
Вы можете подтвердить подписку БЕЗ лямбды. Это легко. Я нашел способ интегрировать AWS SNS с slack БЕЗ AWS Lambda
илиAWS chatbot
.
Следуйте видео, которое ясно показывает весь шаг. https://www.youtube.com/watch?v=CszzQcPAqNM
Шаги, которые необходимо выполнить:
- Создайте слабый канал или используйте существующий канал
- Создайте рабочий процесс, выбрав Webhook
- Создайте имя переменной как
SubscribeURL
. Имя очень важно - Добавьте указанную выше переменную в тело сообщения рабочего процесса.
- Опубликуйте рабочий процесс и получите URL
- Добавьте указанный выше URL-адрес в качестве подписки на SNS.
- Вы увидите URL-адрес подписки в слабом канале.
- Перейдите по URL-адресу и завершите подписку
- Вернитесь к рабочему процессу и измените переменную на
Message
- Опубликовать сообщение в SNS. вы увидите сообщение в слабом канале.
Причина, по которой вы не видите его в Slack, заключается в том, что формат JSON по умолчанию для сообщений SNS не соответствует формату, требуемому Slack:
У вас есть два варианта отправки данных на URL Webhook выше:
- Отправьте строку JSON в качестве параметра полезной нагрузки в запросе POST
- Отправить строку JSON как тело запроса POST
Для простого сообщения полезная нагрузка JSON может содержать как минимум текстовое свойство. Это текст, который будет размещен на канале.
Как предложил другой пользователь, вы можете использовать функцию AWS Lambda для облегчения этого. Уже есть бесплатные, общедоступные решения, такие как это (которое я не писал, и не использовал... только в том числе в качестве ориентира).
Я могу опоздать на эту тему, но вы можете настроить AWS Chatbot (приложение Slack) для отправки всех уведомлений на ваш Slack. Подробнее здесь: https://aws.amazon.com/chatbot/
Вы создали лямбда-функцию, которая получает обратную связь SNS и отправляет ее на ваш URL-адрес.
Когда вы создаете подписку на свою лямбда-тему, вы выбираете AWS Lambda в качестве протокола и выбираете только что созданную лямбду.
Подробнее об этом здесь: https://medium.com/cohealo-engineering/how-set-up-a-slack-channel-to-be-an-aws-sns-subscriber-63b4d57ad3ea
Я бы рекомендовал использовать AWS Chatbot (https://aws.amazon.com/chatbot/).
Он делает всю тяжелую работу за вас. Вы можете настроить Slack-клиент, настроить нужные каналы, а затем подписаться на каналы по нужной вам теме.