Мы хотим получить версию приложения с эластичным beanstalk в нашем PHP-коде. Я не вижу, чтобы EB передавал его нам в любых конфигурационных файлах сервера, которые мне кажутся странными. Кто-нибудь еще знает, как мы можем это получить?
Как вы можете получить версию приложения Elastic Beanstalk в своем приложении?
Ответ 1
По крайней мере для контейнеров Docker - вы можете использовать информацию, хранящуюся в /opt/elasticbeanstalk/deploy/manifest
.
Ответ 2
Я только что искал решение.
Пока, по крайней мере, следующие работы:
unzip -z "${EB_CONFIG_SOURCE_BUNDLE}" | tail -n1
Чтобы разработать, $EB_CONFIG_SOURCE_BUNDLE
содержит путь к zip-архиву вашего приложения (т.е. /opt/elasticbeanstalk/deploy/appsource/source_bundle
). Тег версии встроен как комментарий в этот файл.
Ответ 3
Вы можете использовать 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>
Ответ 4
В то время как лучший способ - действительно спросить AWS напрямую:
aws elasticbeanstalk describe-environments | \
jq -r '.Environments | .[] | .EnvironmentName + " " + .VersionLabel'
У меня был ограниченный успех, выведя один и тот же 4-х или 5-значный хэш с помощью:
git rev-parse --short=4 $(git log -1 --pretty=format:%h)
Ответ 5
В приложении PHP вы можете получить его с помощью
aws elasticbeanstalk describe-environments --environment-names <environment-name>
Вы должны добавить следующие переменные среды в php script, чтобы заставить его работать.
AWS_DEFAULT_REGION
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
Я использовал функцию putenv()
, чтобы установить переменные среды и shell_exec()
, чтобы получить выход json. Разработал вывод json, чтобы получить VersionLabel
, которая является реальной версией приложения.
Ответ 6
Консолидируя ответы @Georgij и @IanBlenke, вы сможете найти версию.
1. Самый надежный (Манифест)
Вы можете sudo cat/opt/elasticbeanstalk/deploy/manifest
Выход:
{ "RuntimeSources": { "PLATFORM_NAME": { "app- ae22-190115_152512": { "s3url": ""}}}, "DeploymentId": 45, "Последовательный": 53}
2. Вы можете посмотреть журналы eb-активности
Во-вторых, вы можете посмотреть журналы активности. Это покажет вам только в строке журнала... Вы должны предположить, что это также была успешная установка..
tail/var/log/eb-activity.log | grep -i "app-.*@"
Ответ 7
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
в нашем случае.
Это работает внутри любого EB EC2, не требует использования API или git-репо (некоторые развертываются с помощью zip). Полезно для отправки уведомления о недавнем развертывании.