【问题标题】:Permissions issue with Flask app.config.from_envvar on AWS Elastic BeanstalkAWS Elastic Beanstalk 上的 Flask app.config.from_envvar 的权限问题
【发布时间】:2020-11-07 19:44:03
【问题描述】:

我正在尝试使用 Elastic Beanstalk 将 Flask 应用程序部署到 AWS EC2 linux 实例。在我的 app.py 中,我正在使用 app.config.from_envvar('FLASK_SETTINGS_FILE', silent=True) 加载特定于环境的配置。我正在设置环境。 EB Web 控制台中 Software 下的变量 FLASK_SETTINGS_FILE,值为 '/home/ec2-user/myappconfig/flask_sit.cfg'。在路径/home/ec2-user 处有一个文件夹myappconfig 包含flask_sit.cfg,并且该文件包含我的配置。当我部署应用程序时,我在 error_log 中得到以下信息:

Unable to load configuration file (Permission denied): '/home/ec2-user/myappconfig/flask_sit.cfg'

flask_sit.cfg 文件和myappconfig 文件夹的权限设置为所有用户均可读取。

我无法确定应该将 flask_sit.cfg 文件放在哪里。我无法在根文件夹 (/) 中创建文件夹。 Flask docs 仅使用示例路径 (/path/to/settings.cfg)。我做错了什么?


编辑: 感谢@marcin,我了解这个问题。所以这就是我最终决定做事的方式。在这里分享,FWIW:

  1. 使用我的 ec2-user 密钥通过 SSH 连接到远程服务器。
  2. 导航到文件系统根文件夹 (/)。使用sudo mkdir myappconfig,创建了一个文件夹。
  3. 使用sudo chown -R ec2-user myappconfig,使 ec2-user 成为文件夹的所有者。
  4. 然后在我的本地 Windows 计算机上打开命令提示符并导航到我拥有配置文件本地副本的文件夹 (flask_sit.cfg)。
  5. 使用 scp 将文件从本地文件夹传输到远程文件夹。 scp -i ~/.ssh/<my key name> flask_sit.cfg ec2-user@<remoteServerIP>:/myappconfig
  6. 部署应用程序。没有更多错误。
  7. 接下来的步骤,一旦我确定了应用程序在哪个用户下运行,我就会将该用户的权限更改为只读。

【问题讨论】:

    标签: python amazon-web-services flask amazon-elastic-beanstalk


    【解决方案1】:

    您的应用在webapp 用户下执行。随后,它将无权访问/home/ec2-user 文件夹。

    您可以尝试将配置文件存储在不同的位置,例如/home/webapp 或在您当前的应用程序文件夹中。

    【讨论】:

    • 谢谢,@marcin。我没有想到这一点。但我确实有一些后续问题: 1. 我已将/home/ec2-user/myappconfig/flask_sit.cfg 的权限更改为所有用户都可以阅读。那还是没有用吗?
    • 2.我查看了etc/passwd 文件以查看用户列表。没有名为webapp 的用户。有没有办法检查我的应用程序在哪个用户下运行?我在该列表中看到了可能的替代方案,例如 wsgi 和 apache,但我不确定正在使用哪个。
    • 3.一旦我弄清楚用户,我假设我将无法访问 /home/<user> 文件夹,对吧?如何将我的配置文件夹+文件放在该路径?
    • @VRA 嗨。您使用chmod -R 777 ec2-ec2-user 更改权限,但它不是很好的用户。您可以使用top 或类似工具来检查进程及其用户。另一个问题更适合作为新的 SO 问题。在 cmets 中回答太多了。如果当前答案有用,我们将不胜感激。
    猜你喜欢
    • 2014-12-30
    • 2020-11-10
    • 2018-11-01
    • 2019-08-11
    • 2014-10-19
    • 2021-05-16
    • 2020-12-31
    • 2017-12-30
    • 2016-03-08
    相关资源
    最近更新 更多