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