【问题标题】:Serving static files from private s3 in django在 django 中从私有 s3 提供静态文件
【发布时间】:2021-07-07 00:56:27
【问题描述】:

有没有办法从私有 s3 提供静态文件。我知道有很多教程(例如https://simpleisbetterthancomplex.com/tutorial/2017/08/01/how-to-setup-amazon-s3-in-a-django-project.html)可以帮助您从公共存储桶中提供静态文件。

我提供我的媒体文件。我得到一个签名的 url,它将在 120 秒后超时。我不能得到一个类似的静态文件的网址吗?

如果这听起来很愚蠢,我很抱歉。

STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'assets'),]

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

DEFAULT_FILE_STORAGE ='storages.backends.s3boto3.S3Boto3Storage'

AWS_ACCESS_KEY_ID = "***************"

AWS_SECRET_ACCESS_KEY ="**********"

AWS_STORAGE_BUCKET_NAME = "*********"

AWS_S3_REGION_NAME = 'us-east-2'

AWS_S3_SIGNATURE_VERSION = 's3v4'

AWS_DEFAULT_ACL = None

AWS_QUERYSTRING_EXPIRE = 120

AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME

AWS_LOCATION = 'static'

STATIC_URL = 'https://%s/%s/' % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)

STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

这是我的 settings.py 和

我的媒体文件......当我查询它时,我得到一个签名的网址...... 但我的静态文件......我没有得到签名的 url(即它看起来像 https://bucketname.s3.us-east-2.amazonaws.com/Path/file_fileext/)

所以我得到了 403 禁止

注意:

我的存储桶 iam 用户拥有 AmazonS3FullAccess 权限

我的存储桶策略是 EMPTY

我的所有公共访问权限都已开启

与

这是我的 cors 政策

[

{

"AllowedHeaders": [

"*"

],

"AllowedMethods": [

"GET",

"HEAD",

"POST",

"PUT",

"DELETE"

],

"AllowedOrigins": [

"*"

],

"ExposeHeaders": [],

"MaxAgeSeconds": 3000

}

]

【问题讨论】:

  • 你可以用 django-storages 做到这一点。 (我愿意)。通读这个问题,应该是一个好的开始; stackoverflow.com/questions/59437637/…
  • @markwalker_ 我不是在谈论媒体存储。我正在使用 django 存储。我在问关于从私有存储桶访问静态文件

标签: django amazon-s3 django-staticfiles


【解决方案1】:

所以,最后,我能够做到这一点,因为关于这个主题的资源并不多,所以决定在我的媒体上写一篇文章。这是链接:https://shrinidhinhegde.medium.com/how-to-serve-django-static-files-in-a-production-environment-from-a-private-s3-bucket-using-aee840a5a643

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-19
    • 2012-05-09
    • 2012-10-29
    • 1970-01-01
    • 2013-02-20
    • 2014-07-25
    • 2020-05-23
    • 2013-12-27
    相关资源
    最近更新 更多