在 Beanstalk 实例中,如何以编程方式检索我的环境的 URL?
我需要知道这一点,因为实例需要知道它们是在生产中运行还是在
我无法使用平台脚本/opt/elasticbeanstalk/bin/get-config ...
或实例元数据与curl http://169.254.169.254/latest/...
.
在 Beanstalk 实例中,如何以编程方式检索我的环境的 URL?
我需要知道这一点,因为实例需要知道它们是在生产中运行还是在
我无法使用平台脚本/opt/elasticbeanstalk/bin/get-config ...
或实例元数据与curl http://169.254.169.254/latest/...
.
据我所知,您只能从 Elastic Beanstalk API 获得此信息,如下所示;
以上将输出;
感谢@dannosaur 的提示,我找到了解决方案。我会发布一个新的答案,因为还有很多要提到的。
Elastic Beanstalk 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"
但是,要使其正常工作,我们需要向与 EC2 实例关联的 IAM 角色授予额外权限。因此,请转到 IAM > 角色 > aws-elasticbeanstalk-ec2-role > 添加内联策略。选择以下选项:Service=Elelastic Beanstalk、Actions=DescribeEnvironments、Resources=All 资源。完成创建策略。
而且,这需要我们知道当前实例所在的环境 ID。但我们甚至可以通过编程方式找到它
/etc/elasticbeanstalk/.aws-eb-stack.properties
(需要 root 访问权限)。因此,通过使用
.ebextensions
我们现在可以在我们的部署脚本中对此采取行动。