【发布时间】:2023-02-10 09:17:14
【问题描述】:
我正在使用 Laravel 9 编写 API,并使用 AWS Secrets Manager 获取数据库密码等机密信息。我不能把它写在 .env 中,因为每隔 4 小时左右,密码就会更改,所以我需要从 AWS 中提取新密码。所以 config:cache 不是一个选项,因为在生产中重新运行 config:cache 将删除 bootstrap/cache/config.php 文件,这使得数据库在创建新文件之前不可用。这可能只需要几秒钟,但这对于 API 来说是不可接受的。
我试图覆盖 config:cache 命令但不删除旧文件而是创建一个临时文件加载所有密钥然后通过将新文件移动到正确的位置来替换旧文件。我的计划是通过 cron 作业每小时配置一次缓存。但是只要文件没有被删除,laravel 就拒绝读取配置文件夹中的文件,并拒绝从其他地方获取配置。
是否有推荐的方法来保存此类密码/密钥。这可能是一个完全不同的方法,我只需要一些有用的东西,而不是超级 hacky。感觉就像互联网上的每个人都将他们的密钥放在 .env 中并在部署时缓存它们并且对此感到满意:D
【问题讨论】:
标签: laravel configuration laravel-artisan .env