簡體   English   中英

Django/AWS - 調用 HeadObject 操作時發生錯誤(403):禁止

[英]Django/AWS - An error occurred (403) when calling the HeadObject operation: Forbidden

我正在嘗試設置我的 Django 項目以在 AWS S3 存儲桶上托管 static 圖像,但是當我嘗試通過 Django 管理面板上傳圖像時,我得到以下錯誤

在此處輸入圖像描述

這些是我在 Django 中的設置

AWS_ACCESS_KEY_ID = 'some_key' 
AWS_SECRET_ACCESS_KEY = 'some_key_aswell' 
AWS_STORAGE_BUCKET_NAME = 'bucket_name'

AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

AWS_S3_REGION_NAME = 'us-east-2' 

存儲桶的 Cors 策略設置

 [
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "POST",
            "PUT"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": []
    }
]

運行 Django 應用程序的機器(或容器)使用的 IAM 角色需要添加以下 IAM 策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
              "s3:GetObject",
            ],
            "Resource": "arn:aws:s3:::<bucket>/<prefix>/*"
        }
    ]
}

如果您的 object 已加密,請確保您還允許 IAM 角色使用用於加密 object 的 KMS 密鑰。

我過去並將 Bucket 策略更改為:

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "AllowPublicRead",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::YOUR-BUCKET-NAME/*"
        }
    ]
}

它奏效了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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