Env变量.ebextensions“files:”部分

时间:2017-08-16 14:01:05

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

我在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:”部分内的引用。

有没有人在“files:”部分中有一个如何使用环境变量的例子?

1 个答案:

答案 0 :(得分:15)

使用Fn::GetOptionSetting来检索环境变量。环境变量位于aws:elasticbeanstalk:application:environment namespace

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