Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services s3图像从一个bucket复制到同一帐户的另一个bucket后未加载_Amazon Web Services_Amazon S3_Bucket - Fatal编程技术网

Amazon web services s3图像从一个bucket复制到同一帐户的另一个bucket后未加载

Amazon web services s3图像从一个bucket复制到同一帐户的另一个bucket后未加载,amazon-web-services,amazon-s3,bucket,Amazon Web Services,Amazon S3,Bucket,我已将图像从一个存储桶复制到另一个存储桶,现在无法访问图像。错误显示 AccessDenied消息 我已验证文件存在于bucket中,但无法访问它。如果我删除了相同的图像并再次上传,那么它就正常工作了 如果我在将存储桶数据从一个复制到另一个时遗漏了任何内容,请给出任何原因 使用旧铲斗时使用的链接,现在无法使用新铲斗访问 https://abc.s3.amazonaws.com/uploads/profile/image/16923/client_thumb_CINDERELLA_12 您正在尝

我已将图像从一个存储桶复制到另一个存储桶,现在无法访问图像。错误显示
AccessDenied
消息

我已验证文件存在于bucket中,但无法访问它。如果我删除了相同的图像并再次上传,那么它就正常工作了

如果我在将存储桶数据从一个复制到另一个时遗漏了任何内容,请给出任何原因

使用旧铲斗时使用的链接,现在无法使用新铲斗访问

https://abc.s3.amazonaws.com/uploads/profile/image/16923/client_thumb_CINDERELLA_12

您正在尝试访问S3对象的公共URL,并且只有当您公开打开bucket时,它才会起作用。您必须将新存储桶设置为可公开访问,并设置存储桶策略,例如:

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"PublicRead",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::examplebucket/*"]
    }
  ]
}
其中,
示例bucket
是bucket的名称。

S3中的复制(或任何放置操作)默认为私有,因为这是默认ACL行为,请参阅。这就是为什么即使源文件已启用公共访问,您也会被拒绝访问。因此,您需要在复制期间将ACL指定为
公共读取
,在您的情况下(cli示例):

请注意,根据AWS,如果使用
--acl
,IAM策略必须包括
S3:PutObjectAcl
操作

--acl(字符串)设置执行命令时对象的acl。如果使用此参数,则IAM策略的操作列表中必须包含“s3:PutObjectAcl”权限。仅接受private、public read、public read write、authenticed read、aws exec read、bucket owner read、bucket owner full control和log delivery write的值。有关详细信息,请参见罐装ACL


您的bucket策略是否与前一个相同?单击图像,检查您对其拥有哪些权限,并使用第一个bucket上的图像进行验证。
aws s3 cp s3://mySourceBucket/test.txt s3://myDestinationBucket/test.txt --acl public-read