我正在使用AWS CodePipeline构建CI管道。我使用CodeBuild从存储库获取代码,构建docker镜像并将镜像推送到ECR。我的CodePipeline的源是我的ECR repo,它会在镜像更新时触发。
现在,这是我正在寻找的功能。在将新映像推送到ECR时,我希望创建一个EC2实例,然后将新映像部署到该实例。当图像中的应用程序完成其任务,即做了一些事情并将结果推送到S3时,我想要终止实例。可能需要几个小时到几天的时间才能完成任务。
对于此用例,CodeDeploy是用于将ECR映像部署到EC2实例的正确工具吗?我从文档中看到,CodeDeploy需要一个已经在运行的实例来进行部署。我需要在CodeDeploy启动之前动态创建一个。在CodeDeploy运行之前,我是否应该在CodePipeline中添加一个步骤来触发一个创建实例的lambda?
任何指导都将不胜感激!
发布于 2019-04-19 11:47:41
CloudTrail支持记录PutImage事件,您可以使用该事件来处理您的管道。我更喜欢在构建管道中的特定步骤之后生成工件,然后使用一个对object created事件做出反应的lambda函数。然后,您的lambda函数可以进行必要的调用来启动ec2实例。然后,您的实例可以运行一个作业,然后再次调用lambda,这可能会破坏它。听起来你需要一个随叫随到的工人。像AWS Batch或ECS这样的服务或许能够为您提供开箱即用的功能。
https://stackoverflow.com/questions/55626259
复制相似问题