我正在使用the API将应用部署到AWS Elastic Beanstalk:
https://elasticbeanstalk.us-east-1.amazon.com/?ApplicationName=SampleApp
&SourceBundle.S3Bucket=amazonaws.com
&SourceBundle.S3Key=sample.war
...
我从阅读中得到的印象是,Java部署使用.war
,.zip
支持(docs)并且可以使用.git
(但仅限于PHP或使用eb
?doc)。
我可以使用API从.git
为Python应用程序创建应用程序版本吗?或者zip
是唯一支持的类型吗?
(或者,我可以在不使用命令行工具的情况下git推送到AWS吗?)
答案 0 :(得分:4)
有两种方法可以部署到AWS:
API后端,它基本上是从S3引用的.zip文件。部署时,Instance将解压缩并运行一些自定义脚本(您可以从AMI覆盖,或通过自定义配置文件,这是推荐的方式)。请注意,要在AWS Elastic Beanstalk环境中创建和部署新版本,您需要三个调用:上传到s3,创建应用程序版本和UpdateEnvironment。
git端点,其工作方式如下:
.git/config
以支持git aws.push
,特别是git aws.remote
(未记录)git aws.push
只需要你的密钥,构建一个自定义URL(git aws.remote),然后执行git push -f master <api>/<app>/<commitid>(/<envname>)
,它会创建s3 .zip文件(来自提交内容),然后创建<app>
上<commitid>
的应用程序版本以及{ {1}}存在,它还会发出UpdateEnvironment调用。您的AWS ID会像所有AWS调用一样进行哈希并嵌入到URL中,但会以用户名/密码auth令牌的形式发送。我几个月前把它作为Maven插件移植了,this file显示了它是如何在普通Java中完成的。它实际上涵盖了很多代码(因为它实际上构建了一个自定义的git repo - 使用jgit,计算哈希值并将其推入其中)
我强烈考虑将后移作为一项蚂蚁任务,或者只是让它在没有<envname>
文件的情况下工作,因此用户只能使用maven进行部署。
历史上,只支持第一种方法,而第二种方法的重要性增长。因为第二个实际上要容易得多(在beanstalk-maven-plugin中,你必须调用三种不同的方法,而简单的git push就可以完成所有这三种方法),我们支持基于git的部署,甚至为它发布了一个原型(你看到一个示例项目here,尤其是特别是README.md。
(顺便说一句,如果你使用.war文件,我的elastic beanstalk plugin支持两种方式,我们实际上支持git,因为它允许我们进行一些增量部署)
我建议您阅读三个文件:
想做