无法下载共享帐户s3存储区上传的文件

我在亚马逊S3上创建了一个存储桶,并添加了存储桶策略,让另一个用户帐户可以将文件上传到其中。 我添加了以下存储桶策略。

但是,现在我自己无法下载共享者上传的文件。 我想我没有给他们授予权利。 我应该如何继续下载文件。 他们可以授予他们上传文件的权限吗?

{
    "Version": "2008-10-17",
    "Id": "Policyxxxxxxxxxxxx",
    "Statement": [
        {
            "Sid": "Stmtxxxxxxxxxxxxx",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<account_number>:root"
            },
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:GetObject",
                "s3:ListMultipartUploadParts",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::<bucket_name>/*"
        },
        {
            "Sid": "Stmtxxxxxxxxxxx",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<account_number>:root"
            },
            "Action": [
                "s3:PutBucketLogging",
                "s3:PutBucketNotification",
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::<bucket_name>"
        }
    ]
}

所以问题是,亚马逊S3桶将桶策略应用于桶拥有者拥有的对象。 因此,如果您是存储桶所有者并通过存储桶政策授予对象许可权,这意味着您还需要确保他们在对象上传过程中授予您许可权。 虽然授予跨账户权限上传对象,但只能限制仅具有读取权限的对象。

资料来源:http://docs.aws.amazon.com/AmazonS3/latest/dev/AccessPolicyLanguage_UseCases_s3_a.html相关讨论:https://forums.aws.amazon.com/thread.jspa?messageID=524342&%20#524342示例存储桶政策:

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Sid":"111",
         "Effect":"Allow",
         "Principal":{
            "AWS":"1111111111"
         },
         "Action":"s3:PutObject",
         "Resource":"arn:aws:s3:::examplebucket/*"
      },
      {
         "Sid":"112",
         "Effect":"Deny",
         "Principal":{
            "AWS":"1111111111"
         },
         "Action":"s3:PutObject",
         "Resource":"arn:aws:s3:::examplebucket/*",
         "Condition":{
            "StringNotEquals":{
               "s3:x-amz-grant-full-control":[
                  "emailAddress=xyz@amazon.com"
               ]
            }
         }
      }
   ]
}

我面临类似的问题

我复制从文件<sharerprofile>到一个新的亚马逊帐户在桶<bucketname>我无法从亚马逊的新帐户下载,因为访问保护的文件。

所以我做了以下几点:

aws --profile <sharerprofile> s3api put-object-acl --acl authenticated-read --bucket <bucketname> --key <pathofthefileInBucket>

我没有找到如何为多个文件自动执行此操作,因此我必须为每个文件重复相同的命令


面临类似的情况,即目标帐户未被授予完全访问权限,因此存储桶策略授予cloudfront读取访问权限不起作用。

除OP的"s3:x-amz-grant-full-control":[ "emailAddress=xyz@amazon.com" ]id=xxx ,另一种方法是使用Canned ACL。 通过使用bucket-owner-full-control ,我们不必列出特定的电子邮件或规范标识。

{
  "Statement":[
    {
      "Effect":"Allow",
      "Principal":{"AWS":"111111111111"},
      "Action":"s3:PutObject",
      "Resource":["arn:aws:s3:::examplebucket/*","arn:aws:s3:::examplebucket"]
    },
    {
      "Effect":"Deny",
      "Principal":{"AWS":"111111111111"},
      "Action":"s3:PutObject",
      "Resource":"arn:aws:s3:::examplebucket/*",
      "Condition": {
        "StringNotEquals": {"s3:x-amz-acl":"bucket-owner-full-control"}
      }
    }
  ]
}
链接地址: http://www.djcxy.com/p/59951.html

上一篇: Can't download files uploaded by shared account s3 bucket

下一篇: Download a file in amazon s3 account to another s3 account using cakephp