【问题标题】:Get version label of python app deployed to elastic beanstalk获取部署到弹性beantalk的python应用程序的版本标签
【发布时间】:2014-08-01 21:43:34
【问题描述】:

我想知道如何获取部署在弹性 beantalk 上的捆绑包的版本标签属性以在我的应用程序中显示它。

据我所知,使用“git aws.push”部署的包被上传到 S3 存储桶。我的目标是检索版本号并将其设置为环境变量或动态获取它以便在我的 django 应用程序中显示。

谢谢

【问题讨论】:

  • 你有没有为此找到一些东西?

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


【解决方案1】:

我看到了两种可能的方式。虽然我必须说我不明白为什么这并不容易,因为这是一个非常合法的用例,但它看起来似乎不受 AWS 的支持。

方案一:生成版本标签

在您这边生成版本标签(例如,使用提交哈希),然后将其作为您代码的一部分。

例如在你的Makefile:

VERSION=$(shell git rev-parse --short HEAD)

deploy: requirements.txt
    echo $(VERSION) > version.txt
    eb deploy --label $(VERSION)
.PHONY: deploy

然后你可以从实例中读取这个文件。还有一些其他选项,例如使用sed 将其作为变量放入您的文件之一。

解决方案 2:从未记录的文件中获取(不稳定)

我试图在 EC2 实例上找到此元数据,但不幸的是,它可以在 root 拥有的文件中找到:

[root@... ec2-user]# cat /opt/elasticbeanstalk/deploy/manifest
{"RuntimeSources":{"yourappname":{"app-VERSION":{"s3url":""}}},"DeploymentId":24,"Serial":26}
[ec2-user@... ~]$ ls -la /opt/elasticbeanstalk/deploy/manifest
-rw-rw---- 1 root awseb 98 Mar 22 17:57 /opt/elasticbeanstalk/deploy/manifest

我不确定你是否可以这样做,但你可以有一个部署后命令,将这个文件 chown 或复制到一个你可以阅读的地方。我可能会尝试一下,然后告诉你它是否有效。

这里也有人问过类似的问题:How can you get the Elastic Beanstalk Application Version in your application?(显然我是在写完上面之后才发现的)。

【讨论】:

    猜你喜欢
    • 2019-05-01
    • 2016-01-11
    • 2017-12-06
    • 2015-03-19
    • 2018-03-26
    • 2014-11-29
    • 2017-12-18
    • 2012-08-18
    • 2016-08-28
    相关资源
    最近更新 更多