Amazon-Ec2

是否可以從 EC2 實例獲取有關 Elastic Beanstalk 環境的元數據

  • October 22, 2019

我希望能夠從我的 EC2 實例中提取有關目前彈性 beanstalk 環境的資訊,以便我可以將此資訊包含在從我的伺服器發送的錯誤電子郵件中。

例如,知道目前環境的名稱和部署程式碼的版本標籤都會很有用。有誰知道以程式方式執行此操作?我知道已經有一個用於檢索 EC2 資訊的 API,例如公共主機名和 AMI-id 等,但我找不到彈性 beantalk 的任何內容。

目前我的解決方案是手動設置一些我的應用可以讀取的環境變數,但顯然這很麻煩。

我已經想通了。對於那些好奇的人:

我可以通過http://169.254.169.254/latest/meta-data/. 特別是我想要我的 EC2 實例 ID

我可以通過describe-environments確定我所有 beanstalk 環境的列表

對於我可以執行的每個環境describe-environment-resources。這個呼叫返回一個實例列表,我可以匹配目前實例的實例 ID。因此我可以找出我的環境名稱。

最後,我可以參考 的結果describe-environments來確定目前部署程式碼的版本標籤。

在我可以做任何這些之前,我需要配置我的 ec2 實例以訪問彈性 beanstalk 資訊。我可以通過將正確的訪問策略分配給與我的 ec2 實例關聯的角色,並再次通過實例元數據獲取身份驗證資訊來做到這一點http://169.254.169.254/latest/meta-data/

由於我使用的是 pythonboto庫,所以我上面描述的所有操作都已經有預烘焙的庫函式來為我執行它們。

我還沒有編碼,但如果我能讓它工作,我會在這裡發布一個截圖

編輯 工作程式碼

引用自:https://serverfault.com/questions/630075