2017-07-02 43 views
1

我正在部署使用Elastic Beanstalk Go Platform的應用程序。AWS Elastic Beanstalk option_settings具有實例ip的env變量

我需要爲實例的當前私有IP設置一個環境變量。(我需要這個環境變量是提供給我的應用程序本身,一旦它通過Procfile運行。)

在我.ebextensions/options.config文件我已經嘗試了一切,但沒有運氣尚未:

{ 
    "option_settings": [ 
    { 
     "namespace": "aws:elasticbeanstalk:application:environment", 
     "option_name": "PRIVATE_IP", 
     "value": { 
     "Fn::GetAtt": [ 
      "Ec2Instance", 
      "PrivateIp" 
     ] 
     } 
    } 
    ] 
} 

這個例子套PRIVATE_IP字面上整個Fn::GetAtt... json字符串。功能不解釋在option_settings?還有另外一種方法可以解決這個問題嗎?

回答

1

我不確切知道如何在.ebextensions中實現此解決方案,但AWS有一個特殊的URL http://169.254.169.254/latest/meta-data/,您可以使用它來請求此信息。檢查更多信息here。對於IP地址,您可以使用http://169.254.169.254/latest/meta-data/public-ipv4。這個URL檢查http的來源並回應你的實例的信息。

我想你可以配置你的YAML來做一個curl請求並獲取數據。但是,也許你不需要在部署時保存這些信息,因爲該URL在運行時可用於您的實例。您可以直接在您的代碼中提出此請求。

+0

私有IP也可用。爲此,您使用local-ipv4作爲資源名稱。 –

+0

Gustavo,謝謝。我知道那個端點,但是yaml並沒有實際執行curl。由於某些特定原因,我確實需要在應用程序第一次運行之前在env變量中使用ip。 – seanomlor

+0

該資源信息在Beanstalk的ebextensions中不可用,只有Cloudformation。要使用ip地址創建一個env變量,您必須從元數據中獲取env變量,然後發出container_command以使用本地安裝的aws cli進行更新。 –