【问题标题】:AWS Elastic Beanstalk option_settings env variable with instance ipAWS Elastic Beanstalk option_settings 环境变量与实例 ip
【发布时间】:2017-07-02 11:45:26
【问题描述】:

我正在使用Elastic Beanstalk Go Platform 部署应用程序。

我需要为实例的当前私有 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 中没有解释函数吗?有没有其他方法可以解决这个问题?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-elastic-beanstalk


    【解决方案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 在运行时可用于您的实例。您可以直接在代码中提出此请求。

    【讨论】:

    • 私网IP也可用。为此,您使用 local-ipv4 作为资源名称。
    • 古斯塔沃,谢谢。我知道那个端点,但 curl 实际上并没有在 yaml 中执行。由于某些特定原因,我确实需要在应用程序首次运行之前在 env 变量中提供可用的 ip。
    • 该资源信息在 Beanstalk 的 ebextensions 中不可用,只有 Cloudformation。要使用 ip 地址创建环境变量,您必须从元数据中获取它,然后使用本地安装的 aws cli 发出 container_command 来更新它。
    猜你喜欢
    • 2015-08-05
    • 2018-05-12
    • 2016-12-10
    • 2018-04-27
    • 2012-12-13
    • 2017-12-16
    • 2017-02-28
    • 2019-03-03
    • 2021-02-07
    相关资源
    最近更新 更多