0

考虑以下文件:

APP_ENV=production
APP_NAME=Some API <- This line HERE
RDS_DB_PASSWORD=Some_Strong_Password
// etc...

此文件由 AWS Elastic Beanstalk 为我的环境自动生成,即我无法控制内容的格式。

当应用程序运行时,它会在内部传递环境变量,这工作正常。但是,当我尝试运行如下 Laravel 命令时,它不会转义每个变量的内容:

export $(sudo cat /opt/elasticbeanstalk/deployment/env) && sudo -E -u webapp php artisan some-command

结果,该值Some API被传递,Some因为它没有被引号包裹。

有没有办法在此文件中的第一个值之后插入引号=,然后将它们传递给我的网络应用程序?或者,我是否错误地运行了我的命令?鉴于这是 Laravel 特定的,没有关于如何在运行 Amazon Linux 2 的 Elastic Beanstalk 上运行 Laravel 命令的文档。

4

1 回答 1

0

我设法通过在应用程序部署时将变量导出到我的配置文件来解决这个问题,如下所示:

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

请参阅此处的参考。

于 2021-03-05T08:34:22.690 回答