【问题标题】:Elastic Beanstalk .config file on VCS?VCS 上的 Elastic Beanstalk .config 文件?
【发布时间】:2017-04-11 14:03:29
【问题描述】:

我正在使用 AWS Elastic Beanstalk 部署 Laravel 应用程序,并创建了一个文件夹 .ebextensions 来存储我的所有 .config 文件。

该项目在使用 GIT 的 VCS 下,我不确定是否要将 .config 添加到存储库,因为它包含我的一些凭据。

.config 文件是否可以移动到 s3 并用于部署?

【问题讨论】:

  • 您的 .config 文件应该在 VCS 中以 snippets 的形式提供 - 当然缺少您的凭据。凭证应该从不存储在任何地方,并且一次只存在于一个给定的位置,没有重复。但是,没有凭据的参数很少成为问题。
  • 好的,我已将没有凭据的 .config 文件放入 VCS,我需要创建一个包含我的凭据的文件。我将如何在 EB 中做到这一点?
  • 我不确定snippets是什么意思
  • 最简单的方法是在弹性 beanstalk 环境中设置环境变量,然后您可以通过配置文件中的变量访问这些变量。
  • 是的,我已经这样做了,但我仍然需要在我的根应用程序文件夹中创建一个带有这些凭据的 .env 文件,因为它基于 Laravel 框架,所以我的应用程序才能工作。

标签: git laravel amazon-web-services amazon-elastic-beanstalk


【解决方案1】:

在 Elastic beanstalk 控制台中

配置 > 软件配置 > 环境属性

你会看到这样的屏幕

你可以在这里填写你的环境变量。

这意味着您无需在.config 文件中设置环境变量,也无需将.env 文件提交到VCS。

输入控制台的环境变量被复制到弹性 beanstalk 在该应用程序/环境中为您管理的任何 EC2 框。

Laravel 中的 .env 文件旨在促进开发,因此不应在生产中使用。该文件中的任何内容都应创建为真正的环境变量,并且不需要存在 .env 文件。

.env 文件(通过 phpdotenv)只是在运行时创建环境变量,如果环境变量实际上已经存在,则不需要这样做。

【讨论】:

    【解决方案2】:

    切勿将凭据和其他机密信息放入 VCS/Git。

    理想情况下,您可以将您的机密信息放在某种“保险库”中,您的 EB 应用程序将在运行时访问该“保险库”,因此永远不会存储信息本身。但是,有时这是不可能的/不切实际的。

    对于 Elastic Beanstalk,您可以执行以下操作:

    1. .ebextenions 中创建您的.config 文件。
    2. 将您的秘密/凭据设置添加到配置文件中,并使用“更改我”之类的值。
    3. 将应用程序部署到 Elastic Beanstalk 后,修改应用程序的配置“软件”设置,并将设置的值从“更改我”更改为适当的值。

    【讨论】:

    • Laravel 运行所需的所有凭据都在 .env 文件中,每次我使用 eb deploy 命令时,它都会被删除,因为它不在 VCS 下。如果我这样做,我将不得不 ssh 进入实例并每次更新我的凭据。我可以将我的凭据放入 config.yml 或任何其他地方,以便在每次更新时自动执行此过程。
    • 没有。数据仍将在 Git 中,这是您要避免的。尝试将您的信息放入由 EB 控制的环境变量中。然后当您的应用程序启动时,将信息从那里传输到您的.env 文件。
    • 我想作为@ben-swinburne 点,我可以从控制台将凭据保存在 Elastic Beanstalk 配置中。
    • 通过将它们放入.ebextensions 文件中,它们的设置名称将被预先添加到您的 EB 应用程序属性页面中。
    猜你喜欢
    • 2014-06-02
    • 2017-09-24
    • 2012-07-05
    • 2015-04-06
    • 2013-08-15
    • 2021-11-16
    • 2020-11-14
    • 2020-05-30
    • 2017-06-14
    相关资源
    最近更新 更多