支持哪些源包文件类型?

2024-06-25 05:55:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用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为Python应用程序从.git创建应用程序版本吗?或者zips是唯一受支持的类型吗?在

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


Tags: thehttpsgitcomawsapi应用程序部署
1条回答
网友
1楼 · 发布于 2024-06-25 05:55:25

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

  1. API后端,基本上是从S3引用的.zip文件。在部署时,实例将解包并运行一些自定义脚本(您可以从AMI重写这些脚本,或者通过自定义配置文件重写这些脚本,这是推荐的方法)。注意,为了在AWS弹性Beanstalk环境中创建和部署新版本,需要三个调用:upload to s3、createapplicationversion和UpdateEnvironment。

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

    • 安装AWS Elastic Beanstalk DevTools,并在git存储库上运行安装脚本
    • 运行时,安装脚本会修补您的.git/config,以支持git aws.push,尤其是git aws.remote(未记录)
    • git aws.push只需获取密钥,构建一个自定义URL(gitaws遥控器),并执行git push-f主机
    • 一旦AWS接收到这个(url基本上是<api>/<app>/<commitid>(/<envname>),它将创建s3.zip文件(根据提交内容),然后为<commitid>创建{}上的应用程序版本,如果<envname>存在,它还会发出一个UpdateEnvironment调用。您的AWS id被散列并嵌入到URL中,就像所有AWS调用一样,但是作为用户名/密码认证令牌发送。在

full reference docs

几个月前,我已经将其作为一个Maven插件进行了移植,并且this file展示了如何用纯Java实现它。它实际上包含了很多代码(因为它实际上构建了一个自定义的git repo—使用jgit,计算散列并推送到其中)

我强烈地考虑将后端口作为一个ant任务,或者干脆在没有pom.xml文件的情况下使其工作,因此用户只使用maven来完成部署。在

历史上,只有第一种方法得到支持,而第二种方法的重要性逐渐增加。由于第二种方法实际上要简单得多(在BeanstalkMaven插件中,您必须调用三种不同的方法,而一个简单的git推送就可以实现这三种方法),因此我们支持基于git的部署,甚至还为此发布了一个原型(您可以看到一个示例项目here,尤其是自述文件.md特别是)。在

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

那么,你还想实施它吗?在

我建议你读三个文件:

想进去吗

  • Python?我要找Dulwich
  • C#?powershell版本基于它
  • 鲁比?Linux就是基于它
  • 爪哇?用我的,它用jgit

相关问题 更多 >