У меня есть сборка CodePipeline, работающая в AWS, и все прекрасно работает, за исключением того, что внутри CodePipeline нет хорошего механизма уведомлений. Похоже, что принятым решением для этого является настройка CloudWatch для вызова Lambda или SNS для отправки вашего сообщения.
ОК, поэтому я создал небольшую Java-программу для отправки сообщения в Slack на основе событий CloudWatch CodePipeline. Это работает хорошо, за исключением того, что каждое отдельное сообщение повторяется полдюжины раз или больше. Кажется, это отличается от всех других постов, которые я читал о дублированных лямбда-казнях, где вы иногда получаете дубликат здесь или там.
Я знаю, что стандартный ответ заключается в том, что Lambda хочет обеспечить доставку, поэтому события могут быть повторены, что хорошо - если каждые 20 или 100 сообщений я получу дубликат, я буду в порядке. Но я не могу залить канал Slack более чем 50 сообщениями за каждый простой запуск CP. Не говоря уже о том, что я полагаю, что мне выставляют счета за каждое из этих лямбда-казней, тогда как на самом деле я должен получать только 4 за один запуск.
Я не хочу настраивать БД для отслеживания уникальных идентификаторов - опять же, это увеличивает сложность и стоимость (выполнение по-прежнему происходит). Такое ощущение, что что-то неправильно настроено. Например. Есть ли какая-то причина, по которой CloudWatch по каким-то причинам будет собирать то же сообщение и пересылать его в Lambda? Или причина, по которой Lambda считает, что выполнение нужно повторить, даже если оно успешно завершено?