首页 > 解决方案 > 从 S3 事件触发 ECS 任务

问题描述

我想在文件进入 S3 存储桶时触发 ECS 任务。我尝试在 S3 事件上使用 Cloudwatch 规则,但它似乎需要特定位置的特定文件或在整个存储桶中的文件到达时触发,没有通配符/前缀/后缀来控制这两个极端之间的东西。

我也尝试过触发 SNS 主题,但似乎无法正确使用语法来解决我的特定主题。继承人我到目前为止:

{
 "source": [
   "aws.sns"
 ],
 "detail-type": [
   "AWS API Call via CloudTrail"
 ],
 "detail": {
   "eventSource": [
     "sns.amazonaws.com"
   ],
   "EventSubscriptionARN": [
     "arn:aws:sns:us-east-1:123456789123:WCIS_ECS_Test:xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
   ],
   "TopicARN": [
     "arn:aws:sns:us-east-1:123456789123:My_Topic"
   ],
   "eventName": [
     "Publish"
   ]
 }

}

如果有人可以帮助整理一下它的语法,那就太棒了,或者,如果我应该研究另一种模式,那么这个建议也太棒了。

标签: amazon-s3amazon-cloudwatchamazon-ecs

解决方案


您可以尝试此链接上的教程: https ://aws.amazon.com/blogs/compute/better-together-amazon-ecs-and-aws-lambda/

它基本上回答了您的问题,如何使用 Lambda 和队列将上传到您的 S3 存储桶中的特定文件处理到您的 ECS 环境中。

该教程可能有点旧,因为它是在 2015 年编写的,但它仍然有效,您可以使用一些优化,例如避免使用 shell 脚本并将其替换为 Python SDK,和/或使用 lambda 步进函数调用 SQS 和 ECS 服务。您还可以使用 FIFO SQS 队列来确保不会丢失任何消息。

希望这可以帮助!


推荐阅读