【发布时间】:2022-01-18 05:27:39
【问题描述】:
url.com/:9 GET https://<AWS_STORAGE_BUCKET_NAME>.s3.amazonaws.com/static/user/main.css net::ERR_ABORTED 403 (Forbidden)
url.com 是实际站点,AWS_STORAGE_BUCKET_NAME 是存储桶名称
当我尝试从我的 base.html 检索我的 S3 文件时,我在控制台中收到 403 禁止错误。
<link rel="stylesheet" href="{% static 'user/main.css' %}" type="text/css">
Settings.py
# All of this is in my console.aws.amazon to configure aws s3 static files only
# IAM Management Console
AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
# Amazon S3 Buckets
AWS_STORAGE_BUCKET_NAME = os.environ.get('AWS_STORAGE_BUCKET_NAME')
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
AWS_S3_OBJECT_PARAMETERS = {
'CacheControl': 'max-age=86400',
}
AWS_LOCATION = 'static'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'pages/static'),
]
STATIC_URL = 'https://%s/%s/' % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)
# For some reason I needed static root to collectstatistics
# STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('pages.urls')),
path('accounts/', include('django.contrib.auth.urls')),
]
【问题讨论】:
-
您好,您的 S3 存储桶是公开的吗?
-
目前不公开。我有阻止公共访问权限。
-
我所做的是 base.html 的静态文件和登录帐户的单独文件。
-
过去我遇到了私有存储桶的问题,我在这里解决了aws.amazon.com/premiumsupport/knowledge-center/…
-
你试过加
AWS_S3_SIGNATURE_VERSION = "s3v4"吗?
标签: django amazon-web-services heroku