【问题标题】:Django + Heroku + S3Django + Heroku + S3
【发布时间】:2012-09-27 19:31:22
【问题描述】:

我一直在尝试研究如何让 AWS S3 与 Heroku 一起用于 FileField 和 ImageField 上传。但我一直未能让它工作。

计划是

  1. 使用 FileField 上传一些文件。
  2. 将 ImageField 用于个人资料图片。
  3. 使用 Sorl 缩略图调整这些图片的大小。

我关注了this 文章,但它似乎不起作用。 有什么我想念的吗? 我想要文件上传,尽可能轻松。有没有比 AWS 对 django 和 heroku 更友好的更好选择?在这方面的任何帮助将不胜感激。

【问题讨论】:

    标签: django heroku amazon-s3


    【解决方案1】:

    使用Django Storages 管理 S3 上的静态文件。然后关注Heroku Static assets guide when deploying。

    首先,使用 AWS 控制台或您喜欢的工具在 S3 中创建一个存储桶。然后,修改您的 settings.py 并添加以下值:

    import os
    
    AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID')
    AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
    AWS_STORAGE_BUCKET_NAME = '<YOUR BUCKET NAME>'
    
    STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
    DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
    
    STATIC_URL = 'http://' + AWS_STORAGE_BUCKET_NAME + '.s3.amazonaws.com/'
    ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'
    

    请注意,我们使用环境变量来存储 AWS 访问密钥和秘密密钥。当我们讨论这个主题时,如果您打算开源您正在部署的 Django 应用程序,请考虑将您的 SECRET_KEY 存储在环境变量中。

    以上来自here

    【讨论】:

    • 这太棒了!谢啦!您可能唯一需要注意的是,由于这种方法是 Boto,所以任何使用这种方法的人都必须安装 Boto。不过,我确实有另一个问题要问你。如何向其中添加访问控制策略 = public-read?我尝试在 settings.py 中添加 acl='public-read' 但这似乎不起作用
    • 我只是希望谷歌文档查看器能够访问我上传的文件。有没有办法做到这一点?
    • 也许aws.amazon.com/s3/faqs/… 应该有帮助?
    • 问题远不止于此。我所要做的就是用户 urlencode :) 很抱歉给您带来麻烦。
    猜你喜欢
    • 2013-07-31
    • 2019-10-11
    • 2013-03-29
    • 2018-08-24
    • 1970-01-01
    • 2013-10-06
    • 2012-06-11
    • 2014-04-17
    • 2017-07-29
    相关资源
    最近更新 更多