问题
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:
Use Fn::GetOptionSetting to retreive 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 perform the command substitution. DefaultValue
attribute is optional, which is used in case environment variable is not found.
Above config file will create file /tmp/application.properties
with content from the file referenced in environment variable MY_ENVIRONMENT_VARIABLE
.
来源:https://stackoverflow.com/questions/45715675/env-variable-in-ebextensions-files-section