如何在应用程序中获得Elastic Beanstalk应用程序版本?

时间:2013-11-11 16:24:49

标签: amazon-web-services elastic-beanstalk

我们希望能够在PHP代码中检索弹性beanstalk应用程序版本。我没有看到EB在任何服务器配置文件中将它传递给我们,我发现它很奇怪。有没有其他人知道我们怎么能得到这个?

7 个答案:

答案 0 :(得分:6)

至少对于Docker容器 - 您可以使用resize中存储的信息。

答案 1 :(得分:4)

我自己一直在寻找解决方案。

目前,至少,以下工作:

unzip -z "${EB_CONFIG_SOURCE_BUNDLE}" | tail -n1

详细说明,$EB_CONFIG_SOURCE_BUNDLE包含应用程序的zip存档的路径(即/opt/elasticbeanstalk/deploy/appsource/source_bundle)。版本标记作为注释嵌入此文件中。

答案 2 :(得分:2)

您可以使用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>

答案 3 :(得分:2)

巩固来自@Georgij和@IanBlenke的答案,这里是找到版本的方法。

1。最可靠(清单)

您可以sudo cat /opt/elasticbeanstalk/deploy/manifest

输出:

  

{“ RuntimeSources”:{“ PLATFORM_NAME”:{“ app-ae22-190115_152512”:{“ s3url”:“”}}},“ DeploymentId”:45,“ Serial”:53}

2。您可以查看eb活动日志

其次,您可以查看eb活动日志。这只会在日志行中显示。...您还必须假设它也已成功安装。.

tail /var/log/eb-activity.log | grep -i "app-.*@"

enter image description here

答案 4 :(得分:1)

虽然最好的办法是直接询问AWS:

aws elasticbeanstalk describe-environments  | \
    jq -r '.Environments | .[] | .EnvironmentName + " " + .VersionLabel'

使用以下方法推断相同的4位或5位哈希的成功有限:

git rev-parse --short=4 $(git log -1 --pretty=format:%h)

答案 5 :(得分:0)

在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这是实际的应用程序版本。

答案 6 :(得分:0)

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部署)。发送有关最近部署的通知很有用。