【问题标题】:Env Variable in .ebextensions "files:" section.ebextensions“文件:”部分中的环境变量
【发布时间】:2018-01-24 17:19:10
【问题描述】:

我在 AWS Elastic Beanstalk 的软件配置选项卡中定义了一个名为 MY_ENVIRONMENT_VARIABLE 的环境变量。

现在我想在 .ebextensions 配置文件的“files:”部分使用这个环境变量。

Resources:
  AWSEBAutoScalingGroup:
    Metadata:
      AWS::CloudFormation::Authentication:
        S3Auth:
          type: S3
          buckets: arn:aws:s3:::SomeS3Bucket
          roleName: aws-elasticbeanstalk-ec2-role

files:
  "/tmp/application.properties" :
    mode: "000644"
    owner: root
    group: root
    source: { "Ref" : "MY_ENVIRONMENT_VARIABLE" }
    authentication: S3Auth

container_commands:
  01-apply-configuration:
    command: mv /tmp/application.properties .

似乎可以在“container_commands:”部分中引用环境变量(通过使用 bash 脚本),但我在“files:”部分中找不到任何可能的引用。

有没有人有关于如何在“文件:”部分中使用环境变量的示例?

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-elastic-beanstalk ebextensions


    【解决方案1】:

    使用Fn::GetOptionSetting 检索环境变量。环境变量在aws:elasticbeanstalk:application:environmentnamespace

    files:
      "/tmp/application.properties" :
        mode: "000644"
        owner: root
        group: root
        source: '`{"Fn::GetOptionSetting": {"Namespace": "aws:elasticbeanstalk:application:environment", "OptionName": "MY_ENVIRONMENT_VARIABLE", "DefaultValue": "file_path"}}`'
        authentication: S3Auth
    

    注意执行命令替换的backtickDefaultValue 属性是可选的,在没有找到环境变量的情况下使用。

    以上配置文件将创建文件/tmp/application.properties,其内容来自环境变量MY_ENVIRONMENT_VARIABLE中引用的文件。

    【讨论】:

    • 请勿通过传递您的应用程序和环境名称来更改“aws:elasticbeanstalk:application:environment”。保持原样。它足够聪明,可以了解它的运行位置,并将使用您在环境配置中提供的环境变量。
    • 嗨,我试过这个命令来获取我的 filebeat 配置文件中的环境变量的值。但是,filebeat 服务失败。 Filebeat 配置文件为 .yml 格式。这是否意味着我必须更改语法?这是我的问题:stackoverflow.com/questions/66686237/…
    • 我不敢相信它成功了!感谢您解释反引号。如果引用 YAML 语法,我还没有看到 Elastic Beanstalk 中的任何地方记录。
    猜你喜欢
    • 2018-09-12
    • 2023-03-26
    • 2023-03-26
    • 2017-07-21
    • 2021-11-25
    • 2016-03-05
    • 2019-12-21
    • 2021-03-13
    • 2017-03-06
    相关资源
    最近更新 更多