簡體   English   中英

Django - AWS S3 存儲桶 - 顯示圖像/css 但不顯示 javascript/webfont 和文件上傳

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM