我们希望能够在我们的PHP代码中检索弹性beanstalk应用程序版本。我没有看到EB在任何服务器配置文件中传递给我们,这让我感到很奇怪。还有人知道我们是如何获得它的吗?
xcitsw881#
至少对于Docker容器-您可以使用存储在/opt/elasticbeanstalk/deploy/manifest中的信息。
/opt/elasticbeanstalk/deploy/manifest
qzlgjiam2#
我自己也在找解决办法。至少目前,以下方法是可行的:
unzip -z "${EB_CONFIG_SOURCE_BUNDLE}" | tail -n1
详细说明一下,$EB_CONFIG_SOURCE_BUNDLE包含了一个应用程序zip压缩包的路径(例如/opt/elasticbeanstalk/deploy/appsource/source_bundle),version标签作为注解嵌入到这个文件中。
$EB_CONFIG_SOURCE_BUNDLE
/opt/elasticbeanstalk/deploy/appsource/source_bundle
bweufnob3#
综合来自@Georgij和@IanBlenke的答案,你可以找到这个版本。
你可以sudo cat /opt/elasticbeanstalk/deploy/manifest
sudo cat /opt/elasticbeanstalk/deploy/manifest
{"运行时源":{"平台名称":{"应用程序-ae22 - 190115_152512 ":{" s3url":""}}},"部署ID ":45,"序列号":53}
其次你可以查看eb-activity日志。这只会在日志行中显示...你必须假设它也是一个成功的安装。tail /var/log/eb-activity.log | grep -i "app-.*@"
tail /var/log/eb-activity.log | grep -i "app-.*@"
gmxoilav4#
您可以使用AWS Elastic Beanstalk API检索应用程序版本信息。Describe Application Versions返回现有应用程序版本的说明。
https://elasticbeanstalk.us-east-1.amazon.com/?ApplicationName=SampleApp &Operation=DescribeApplicationVersions &AuthParams
<DescribeApplicationVersionsResponse xmlns="https://elasticbeanstalk.amazonaws.com/docs/2010-12-01/"> <DescribeApplicationVersionsResult> <ApplicationVersions> <member> <SourceBundle> <S3Bucket>amazonaws.com</S3Bucket> <S3Key>sample.war</S3Key> </SourceBundle> <VersionLabel>Version1</VersionLabel> <Description>description</Description> <ApplicationName>SampleApp</ApplicationName> <DateCreated>2010-11-17T03:21:59.161Z</DateCreated> <DateUpdated>2010-11-17T03:21:59.161Z</DateUpdated> </member> </ApplicationVersions> </DescribeApplicationVersionsResult> <ResponseMetadata> <RequestId>773cd80a-f26c-11df-8a78-9f77047e0d0c</RequestId> </ResponseMetadata> </DescribeApplicationVersionsResponse>
2vuwiymt5#
虽然最好的方法是直接询问AWS:
aws elasticbeanstalk describe-environments | \ jq -r '.Environments | .[] | .EnvironmentName + " " + .VersionLabel'
我有有限的成功推导相同的4或5位数哈希使用:
git rev-parse --short=4 $(git log -1 --pretty=format:%h)
e4eetjau6#
tail /var/log/eb-activity.log | grep -i "\[Application update .*\] : Completed activity." | tail -1 | sed -E 's/.*Application update (.*)@.*/\1/'输出实际的应用版本ID,如app-2.15.0-31-gf4a2918。这可以在任何EB EC2内部工作,不需要API命中或git repo(有些是通过zip部署的)。用于发送最近部署的通知。
tail /var/log/eb-activity.log | grep -i "\[Application update .*\] : Completed activity." | tail -1 | sed -E 's/.*Application update (.*)@.*/\1/'
app-2.15.0-31-gf4a2918
bwntbbo37#
在PHP应用程序中,可以使用aws elasticbeanstalk describe-environments --environment-names <environment-name>您应该在php脚本中添加以下环境变量来使其工作。AWS_DEFAULT_REGION AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY我使用putenv()函数设置环境变量,使用shell_exec()函数获取json输出,解析json输出,获取实际应用程序版本VersionLabel。
aws elasticbeanstalk describe-environments --environment-names <environment-name>
AWS_DEFAULT_REGION AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY
putenv()
shell_exec()
VersionLabel
7条答案
按热度按时间xcitsw881#
至少对于Docker容器-您可以使用存储在
/opt/elasticbeanstalk/deploy/manifest
中的信息。qzlgjiam2#
我自己也在找解决办法。
至少目前,以下方法是可行的:
详细说明一下,
$EB_CONFIG_SOURCE_BUNDLE
包含了一个应用程序zip压缩包的路径(例如/opt/elasticbeanstalk/deploy/appsource/source_bundle
),version标签作为注解嵌入到这个文件中。bweufnob3#
综合来自@Georgij和@IanBlenke的答案,你可以找到这个版本。
1.最可靠(清单)
你可以
sudo cat /opt/elasticbeanstalk/deploy/manifest
{"运行时源":{"平台名称":{"应用程序-ae22 - 190115_152512 ":{" s3url":""}}},"部署ID ":45,"序列号":53}
2.您可以查看eb活动日志
其次你可以查看eb-activity日志。这只会在日志行中显示...你必须假设它也是一个成功的安装。
tail /var/log/eb-activity.log | grep -i "app-.*@"
gmxoilav4#
您可以使用AWS Elastic Beanstalk API检索应用程序版本信息。
Describe Application Versions返回现有应用程序版本的说明。
2vuwiymt5#
虽然最好的方法是直接询问AWS:
我有有限的成功推导相同的4或5位数哈希使用:
e4eetjau6#
tail /var/log/eb-activity.log | grep -i "\[Application update .*\] : Completed activity." | tail -1 | sed -E 's/.*Application update (.*)@.*/\1/'
输出实际的应用版本ID,如
app-2.15.0-31-gf4a2918
。这可以在任何EB EC2内部工作,不需要API命中或git repo(有些是通过zip部署的)。用于发送最近部署的通知。
bwntbbo37#
在PHP应用程序中,可以使用
aws elasticbeanstalk describe-environments --environment-names <environment-name>
您应该在php脚本中添加以下环境变量来使其工作。
AWS_DEFAULT_REGION AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY
我使用
putenv()
函数设置环境变量,使用shell_exec()
函数获取json输出,解析json输出,获取实际应用程序版本VersionLabel
。