0 votes
1 view
in AWS by (18.2k points)

I defined an environment variable called MY_ENVIRONMENT_VARIABLE in AWS Elastic Beanstalk's Software Configuration tab.

Now I would like to use this environment variable in the "files:" section of a .ebextensions config file.

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 .

It seems to be possible to reference environment variables in the "container_commands:" section (by using bash scripts) but I couldn't find any references that it is possible inside the "files:" section.

Does anybody have an example of how to use environment variables inside the "files:" section?

1 Answer

0 votes
by (42.4k points)

Use Fn::GetOptionSetting to retrieve environment variables. Environment variables are in 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

Note the backtick which performs the command substitution. DefaultValue attribute is optional, which is used in the case the environment variable is not found.

The above config file will create file /tmp/application.properties with content from the file referenced in environment variable MY_ENVIRONMENT_VARIABLE.

Welcome to Intellipaat Community. Get your technical queries answered by top developers !


Categories

...