1

我在 cloudwatch 中为 Sagemaker 培训作业状态更改创建了一个事件规则,以监控我的培训作业。然后我使用这些事件触发一个 lambda 函数,该函数将电报组中的消息作为机器人发送。这样,每次培训作业更改其状态时,我都会收到一条消息。它可以工作,但是事件存在问题,它们会以相同的有效负载多次触发,因此我收到了大量重复的消息。由于所有有效载荷都是相同的(除了 field LastModifiedTime),我无法在 lambda 中过滤它们。不幸的是,我没有 AWS 开发人员计划,因此我无法获得 Amazon 的支持。任何的想法?

编辑

没有重复的规则/事件。我还注意到,启用 Sagemaker 分析器(现在默认情况下)会导致相同规则调用的数量激增。除了 之外,它们都具有相同的有效负载,LastModifiedTime所以我怀疑 AWS 中存在一个错误。一种解决方案可能是在 lambda 上实现某种数据保留,并检查调用是否已被处理,但我不想让应该非常简单的事情复杂化。刚尝试启动一个新的培训工作并得到这个序列(我只报告我解析的字段):

状态:InProgress 辅助状态:启动状态消息:正在启动请求的 ML 实例

状态:进行中次要状态:开始状态消息:开始训练作业

状态:进行中次要状态:开始状态消息:开始训练作业

状态:进行中次要状态:开始状态消息:开始训练作业

状态:InProgress 辅助状态:启动状态消息:准备训练实例

状态:进行中 辅助状态:下载状态消息:正在下载输入数据

状态:进行中次要状态:训练状态消息:正在下载训练图像

状态:进行中次要状态:培训状态消息:培训进行中

状态:进行中次要状态:训练状态消息:训练图像下载完成。培训进行中

4

2 回答 2

0

重复消息可能会发生,但应该非常罕见。您应该检查是否有任何重复的规则/时间表。您可以使用指标来识别正在调用/匹配的内容https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-monitoring-cloudwatch-metrics.html

另一个原因可能是您的规则过于宽泛,并且匹配同一来源的多个事件。您可以在 Cloudwatch Logs 的同一规则上创建另一个目标,以查看匹配的事件以及是否需要进行任何过滤。

sagemaker 也有可能只是将重复的事件发送到 EventBridge,在这种情况下,您最好的选择是让我们 ElastiCache 临时存储 id 并在您的 lambda 中检查。

于 2021-01-28T23:40:22.710 回答
0

经过大量实验后,我可以回答自己,Sagemaker 生成具有相同有效负载的多个事件,除了 field LastModifiedTime。我不知道这是一个错误,但在我看来不应该发生。这些是 AWS 自己定义的规则,所以我无法自定义。如果启用分析器,情况会更糟。我无能为力,因为我已经多次在官方 AWS 论坛上发帖,但运气不佳。

于 2021-03-29T08:35:16.700 回答