14

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

4

7 回答 7

7

至少对于 Docker 容器 - 您可以使用存储在/opt/elasticbeanstalk/deploy/manifest.

于 2017-05-24T14:32:33.587 回答
4

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

目前,至少,以下工作:

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

详细地说,$EB_CONFIG_SOURCE_BUNDLE它包含指向您的应用程序的 zip 存档的路径(即/opt/elasticbeanstalk/deploy/appsource/source_bundle)。版本标签作为注释嵌入在该文件中。

于 2014-01-16T16:01:49.847 回答
4

合并来自@Georgij 和@IanBlenke 的答案是您可以找到该版本的方法。

1.最可靠(清单)

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

输出:

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

2.您可以查看 eb-activity 日志

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

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

在此处输入图像描述

于 2019-01-15T16:06:19.017 回答
2

您可以使用AWS Elastic Beanstalk API来检索您的应用程序版本信息。

描述应用程序版本返回现有应用程序版本的描述。

样品请求

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>
于 2013-12-26T06:28:52.277 回答
1

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

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

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

git rev-parse --short=4 $(git log -1 --pretty=format:%h)
于 2015-05-20T20:37:35.280 回答
1

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

于 2019-01-17T21:21:01.163 回答
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实际应用程序版本。

于 2017-05-19T04:13:38.690 回答