我正在使用Jenkins运行连续代码部署,它将自动编译并将二进制文件并行上传到S3以用于多个目标。
我的部署机制的最后一步是检测已上载特定版本的所有二进制文件,然后将它们一起部署。
S3具有可以触发对象被推送时的事件通知,但它们是否有更复杂的东西可以在推送多个对象时触发?
示例:
现在我能想到的唯一解决方案是设置AWS Lambda并让事件处理程序手动检查是否存在其他二进制文件,如果S3有特殊的竞争条件,这甚至可能都不可行。
有什么想法吗?
答案 0 :(得分:2)
简短的回答是否定的。当上传所有三个对象时,没有任何机制可以让您触发操作。没有条件通知,只是简单的事件。
但你可以使用别的东西。在上载任何文件之前,为构建记录创建一个DynamoDB
表,并在构建成功从任何构建计算机上创建一行。现在,对于每个构建,在行上创建一个单独的属性。让S3
向您的Lambda
发布通知并让您Lambda
查找并更新此行,当您的所有属性都处于所需状态时,您可以让Lambda
执行此操作释放。
答案 1 :(得分:2)
亚马逊S3是一个"基地"可以构建许多东西的系统(例如DropBox!)。因此,Amazon S3的功能有限(但非常可扩展且可靠)。
因此,您必须在Amazon S3之上构建自己的逻辑,以实现所需的解决方案。
一个选项是在创建对象时触发AWS Lambda函数。然后,此Lambda函数可以实现您想要的任何逻辑,例如您的步骤#3。