我想知道如何在弹性beanstalk上部署bundle的version label属性,以便在我的应用程序中显示它。
据我所知,捆绑了" git aws.push"上传到S3存储桶。我的目标是检索版本号并将其设置为环境变量或者将其设置为dinamically以便在我的django应用程序中显示。
由于
答案 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?(显然我只是在写完上述内容后才发现)。