在 django 中从私有 s3 提供静态文件
Serving static files from private s3 in django
有没有办法从私有 s3 提供静态文件。我知道有很多教程(例如 https://simpleisbetterthancomplex.com/tutorial/2017/08/01/how-to-setup-amazon-s3-in-a-django-project.html)可以帮助您从 public 存储桶中提供静态文件。
我提供我的媒体文件。我得到一个签名 url ,它将在 120 秒后超时。我不能为静态文件获得类似的 url 吗?
如果这听起来很愚蠢,我很抱歉。
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...
但是我的静态文件...我没有签名 url(即它看起来像 https://bucketname.s3.us-east-2.amazonaws.com/Path/file_fileext/)
所以我得到了 403 禁止
注:
我的 bucket iam 用户有 AmazonS3FullAccess 权限
我的存储桶策略是空的
我的全部阻止 public 访问已开启
和
这是我的 cors 政策
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET",
"HEAD",
"POST",
"PUT",
"DELETE"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": [],
"MaxAgeSeconds": 3000
}
]
所以,最后,我能够做到这一点,并且由于关于这个主题的资源不多,所以决定在我的媒体上写一篇 post。这是 link:https://shrinidhinhegde.medium.com/how-to-serve-django-static-files-in-a-production-environment-from-a-private-s3-bucket-using-aee840a5a643
有没有办法从私有 s3 提供静态文件。我知道有很多教程(例如 https://simpleisbetterthancomplex.com/tutorial/2017/08/01/how-to-setup-amazon-s3-in-a-django-project.html)可以帮助您从 public 存储桶中提供静态文件。
我提供我的媒体文件。我得到一个签名 url ,它将在 120 秒后超时。我不能为静态文件获得类似的 url 吗?
如果这听起来很愚蠢,我很抱歉。
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... 但是我的静态文件...我没有签名 url(即它看起来像 https://bucketname.s3.us-east-2.amazonaws.com/Path/file_fileext/)
所以我得到了 403 禁止
注:
我的 bucket iam 用户有 AmazonS3FullAccess 权限
我的存储桶策略是空的
我的全部阻止 public 访问已开启
和
这是我的 cors 政策
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET",
"HEAD",
"POST",
"PUT",
"DELETE"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": [],
"MaxAgeSeconds": 3000
}
]
所以,最后,我能够做到这一点,并且由于关于这个主题的资源不多,所以决定在我的媒体上写一篇 post。这是 link:https://shrinidhinhegde.medium.com/how-to-serve-django-static-files-in-a-production-environment-from-a-private-s3-bucket-using-aee840a5a643