![](/img/trans.png)
[英]AWS S3: image is uploading to bucket but file is not showing in heroku Django
[英]Django - AWS S3 Bucket - Showing images/css but not javascript/webfont and file uploads
我正在使用 django 制作投資組合網站。 一切都在我的本地機器上運行良好。 我決定使用 AWS S3 存儲桶來托管我的 static 文件。 在學習了一些教程之后,我能夠制作一個存儲桶並鏈接我的帳戶。 我現在遇到的問題是圖像和 css 在我的網站上加載正常,但是 webfonts 和 javascript 文件似乎不起作用。 我也有一個鏈接可以下載我的簡歷,但這不起作用。 單擊文件時,它給我一個錯誤:
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
<Key>resume.pdf</Key>
<RequestId>xxx</RequestId>
<HostId>xxx</HostId>
</Error>
有趣的是,瀏覽器中的 url 似乎正試圖從 AWS 中提取。
當我將 go 放入 S3 存儲桶時,我看到所有可用文件。 在我的網站上打開圖像時,它們正確地從 AWS 中提取。
我的 CORS 設置為:
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET",
"POST",
"PUT"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": []
}
]
settings.py 是:
AWS_S3_REGION_NAME = 'us-east-2' # Your region name
AWS_S3_SIGNATURE_VERSION = 's3v4'
AWS_S3_ADDRESSING_STYLE = "virtual"
AWS_ACCESS_KEY_ID = 'xxx'
AWS_SECRET_ACCESS_KEY = 'xxx'
AWS_STORAGE_BUCKET_NAME = 'xxx'
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
有什么我錯過的東西不會讓我的 js/webfonts/文件在我的網站上工作嗎?
好的,我找到了解決方案。 看起來 S3 沒有提供存儲桶訪問權限。 我將 AWS S3 上的存儲桶策略編輯為以下內容:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucketname/*"
}
]
}
將存儲桶名稱替換為您的實際存儲桶名稱。 希望這可以幫助任何可能遇到此問題的人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.