Назад | Перейти на главную страницу

AWS Elastic Beanstalk: получение URL-адреса среды из экземпляра?

Как я могу программно получить 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"