将文件从AWS S3下载到本地文件时出现客户端错误(403)

时间:2016-10-07 03:17:59

标签: amazon-web-services ubuntu amazon-s3 aws-cli

我使用AWS CLI将一些.zip文件上传到我的AWS S3存储桶。现在,在使用以下命令时,我似乎无法下载这些文件:

aws s3 cp s3://mybucket/test.zip test2.zip

因为它会产生以下错误:

A client error (403) occurred when calling the HeadObject operation: Forbidden
Completed 1 part(s) with ... file(s) remaining

如何解决此问题?

编辑:

运行以下命令可显示现有存储桶策略

aws s3api get-bucket-policy --bucket mybucket
{
    "Policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"Example permissions\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::221234567819:root\"},\"Action\":[\"s3:ListBucket\",\"s3:GetBucketLocation\"],\"Resource\":\"arn:aws:s3:::mybucket\"},{\"Sid\":\"Examplepermissions\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::221234567819:root\"},\"Action\":[\"s3:PutObject\",\"s3:AbortMultipartUpload\",\"s3:PutObjectAcl\",\"s3:GetObject\",\"s3:DeleteObject\",\"s3:GetObjectAcl\",\"s3:ListMultipartUploadParts\",\"s3:PutObjectAcl\"],\"Resource\":\"arn:aws:s3:::mybucket/*\"}]}"
}

1 个答案:

答案 0 :(得分:3)

这很可能是以下三个原因之一:

  1. 要么您的某个政策不允许您阅读资源(是的,它可能具有写入权限但不具有读取权限),或者
  2. 您的客户端环境不再使用正确的凭据进行设置。
  3. 你没有ListBucket权限且该文件不存在(它返回403而不是404,好像你没有ListBucket,你不应该能够判断文件是否存在是否存在)。
  4. 对于1,可以通过存储桶策略,用户策略或ACL保护S3对象,并且3之间存在复杂的交互。有关详细信息,请参阅http://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html

    如果您使用相关用户策略,存储桶策略和ACL的详细信息更新您的问题,我可以查看是否有任何解释该症状的内容。

    编辑:

    查看包含的存储桶策略,它似乎与根主体绑定。您是否在aws s3 cli中使用root凭据?如果您使用的是IAM用户,则需要修改Principal(请参阅http://docs.aws.amazon.com/AmazonS3/latest/dev/s3-bucket-user-policy-specifying-principal-intro.html