部署版本的Amazon ElasticBeanstalk容器是否有环境变量?

时间:2013-08-08 14:39:59

标签: git amazon-web-services amazon-ec2 environment-variables elastic-beanstalk

我正在尝试创建部署挂钩,因此当我将PHP应用程序部署到EB时,它将发送应用程序代码版本或git提交点,甚至可能是git标记(如果存在于我的分析服务中)。

如果在实例上设置任何环境变量以说明它们正在运行的版本是什么,或者它是否将任何git数据复制到已作为EB设置的一部分部署的实例,那么我正在徘徊? / p>

2 个答案:

答案 0 :(得分:2)

AFAIK,当Elastic Beanstalk将您的应用程序部署到云时,它会使用git archive命令创建存档。生成的归档文件没有任何存储库元数据。虽然Elastic Beanstalk使用您的提交sha1作为版本名称的一部分,但如果您使用自己的版本控制架构,则sha1可能不可用。

作为替代方案,您可以创建shell脚本以将提交信息发送到分析服务。使用git别名,您可以执行脚本并将aws.push作为一个命令执行。

# .git/config

[alias "custom"]
        push = !git aws.push $1 && ./custom.sh


# custom.sh

commit=$(git rev-parse HEAD)
echo 'send info to analytics service for commit: ' $commit

然后将其作为$ git custom.push

执行

在上面的示例中,即使aws.push导致错误,也会执行custom.sh,因此如果您需要更可靠的解决方案,您可能希望将其与.git/AWSDevTools/aws.elasticbeanstalk.push脚本本身更紧密地集成。 / p>

希望它有所帮助。

答案 1 :(得分:2)

对于从Git部署的Python应用程序,用于beanstalk版本的提交SHA-1存储在当前部署的应用程序的源ZIP文件的注释字段中。在应用程序启动时,我提取该值并将其公开给应用程序。

Python代码是

with zipfile.ZipFile('/opt/elasticbeanstalk/deploy/appsource/source_bundle') as z:
    return z.comment

您可以使用

检查shell中的值
$ unzip -z /opt/elasticbeanstalk/deploy/appsource/source_bundle
Archive:  /opt/elasticbeanstalk/deploy/appsource/source_bundle
1049cbed865334a805ae2ae3179339dd...

您可以在PHP中使用ZipArchive::getArchiveComment