16

我在 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:”部分中找不到任何可能的引用。

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

4

1 回答 1

31

使用Fn::GetOptionSetting检索环境变量。环境变量在aws:elasticbeanstalk:application:environment 命名空间中

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

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

上面的配置文件将从/tmp/application.properties环境变量中引用的文件中创建包含内容的文件MY_ENVIRONMENT_VARIABLE

于 2017-12-14T16:06:33.393 回答