【问题标题】:Cannot create file inside Python on Amazon ElasticBeanstalk无法在 Amazon ElasticBeanstalk 上的 Python 内创建文件
【发布时间】:2018-03-20 10:29:19
【问题描述】:

我正在尝试在 Amazon ElasticBeanstalk WebServer 环境上的 Django 项目中创建一个文件。但是它给了我一个Permission Denied 错误。

这是错误。

Traceback (most recent call last):
  File "/opt/python/current/app/foo/boo.py", line 25, in create_file
    input_file = open(input_filename, "w")
IOError: [Errno 13] Permission denied: 'testing.txt'

提前致谢!

【问题讨论】:

    标签: python django amazon-elastic-beanstalk


    【解决方案1】:

    如果您想在 ElasticBeanstalk 上创建文件,可以,但不应该,您必须使用 amazon S3 服务和 boto3。

    但如果只是为了测试,您可以使用 .ebextensions 文件添加权限:

    .ebextensions/instance.config

    container_commands:
      # Permisson on deploy command
      0.0.0.files.chmod.ondeck:
        command: "chmod u+xwr -R /opt/python/ondeck/app"
      # Permisson on run dir
      0.0.1.files.chmod.run:
        command: "chmod u+xwr -R /opt/python/current/app"
    

    【讨论】:

    • 实际上,我已经在使用 S3 作为默认存储。但我需要处理一些视频并从这些视频中提取一些帧,所以我需要创建一些本地文件。无论如何,我决定使用Worker 来处理这个操作。谢谢!
    • 另一方面,不幸的是,这也没有解决我的问题:/但还是谢谢你@Aurelien
    【解决方案2】:

    我建议您为此在应用程序中创建一个文件夹。你可以在.ebextensions 文件夹中使用XX_permissions.config

    container_commands:
      01_change_my_folder_permissions:
        command: "mkdir -p /opt/python/current/app/my_folder; chmod 777 -R /opt/python/current/app/my_folder"
    

    如果文件夹不存在,该命令创建文件夹并设置权限。只需验证您的实例是否获得了使用 ssh 直接连接的正确权限。运行eb ssh [name-of-your-env],查看权限是否正常:

    ls -l /opt/python/current/app/
    

    您应该会在列表中看到您的文件夹具有类似drwxrwxrwx 的权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      • 2014-09-12
      • 2017-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-08
      相关资源
      最近更新 更多