多个标准的S3存储桶通知

时间:2015-10-01 16:29:28

标签: amazon-web-services amazon-s3 aws-lambda

我正在使用Jenkins运行连续代码部署,它将自动编译并将二进制文件并行上传到S3以用于多个目标。

我的部署机制的最后一步是检测已上载特定版本的所有二进制文件,然后将它们一起部署。

S3具有可以触发对象被推送时的事件通知,但它们是否有更复杂的东西可以在推送多个对象时触发?

示例:

  1. 在Windows上构建计算机将二进制文件上载到S3。
  2. 在OS X上构建机器将二进制文件上传到S3。
  3. S3检测到现在上传了这两个二进制文件并触发了一个事件。
  4. 构建机器会同时获取二进制文件并将它们一起发布。
  5. 现在我能想到的唯一解决方案是设置AWS Lambda并让事件处理程序手动检查是否存在其他二进制文件,如果S3有特殊的竞争条件,这甚至可能都不可行。

    有什么想法吗?

2 个答案:

答案 0 :(得分:2)

简短的回答是否定的。当上传所有三个对象时,没有任何机制可以让您触发操作。没有条件通知,只是简单的事件。

但你可以使用别的东西。在上载任何文件之前,为构建记录创建一个DynamoDB表,并在构建成功从任何构建计算机上创建一行。现在,对于每个构建,在行上创建一个单独的属性。让S3向您的Lambda发布通知并让您Lambda查找并更新此行,当您的所有属性都处于所需状态时,您可以让Lambda执行此操作释放。

答案 1 :(得分:2)

亚马逊S3是一个"基地"可以构建许多东西的系统(例如DropBox!)。因此,Amazon S3的功能有限(但非常可扩展且可靠)。

因此,您必须在Amazon S3之上构建自己的逻辑,以实现所需的解决方案。

一个选项是在创建对象时触发AWS Lambda函数。然后,此Lambda函数可以实现您想要的任何逻辑,例如您的步骤#3。