Env变量.ebextensions"files:"部分

Ber*_*enz 11 amazon-s3 amazon-web-services amazon-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 .
Run Code Online (Sandbox Code Playgroud)

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

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

Cha*_*hew 18

使用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
Run Code Online (Sandbox Code Playgroud)

请注意backtick执行命令替换的步骤.DefaultValueattribute是可选的,用于未找到环境变量的情况.

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

  • 我不敢相信它成功了!感谢您解释反引号。如果引用 YAML 语法,我还没有在 Elastic Beanstalk 中的任何地方看到该记录。 (2认同)