2013-01-06 42 views
1

我使用the API部署应用AWS弹性魔豆:支持哪些源文件包类型?

https://elasticbeanstalk.us-east-1.amazon.com/?ApplicationName=SampleApp 
&SourceBundle.S3Bucket=amazonaws.com 
&SourceBundle.S3Key=sample.war 
... 

我从周围有点读的印象是Java部署使用.war.zip s的支持(docs),并且可以使用.git(但只能使用PHP或使用ebdoc)。

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

(另外,我混帐推到AWS不使用命令行工具?)

回答

3

有两种方式部署到AWS:

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

  2. 的git的终点,这是这样的:

    • 您安装AWS Elastic Beanstalk DevTools,并在您的git回购运行安装脚本
    • 当跑了,安装脚本,以便修补程序,与.git/config来支持git aws.push尤其git aws.remote(未记载)
    • git aws.push只是需要你的钥匙,建立一个自定义URL(GIT aws.remote),并做了混帐推-f主
    • 一旦AWS收到此消息(url基本上是<api>/<app>/<commitid>(/<envname>),它会创建s3 .zip文件(来自提交内容),然后<app>上的应用程序版本为<commitid>,如果<envname>存在,它也会发出UpdateEnvironment调用。就像所有AWS呼叫一样,您的AWS ID也被散列并嵌入到URL中,但作为用户名/密码认证令牌发送。

full reference docs

我移植,作为Maven插件在几个月前,和this file展示它是如何在普通的Java实现。它实际上覆盖了很多代码(因为它实际上构建了一个定制的git回购 - 使用jgit,计算哈希值并将其推入)

我强烈考虑将反向移植作为一个蚂蚁任务,或者只是简单地让它工作目前有pom.xml文件,所以用户只能使用maven来进行部署。

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

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

所以,你要还执行它?

有三个文件,我建议你阅读:

想做的事一世n

  • Python?我想找Dulwich
  • C#? PowerShell版本基于它
  • Ruby? Linux是基于它的
  • Java?使用我的,它使用jgit
+0

这是非常有益的 - 谢谢。您的Maven工具看起来不错 - 我们正在开发(并计划在稳定时发布)类似的Python包,它将自动从GitHub标签zipball进行部署。我的主要疑问是,是否可以通过API使用git而不是使用zipball - 我们正在尝试不使用任何命令行工具,但是我只是将API用作cmdline工具吗? –

+0

就像我所说的:你创建了URL,并对其执行git push -f。如果启用DevTools(特别是在Windows中,其Powershell + C#),您可以查看其源代码。我所做的是纯Java方法。 在python中,我依赖于dulwich;) – aldrinleal

+0

我查看了你的插件的页面,但没有看到关于Git的任何提及。另一件事......我不想部署我工作树的状态,甚至不一定是我最后一次提交的状态。虽然我可以隐藏并签出&构建&部署&结帐&隐藏弹出窗口,我宁愿能够部署特定的提交。也许聪明地使用ebextensions将建立在服务器上,更改部署目录并运行? –