是否有可能从EC2实例获取关于Elastic Beanstalk环境的元数据

我希望能够从EC2实例中提取有关当前弹性beanstalk环境的信息,以便将这些信息包含在从我的服务器发送的错误电子邮件中。

例如,了解当前环境的名称以及部署代码的版本标签都是有用的。 有没有人知道以编程方式做这个? 我知道已经有一个用于检索EC2信息的API,例如public hostname和AMI-id等等,但是我找不到弹性beanstalk的东西。

目前我的解决scheme是手动设置一些我的应用可以读取的环境variables,但显然这很麻烦。

我已经想出了一些东西。 对于那些你好奇的人:

我可以通过http://169.254.169.254/latest/meta-data/获取EC实例信息。 特别是我想要我的EC2实例ID

我可以通过描述环境来确定我所有beanstalk环境的列表

对于每个环境我都可以运行describe-environment-resources 。 这个调用返回一个实例列表,我可以匹配当前实例的实例ID。 因此我可以弄清楚我的环境名称。

最后,我可以参考describe-environments的结果来为当前部署的代码确定一个版本标签。

在我可以做任何这些之前,我需要configuration我的ec2实例来访问弹性beanstalk信息。 我可以通过将正确的访问策略分配给与我的ec2实例相关联的angular色并获取身份validation信息,再次通过实例元数据http://169.254.169.254/latest/meta-data/

由于我正在使用Python boto库,所以我上面介绍的所有操作都已经有了预先烘焙的库函数来执行它们。

GUH

我还没有编码它,但是如果我能把它起作用,我会在这里发表

编辑工作代码