5

我是 Cloudwatch 活动和 Fargate 的新手。每当文件上传到特定的 S3 存储桶时,我想触发 Fargate 任务 (Python) 运行。每当我上传文件时,我都可以让任务运行,并且可以在事件日志中看到名称;但是我想不出一种简单的方法来读取 Fargate 中的事件数据。过去几天我一直在研究这个问题,除了阅读事件日志或使用 lambda 调用任务并将事件数据放入消息队列之外,还没有找到解决方案。

有没有一种简单的方法可以使用 boto3 获取 Fargate 中的事件数据?很可能我没有在正确的地方寻找或提出正确的问题。

谢谢

4

2 回答 2

7

您可以配置的最简单的选项之一是同一 s3 图像上传事件的两个目标。

  • 将相同的事件推送到 SQS
  • 同时启动 Fargate 任务

当 Fargate 启动时从 SQS 读取消息事件(中间没有 Lambda),同样的任务定义将在正常用例中运行,请确保在从 sqs 读取消息后退出进程。

所以在这种情况下,每当 Fargate 任务启动时,它都会从 SQS 读取消息。 在此处输入图像描述

于 2020-07-05T18:08:07.463 回答
2

为此,您需要使用输入变压器

每次触发事件规则时,都会有一个JSON 对象可访问以用于转换。

由于事件本身无法在容器中访问(如使用 Lambda 函数),因此您实际上会将关键信息作为环境变量转发并在容器中进行操作。

目前,控制台中似乎并非所有服务都支持此功能,因此您有以下选项:

您可以从此链接查看有关此确切方案的教程。

于 2020-07-05T16:48:19.030 回答