当 Sagemaker 标记作业使用 CloudWatch 事件完成时,我可以触发 AWS lambda 函数吗?

当 Sagemaker 标记作业使用 CloudWatch 事件完成时,我可以触发 AWS lambda 函数吗?

我是 CloudWatch 事件的新用户,我正在尝试创建一个事件规则,当 Sagemaker Ground Truth Labeling Job 完成时触发 lambda 函数。从阅读 aws 的这篇文章来看,这似乎是可能的:

使用 CloudWatch Events 对 Amazon SageMaker 作业状态变化做出反应

创建触发事件的 CloudWatch Events 规则

我按照教程创建了 cloudwatch 事件规则,并将事件模式设置为,Sagemaker:Sagemaker Training Job State Change然后创建了一个 Lambda 函数并将其添加到目标中。但是,当我创建标记作业时,我没有在日志中看到来自 lambda 函数的任何输出,当作业状态更改为已完成、失败或已停止时也没有看到。

我也尝试将事件模式设置为Sagemaker:All Events,但这也不起作用。

我正在检查该规则的指标,但似乎它没有记录任何事件。

如果有人过去做过类似的事情,任何建议或推荐都会非常感激。谢谢

答案1

是的,这是可能的。你可以这样做:

  1. 连接由 S3 触发的 lambda 触发器。使用“所有对象创建事件”。
  2. 作为触发器后缀选择:/manifests/output/output.manifest(这是所有最终真实输出清单的通用后缀)。
  3. 现在的问题是,当一项工作最终完成/停止时,它将创建两个事件(两个事件名称为“ObjectCreated:CompleteMultipartUpload”的事件)
  4. 因此我将执行以下操作:在 lambda 脚本中确保它正在轮询标签作业状态,您可以从这里获取:Boto3 文档,‘LabelingJobStatus’。我会同时使用“已完成”和“失败”。等待时间直到达到这两个状态之一(应该是 1-2 分钟,0.01 美分)
  5. 一旦工作完成,对输出清单文件进行操作,例如从 s3 存储桶获取它应该很简单。

这不是最简单的方法,而且它不使用 CloudWatch。但它在完成的 groundtruth 作业上使用 lambda,因此无服务器,只需最少的等待时间。

相关内容