AWS S3 CLI:调用PutObject操作时发生错误(AllAccessDisabled):已禁用对此对象的所有访问

时间:2018-07-18 15:31:12

标签: amazon-s3 aws-cli

我正在使用aws-cli / 1.15.25 Python / 2.7.15 Darwin / 17.7.0 botocore / 1.10.25尝试使用以下命令将文件上传到S3:

aws s3 cp <file> s3://bucket.s3.amazonaws.com/<bucket name>

但是我得到以下信息:

u

pload failed: ./<file> to s3://bucket.s3.amazonaws.com/<bucket name> An error occurred (AllAccessDisabled) when calling the PutObject operation: All access to this object has been disabled

作为测试,我使用以下策略将存储桶设置为所有人都可以访问:

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

我的IAM用户具有正确的权限设置

我不知道还要看什么。我用Google搜索并尝试了大多数建议

2 个答案:

答案 0 :(得分:2)

您在URL中两次指定了存储桶名称,或者实际上是在使用字符串“ bucket”。

您可以将虚拟托管样式用作:

http://bucketname.s3.amazonaws.com/path/to/file

http://bucketname.s3-aws-region.amazonaws.com/path/to/file

或路径样式网址:

http://s3.amazonaws.com/bucketnamepath/to/file

http://s3-aws-region.amazonaws.com/bucketname/path/to/file

将“ aws-region”替换为该区域。对于不是us-east-1的区域,请使用“ s3-aws-region”样式。南美的水桶示例:

http://bucketname.s3-sa-east-1.amazonaws.com/path/to/file

http://s3-sa-east-1.amazonaws.com/bucketname/path/to/file

答案 1 :(得分:1)

注意:当指定了不存在的文件夹路径(拼写错误)时,将显示AllAccessDisabled错误。