【发布时间】:2019-06-12 00:24:27
【问题描述】:
我有一个在 AWS 中运行的 CodePipeline 构建,一切运行良好,只是没有直接来自 CodePipeline 的良好通知机制。挖掘了一下,似乎接受的解决方案是配置 CloudWatch 以调用 Lambda 或 SNS 来发送您的消息。
好的,所以我构建了一个小型 Java 程序来根据 CloudWatch CodePipeline 事件向 Slack 发送消息。它运行良好,除了 每条消息 重复六次或更多次。这似乎与我读过的关于重复 Lambda 执行的所有其他帖子有所不同,在这些帖子中你偶尔会在这里或那里得到重复。
我知道标准答案是 Lambda 想要确保传递,因此可以重试事件,这很好 - 如果每 20 或 100 条消息我得到一个重复,我会没事的。但是我不能在每次简单的 CP 运行时用 50 多条消息淹没 Slack 频道。更不用说我假设我会为每一次 Lambda 执行付费,而实际上我每次运行应该只得到 4 次。
我不想设置数据库来跟踪唯一 ID - 这又增加了复杂性和成本(执行仍然会发生)。感觉有些东西配置错误。例如。 CloudWatch 是否会出于某种原因获取相同的消息并将其转发给 Lambda?还是 Lambda 认为即使成功退出也需要重试执行的原因?
【问题讨论】:
标签: amazon-web-services aws-lambda aws-codepipeline amazon-cloudwatch