OSS的源Bucket配置数据复制规则后目标Bucket中无相应的数据
问题描述
阿里云对象存储OSS为满足Bucket跨区域容灾或用户数据复制的需求,在源存储空间(Bucket)配置了跨区域复制规则或同区域复制规则后,对象副本未出现在目标Bucket。跨区域复制的使用场景及限制请参见跨区域复制介绍。
问题原因
Bucket跨区域复制或同区域复制时,对象副本未同步到目标Bucket中原因如下:
时间限制
源Bucket配置问题
复制机制限制
版本控制状态不一致
Bucket Policy设置错误
解决方案
在Bucket跨区域复制或同区域复制过程中,当对象副本未同步到目标Bucket时,请根据以下几种可能原因排查并修复问题:
时间限制:数据复制采用异步(近实时)复制的机制,将数据复制到目标Bucket需要一定的时间,通常几分钟到几小时不等,取决于数据的大小。如果要复制的对象较大,请稍等片刻,再检查对象副本是否出现在目标Bucket中。您可以在源Bucket管理页面,选择数据管理>跨区域复制,查看同步进度。
源Bucket配置问题
数据复制状态是否为已开启(Enabled)。
前缀(Prefix)是否正确。
同步指定对象:如果需要同步源Bucket中的指定对象到目标Bucket,请将Prefix设置为指定对象名称。例如,Prefix设置为log,则仅复制log/date1.txt、log/date2.txt等以log开头的对象。与指定Prefix不匹配的对象不会复制到目标Bucket,例如date3.txt。
说明Prefix是单纯的string匹配,不需要通配符,
log/*
为错误的配置方法。同步所有对象:如果需要将源Bucket中的全部对象复制到目标Bucket时,请将Prefix置空。具体设置方法如下:
复制机制限制:如果Bucket中的某个对象是另一个复制配置创建的副本,则OSS不会复制该对象。例如,您配置了Bucket A同步到Bucket B,Bucket B再同步到Bucket C,则OSS不会将从Bucket A同步到Bucket B的对象副本复制到Bucket C。
版本控制状态不一致:开启数据同步的源Bucket和目标Bucket的版本控制状态必须一致,即这两个Bucket同时处于非版本控制状态,或者都已开启版本控制。
Bucket Policy设置错误:如下所示,如果Bucket Policy拒绝(Deny)源Bucket或目标Bucket中列举的任意一个操作(Action),则无法将源Bucket中的对象复制到目标Bucket,为确保源Bucket中的对象复制到目标Bucket,请将以下源Bucket以及目标Bucket的Effect修改为
Allow
。源Bucket
"Effect": "Deny", "Action": [ "oss:ListObjects", "oss:ListMultipartUploads", "oss:ListParts", "oss:GetObject", "oss:GetObjectTagging", "oss:GetObjectVersion" ],
目标Bucket
"Effect": "Deny", "Action": [ "oss:GetObject", "oss:PutObject", "oss:RestoreObject", "oss:DeleteObject", "oss:AbortMultipartUpload", "oss:ListParts", "oss:PutObjectAcl", "oss:GetObjectTagging", "oss:PutObjectTagging", "oss:DeleteObjectTagging", "oss:GetObjectVersion", "oss:DeleteObjectVersion", "oss:PutObjectVersionAcl", "oss:PutObjectVersionTagging", "oss:GetObjectVersionTagging", "oss:DeleteObjectVersionTagging", "oss:RestoreObjectVersion" ],
适用于
对象存储OSS