我可以从 S3 中的特定文件上传触发 ECS/Fargate 任务吗?

Ste*_*eve 4 amazon-s3 amazon-web-services amazon-ecs aws-fargate

我知道我可以在上传文件时触发任务(根据https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatch-Events-tutorial-ECS.html)但是,我如何触发上传特定文件时的任务?

亚马逊似乎没有预料到人们有多个工作在同一个存储桶中查看不同的文件:(

hep*_*ump 7

您可以使用 CloudTrail Data Events 中的 CloudWatch Events 完成此操作。

转到CloudTrail,并为您的帐户创建一个跟踪。

  • 对于将跟踪应用于所有区域,选择否。
  • 在管理事件、读/写事件下,选择无。
  • 在数据事件下,选择 S3。输入您的 S3 存储桶名称和文件夹名称(前缀)以记录数据事件,然后选择写入(不要设置为读取)。
  • 在存储位置下,创建一个新存储桶或提供一个用于存储日志文件的存储桶。
  • 选择创建

接下来,当 CloudTrail 数据事件发生时,创建一个以您的 ECS 任务为目标的 CloudWatch 事件规则。

转到 CloudWatch 并创建新的事件规则

  • 对于事件源选择事件模式
  • 将显示“构建事件模式以按服务匹配事件”的下拉菜单更改为“自定义事件模式”
  • 在下面输入事件模式:
{
  "source": [
    "aws.s3"
  ],
  "detail-type": [
    "AWS API Call via CloudTrail"
  ],
  "detail": {
    "eventSource": [
      "s3.amazonaws.com"
    ],
    "eventName": [
      "PutObject"
    ],
    "requestParameters": {
      "bucketName": [
        "your-bucket-name" // this is the bucket where your events are happening
      ],
      "key": [
        "your-object-key" // this is the object key you want to trigger starting your ECS task, note that it's an array.
      ]
    }
  }
}

Run Code Online (Sandbox Code Playgroud)
  • 自定义bucketNamekey上面适合您使用。
  • 对于您的目标,选择 ECS 任务,根据需要配置任务。
  • 选择Configure details,为规则命名并将状态设置为Enabled,然后单击Create rule

现在您的规则已启用,当您将具有指定键的对象上传到指定存储桶时,CloudWatch Events 将触发您指定的 ECS 任务。