Как я могу программно получить URL-адрес моей среды из экземпляра Beanstalk?
Мне нужно это знать, потому что экземпляры должны знать, запущены ли они в производстве или
Я не мог найти его с помощью скриптов платформы /opt/elasticbeanstalk/bin/get-config ...
или метаданные экземпляра с curl http://169.254.169.254/latest/...
.
Благодаря подсказкам @dannosaur я нашел решение. Я отправлю новый ответ, так как есть еще много чего упомянуть.
Команда API эластичного бобового стебля aws elasticbeanstalk describe-environments --region <your-region> --environment-id <your-environment-id>
дает много полезной информации. Или оставьте --environment-id
описать все ваше окружение. Чтобы получить конкретный URL-адрес, мы можем:
aws elasticbeanstalk describe-environments --region us-east-2 --environment-id e-sfmsdjhtwn --query "Environments[0].CNAME"
Но, чтобы это сработало, нам нужно предоставить дополнительное разрешение роли IAM, связанной с экземпляром EC2. Итак, перейдите в IAM> Roles> aws-elasticbeanstalk-ec2-role> Add inline policy. Выберите следующее: Service = Eleastic Beanstalk, Actions = DescribeEnvironments, Resources = All resources. Завершите создание политики.
А также, для этого нам необходимо знать идентификатор среды, в которой находится наш текущий экземпляр. Но мы даже можем найти его программно в /etc/elasticbeanstalk/.aws-eb-stack.properties
(требуется root-доступ).
Итак, с использованием .ebextensions
Теперь мы можем действовать в соответствии с этим в наших сценариях развертывания.
Насколько мне известно, вы можете получить это только из API эластичного бобового стебля следующим образом:
aws elasticbeanstalk describe-environments \
--region <your-region> \
--environment-names <your-environment-name> \
--query "Environments[0].CNAME"
Вышеупомянутое будет выводить;
"your-eb-cname.aws-region.elasticbeanstalk.com"