
[英]Is it possible to only deploy the changed files to an AWS Elastic Beanstalk application instead of uploading my whole source code?
[英]Is there a way to push changed to AWS Beanstalk instead of uploading an entire zip file on each deploy?
我正在迁移游戏! 从Heroku到AWS Beanstalk的应用程序。 Heroku在部署方面非常直接:只需将更改推送到Heroku上的远程git存储库,并在服务器端进行构建。
这非常方便,因为没有必要为每个微小的更改上传整个项目(包括所有库!)。
基本上每次更改我们都会生成一个巨大的140 MB Docker压缩文件,上传至少需要10分钟。
肯定有一个更好的方法,但长期搜索谷歌只返回选项,使用像詹金斯这样的脚本和替代品自动化文件生成,但这并没有解决问题,它只是自动化问题。
有没有人有更好的解决方案?
简答:不。
长答案:我最终用激活器打包应用程序,而不是使用Docker。
web: ./bin/YOUR_APP_NAME -Dhttp.port=5000 -Dconfig.file=conf/application.conf
请务必使用build.sbt中配置的应用名称替换YOUR_APP_NAME。
activator clean dist
这将在项目中的target / universal /文件夹中生成一个zip文件。
所以我也对这个问题感到好奇,并与AWS专家讨论了不同的选择。 每个选项都有它的缺点。
第一个选项是烘焙应用程序代码,从中创建AMI并使用烘焙AMI执行部署。 更多内容
在采用之前,您必须首先测试此方法。 缺点是您必须定期维护AMI。 由于AMI已被锁定,您可能还会错过Beanstalk的关键补丁
很好地阅读了这个主题
接下来的方法是移出Beanstalk并使用CloudFormation,您只需将应用程序文件夹上传到S3即可。 您的CloudFormation模板必须处理所需的所有资源并使用AWS :: CloudFormation :: Init和cfn-signals,可以安装和设置软件。资源中的更改可以通过使用元数据来检测元数据正确的CloudFormation信号,我们还可以在模板规范上检测到更改时运行用户指定的操作。
http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-helper-scripts-reference.html (可与CloudFormation一起使用的帮助程序脚本集)
虽然这些并不是您要求的解决方案,但它们可能是一个不错的选择。 至少我确保你没有错过Beanstalk的任何可用选项。
我从他们那里得到的一个建议是考虑将应用程序分成多个组件和子组件。 这会大大减少您的应用程序大小。
希望这有帮助。
您可以设置AWS CodeCommit存储库,并将其用作本地git
存储库的remote
存储库。 接下来,您可以设置AWS CodePipeline来构建应用程序,并在AWS CodeCommit存储库有新提交时部署到Elastic Beanstalk。
这样您就不必每次都上传所有内容。 每当您执行git push
,只将更改的文件上载到AWS CodeCommit存储库,然后AWS CodePipeline负责构建您的应用程序并将其部署到Elastic Beanstalk。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.