amazon-s3 - 从 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"
]
}
}
如果有人可以帮助整理一下它的语法,那就太棒了,或者,如果我应该研究另一种模式,那么这个建议也太棒了。
解决方案
您可以尝试此链接上的教程: 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 队列来确保不会丢失任何消息。
希望这可以帮助!
推荐阅读
- ruby - 你如何检查两个数字是否在彼此的阈值内?
- laravel - 为什么更新图片检测不到文件上传?
- premake - 如何在一个 premake5.lua 中根据不同的操作系统获取不同的环境值?
- sql - 获取超过 45% 的测试未通过的学生代码
- firebase - 永久位置权限
- python - PYTHON:将现有列拆分为多个而不影响其他列
- swift - 将 NSSlider 增加 0.1?macOS、斯威夫特
- arrays - 如何从单元格数组中复制列以创建另一个单元格数组?
- jquery - 如何选择具有多个条件的对象,这些条件在jquery中存在自定义属性?
- android - Android P Altbeacon BLE 禁用前台服务不取消通知图标