我正在构建一个在AWS中的分布式应用程序,包括基本资源(iam等)、数据仓库,但大多数是无服务器资源,如lambdas、sns、mongodb、.
为了在OTAP上部署这一点,我正在研究用于此的AWS工具,主要是概述这里。
这意味着CodeCommit中的1 repo将触发CodePipeline,这将使这些组件位于正确的位置(实现订单控制):
因此,作为一个示例,我将需要为该lambda的.js文件旁边的每个lambda提供一个.js,并且还需要在SAM模板(它自己的或分组的)中构造lambda。另外,每个步骤都有一个构建更改集步骤和执行更改集步骤。
我的问题:,如果在这个设置中,对于整个分布式应用程序进行1次回购,我会改变一个小傻瓜,就像许多蓝精灵中的一个一样,这会重新部署应用程序的所有元素吗?
如果没有,谢天谢地,但它是如何工作的?CodeCommit将所有源的完整压缩发送到S3,而不仅仅是更改。因此,所有元素都将被触发,并且在堆栈(CF或SAM)的部署过程中,底层技术可能是智能的,并且只做需要更改的事情。但是,CodePipeline中的所有元素(还有很多)都将被触发,如果目标是尽可能快地完成整个部署,这是效率低下的。
如果是的话,,,好吧,这会很糟糕,然后我会在管道中找到另一个解决方案,使用定制代码(Lambda),只从CodeCommit API中提取更改,然后执行change和CodeCommit。使用aws的主要缺点是订单控制,而有些东西,如“”,在sdk中是不可用的。
发布于 2018-06-03 09:17:26
@TimR如果您有10种资源,如果不需要的话,您不希望在P中重建/重新部署它们。这太糟糕了。每个资源都需要最大的正常运行时间。
为了回答我自己的问题,当使用codePipeline或其他方法部署更改时,它将检查整个模板的不同之处,并取决于资源类型以及重新部署该资源的更改。只检查未更改的资源,但大部分资源未被更改。所以,这是好的,唯一的好处是,整个CodePipeline中的所有操作都会被触发,除了CP是异步的,因此也会缓慢退出。一个中等大小的一个需要10分钟左右的小改变。现在假设每30分钟有10-20个开发人员提交一次。
然而,SAM/Lambdas在AWS中有一个bug。在使用lambda代码的MD5计算时,它检查是否更新/重新部署Lambda。该算法考虑了文件属性(如上次更改等),从而得出所有lambdas都发生了更改的结论,这是愚蠢的。
https://stackoverflow.com/questions/50316886
复制相似问题