django-storages を使用して静的ファイルを AWS S3 にアップロードしています。チュートリアルに従って、管理ページの静的ファイルを正常にアップロードおよび取得できました。
次に、django プロジェクトに静的ディレクトリを作成し、いくつかのブートストラップ ファイルを追加して、collectstatic を実行しました。ブートストラップ ファイルがすべて S3 バケットに正常に保存されたことがわかります。ただし、アプリを (ローカルと Heroku の両方で) 実行しようとすると、ブートストラップ ファイルが get 403 禁止エラーで失敗します。
管理ファイルは同じ S3 バケット内の管理フォルダーに保存され、問題なく取得されます。この不一致の原因は何ですか? 私はs3が初めてなので、おそらくそこで何か間違ったことをしています。
AWS キーが機能していることを確認しました。
私のsettings.pyは次のとおりです:
AWS_STORAGE_BUCKET_NAME = 'punchline-app'
AWS_PRELOAD_METADATA = True
STATIC_ROOT = ''
STATIC_URL = 'https://punchline-app.s3.amazonaws.com/static/'
ADMIN_MEDIA_PREFIX = 'https://punchline-app.s3.amazonaws.com/static/admin/'
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
os.path.join(PROJECT_DIR,"static"),
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)