获取部署到弹性beanstalk的python app的版本标签

时间:2014-06-11 18:04:03

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

我想知道如何在弹性beanstalk上部署bundle的version label属性,以便在我的应用程序中显示它。

据我所知,捆绑了" git aws.push"上传到S3存储桶。我的目标是检索版本号并将其设置为环境变量或者将其设置为dinamically以便在我的django应用程序中显示。

由于

1 个答案:

答案 0 :(得分:0)

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

解决方案1:生成的版本标签

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

例如在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

我不确定你是否可以这样做,但你可以有一个部署后命令,可以在你可以阅读的地方放大或复制这个文件。我可以尝试一下,让你知道它是否有效。

此处也提出了类似的问题:How can you get the Elastic Beanstalk Application Version in your application?(显然我只是在写完上述内容后才发现)。