无法删除设置了 s3:DeleteObject 策略的存储桶对象

问题描述 投票:0回答:1

我有一个私有 S3 存储桶(我们称之为

test-bucket
),所有公共访问都被阻止,还有一个为其提供服务的 CloudFront 发行版。

我的 Web 应用程序有一个 IAM 用户以编程方式访问 AWS 资源,我向该用户附加了托管授权策略

AmazonS3FullAccess

我还设置了以下存储桶策略:

{
    "Version": "2008-10-17",
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity ••••••••••••••"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::test-bucket/*"
        },
        {
            "Sid": "2",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::••••••••••••:user/••••••••••••"
            },
            "Action": "s3:DeleteObject",
            "Resource": "arn:aws:s3:::test-bucket/*"
        }
    ]
}

不过,当尝试删除存储桶中的对象时,我得到了

botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the DeleteObject operation: Access Denied

我一直在阅读与该主题相关的其他答案(像这个),但似乎没有一个有帮助,因为我的

DeleteObject
策略是在 IAM 用户和存储桶上设置的。

amazon-s3 amazon-iam aws-policies
1个回答
0
投票

DeleteObject 权限已授予 IAM 用户,但使用 boto3 客户端的程序遇到删除错误?

看起来主体是某个使用boto3调用delete api的程序,并且上述策略没有授予它DeleteObject权限。 建议:将DeleteObject权限授予某个角色,并让从boto3调用的程序承担该角色。

© www.soinside.com 2019 - 2024. All rights reserved.