1

我正在使用API将应用程序部署到 AWS Elastic Beanstalk :

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

我从阅读中获得的印象是 Java 部署使用.war, .zips 是受支持的(docs)并且可以使用.git(但只能使用 PHP 或使用eb? doc)。

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

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

4

1 回答 1

4

有两种方法可以部署到 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),然后执行 git push -f master
    • 一旦<api>/<app>/<commitid>(/<envname>)AWS<app>收到这个(url 基本上是URL 就像所有 AWS 调用一样,但作为用户名/密码身份验证令牌发送。<commitid><envname>

完整的参考文档

几个月前我将它移植为一个 Maven 插件,这个文件展示了它是如何在纯 Java 中完成的。它实际上涵盖了很多代码(因为它实际上构建了一个自定义 git 存储库 - 使用 jgit,计算散列并推入其中)

我强烈考虑将反向移植作为一项 ant 任务,或者只是在没有pom.xml文件的情况下使其工作,因此用户只使用 maven 进行部署。

从历史上看,只有第一种方法得到支持,而第二种方法的重要性越来越大。由于第二个实际上要容易得多(在 beanstalk-maven-plugin 中,您必须调用三种不同的方法,而简单的 git push 完成所有这三种方法),我们支持基于 git 的部署,甚至发布了它的原型(您会在此处看到一个示例项目,尤其是 README.md)。

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

所以,你还想实现它吗?

我建议您阅读三个文件:

想进去

  • Python?我会找德威
  • C#?powershell版本基于它
  • 红宝石?Linux是基于它的
  • 爪哇?使用我的,它使用 jgit
于 2013-01-09T11:39:39.080 回答