支持哪些源包文件类型?

时间:2013-01-06 05:30:02

标签: python amazon-web-services elastic-beanstalk

我正在使用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或使用ebdoc)。

我可以使用API​​从.git为Python应用程序创建应用程序版本吗?或者zip是唯一支持的类型吗?

(或者,我可以在不使用命令行工具的情况下git推送到AWS吗?)

1 个答案:

答案 0 :(得分:4)

有两种方法可以部署到AWS:

  1. API后端,它基本上是从S3引用的.zip文件。部署时,Instance将解压缩并运行一些自定义脚本(您可以从AMI覆盖,或通过自定义配置文件,这是推荐的方式)。请注意,要在AWS Elastic Beanstalk环境中创建和部署新版本,您需要三个调用:上传到s3,创建应用程序版本和UpdateEnvironment。

  2. git端点,其工作方式如下:

    • 安装AWS Elastic Beanstalk DevTools,然后在git repo上运行安装脚本
    • 运行时,设置脚本会修补您的.git/config以支持git aws.push,特别是git aws.remote(未记录)
    • git aws.push只需要你的密钥,构建一个自定义URL(git aws.remote),然后执行git push -f master
    • AWS收到此消息后(网址基本上为<api>/<app>/<commitid>(/<envname>),它会创建s3 .zip文件(来自提交内容),然后创建<app><commitid>的应用程序版本以及{ {1}}存在,它还会发出UpdateEnvironment调用。您的AWS ID会像所有AWS调用一样进行哈希并嵌入到URL中,但会以用户名/密码auth令牌的形式发送。
  3. full reference docs

    我几个月前把它作为Maven插件移植了,this file显示了它是如何在普通Java中完成的。它实际上涵盖了很多代码(因为它实际上构建了一个自定义的git repo - 使用jgit,计算哈希值并将其推入其中)

    我强烈考虑将后移作为一项蚂蚁任务,或者只是让它在没有<envname>文件的情况下工作,因此用户只能使用maven进行部署。

    历史上,只支持第一种方法,而第二种方法的重要性增长。因为第二个实际上要容易得多(在beanstalk-maven-plugin中,你必须调用三种不同的方法,而简单的git push就可以完成所有这三种方法),我们支持基于git的部署,甚至为它发布了一个原型(你看到一个示例项目here,尤其是特别是README.md。

    (顺便说一句,如果你使用.war文件,我的elastic beanstalk plugin支持两种方式,我们实际上支持git,因为它允许我们进行一些增量部署)

    那么,你还想实现它吗?

    我建议您阅读三个文件:

    想做

    • 的Python?我会寻找Dulwich
    • C#? powershell版本基于它
    • 红宝石? Linux基于它
    • 爪哇?使用我的,它使用jgit