从 Beanstalk 实例中,我如何以编程方式检索我的环境的 URL?
我需要知道这一点,因为实例需要知道它们是在生产中运行还是
我无法使用平台脚本/opt/elasticbeanstalk/bin/get-config ...
或实例元数据找到它curl http://169.254.169.254/latest/...
。
答案1
据我所知,您只能从 Elastic Beanstalk API 获取此信息,如下所示;
aws elasticbeanstalk describe-environments \
--region <your-region> \
--environment-names <your-environment-name> \
--query "Environments[0].CNAME"
以上将输出;
"your-eb-cname.aws-region.elasticbeanstalk.com"
答案2
感谢@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=Eleastic Beanstalk、Actions=DescribeEnvironments、Resources=All resources。完成创建策略。
并且,这要求我们知道当前实例所在的环境 ID。但我们甚至可以通过编程找到它/etc/elasticbeanstalk/.aws-eb-stack.properties
(需要 root 访问权限)。
因此,.ebextensions
我们现在可以在部署脚本中对此采取行动。