簡體   English   中英

AWS S3 Boto3 Python - 調用 DeleteObject 操作時發生錯誤 (AccessDenied):拒絕訪問

[英]AWS S3 Boto3 Python - An error occurred (AccessDenied) when calling the DeleteObject operation: Access Denied

我在執行 delete_object 時遇到問題。

def delete_image_from_s3(img=None):
    if img:
        try:
            response = client.delete_object(
            Bucket='my-bucket',
            Key='uploads/img.jpg',
            )
            print(response)
        except ClientError as ce:
            print("error", ce)

每當我發送刪除某個文件的請求時,我都會不斷收到異常捕獲的錯誤:

調用 DeleteObject 操作時發生錯誤(AccessDenied):Access Denied

我知道這與我的政策有關,我已經設置了允許它的必要政策。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowPublicRead",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::my-bucket/*"
        }
    ]
}

我為 s3 的 IAM 用戶設置了完整的訪問權限。或者它是否對公共存儲桶做了一些事情? 或者我只是錯過了一些東西。 任何建議都可以,感謝您的回復。

您顯示的策略似乎是分配給特定存儲桶的存儲桶策略 此策略授予世界上任何人使用您的 S3 存儲桶的權限,因此從安全角度來看不建議這樣做。 您應該刪除此存儲桶策略。

您已經提到所提供的代碼在“本地主機”上運行——我認為這意味着您正在自己的計算機上運行它。

為了從該代碼對 AWS 進行 API 調用,您需要提供 AWS 憑證。 通常,這些憑證通過運行 AWS CLI aws configure命令存儲在~/.aws/credentials文件中。 您需要提供與IAM 用戶關聯的訪問密鑰和秘密密鑰(通過 IAM 管理控制台中的安全憑證選項卡)。

然后,您需要向IAM 用戶分配權限,以便他們可以使用 S3 存儲桶。 請注意,權限是授予IAM 用戶的,而不是存儲桶

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowPublicRead",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::my-bucket/*"
        }
    ]
}

這里的區別在於沒有Principal ,因為它直接附加到 IAM 用戶。

暫無
暫無

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

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