如何使用 Elastic Beanstalk 实例 shell 中的环境变量?

1 分钟阅读
0

我想使用 AWS Elastic Beanstalk 实例 shell 中的环境变量。

简短描述

在 Elastic Beanstalk 中,操作系统不会显示环境变量。

要在环境变量设置为 Elastic Beanstalk 环境变量时将实用工具与操作系统中的环境变量一起使用,必须使用可将环境变量导出为操作系统变量的 .ebextension

以下解决方法显示了如何执行此操作:

1.    使用 get-config 实用工具读取您的 Elastic Beanstalk 环境变量。

2.    使用 jq 实用工具(可从 jq 网站获得)将 get-config 输出从 JSON 转换为 shell 变量。

3.    将变量保存在 /etc/profile.d/sh.local 文件中。Bash 将读取此文件以将变量导出到操作系统。

解决方法

1.    在应用程序源包中创建一个 .ebextension 文件,并包含以下内容:

commands:
    setvars:
        command: /opt/elasticbeanstalk/bin/get-config environment | jq -r 'to_entries | .[] | "export \(.key)=\"\(.value)\""' > /etc/profile.d/sh.local
packages:
    yum:
        jq: []

**注意:**第 1 步中的配置文件称为 setvars.config

2.    保存 .ebextension 文件,然后将其部署到 Elastic Beanstalk 环境中。

3.    要测试是否正在导出变量,请使用 SSH 连接到您的实例,然后运行以下命令。在测试之前,请关闭所有现存会话,然后使用 SSH 重新连接。

env | grep VARIABLE_NAME

**重要提示:**对于第 3 步,请将 VARIABLE_NAME 设置为在环境中定义的变量。

输出将显示您的环境变量是否设置正确。在以下示例输出中,在 Elastic Beanstalk 环境中定义了一个名为 RDS_PORT 的变量。

$ env|grep RDS_PORT
RDS_PORT=3306

注意:由于您使用的是 .ebextension 上的命令,因此只能使用新的部署更新 sh.local 文件。如果在环境中添加或更改变量,则必须在将变量导出到操作系统之前创建新部署。


AWS 官方
AWS 官方已更新 2 年前