【问题标题】:Triggering SWF workflow after uploading to S3上传到 S3 后触发 SWF 工作流
【发布时间】:2014-07-12 02:02:37
【问题描述】:

我有一个工作流,它在 S3 存储桶中获取一个文件,并根据文件内容进行大量处理和进一步请求。目前,客户端必须在上传文件后手动触发工作流。这对我来说似乎是一个很常见的用例,那么有什么方法可以在文件上传后立即触发工作流程?

我想在两者之间应该有一个 SNS 通知,但是有没有办法将通知直接发送到 SWF,而无需服务使用它们并启动工作流?

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-swf


    【解决方案1】:

    更新

    AWS 今天终于推出了New Event Notifications for Amazon S3,它实际上只是简单地扩展了长期可用的PUT Bucket notification API,并添加了额外的event types,以便通过S3 API(例如 PUT、POST 和 COPY)创建对象

    • s3:ObjectCreated:*
    • s3:ObjectCreated:Put
    • s3:ObjectCreated:Post
    • s3:ObjectCreated:Copy
    • s3:ObjectCreated:CompleteMultipartUpload

    初步回答

    [...] 有什么方法可以将通知直接发送到 SWF,而无需服务使用它们并启动工作流程?

    不幸的是,没有这样的方法,您确实需要一个中介服务 - 虽然 PUT Bucket notification 显然也被设计为允许其他类型的事件,Amazon S3 不支持 Amazon SNS 除了 @ 之外的任何通知987654327@截至今日:

    PUT 操作的此实现使用notification 子资源来启用存储桶的指定事件的通知。 目前,s3:ReducedRedundancyLostObject 事件是唯一支持通知的事件。当 Amazon S3 检测到它已丢失对象的所有副本并且无法再为该对象的请求提供服务时,将触发 s3:ReducedRedundancyLostObject 事件。 [强调我的]

    【讨论】:

    • 抱歉,但我非常不同意 - 您问:[...] 有没有办法将通知直接发送到 SWF,而无需服务使用它们并启动工作流程? - 我提供了一个答案,说明没有这样的方法,包括解释和适当的参考 - 我添加了该引用以使这一点现在更加明显。虽然很不幸,但有时否定的答案也可能是一个答案(取决于提出的问题)。
    【解决方案2】:

    正如 Steffen Opel 所说,目前没有办法做到这一点。但是,他提供的更新答案的替代途径是使用 AWS 的新事件处理服务Lambda(ATM 处于预览状态)。向您展示如何为 S3 配置它的文档是 here,但在较高级别:

    1. 设置 lambda 函数以对对象放置事件执行某些操作(在本例中,调用 SWF)
    2. 配置存储桶以使用适当的用户和角色发布到该 lambda 函数
    3. 当该存储桶发生事件时,您的 lambda 函数将在 AWS 硬件上运行

    【讨论】:

      猜你喜欢
      • 2015-06-21
      • 2013-12-31
      • 2021-06-24
      • 1970-01-01
      • 2016-02-09
      • 2021-11-07
      • 2016-10-22
      • 2020-05-16
      • 1970-01-01
      相关资源
      最近更新 更多