通过 cloudformation 设置 s3 跨账户复制时出现错误"Number of distinct destination bucket ARNs cannot exceed 1"



我需要将bucket a中存在的对象复制到bucket B和C中,bucket B存在于同一帐户中,但存在于不同区域,bucket C存在于不同的AWS帐户中。

我已经尝试手动设置上述要求,并且我能够做到,当我尝试通过cloudformation进行设置时,我得到了一个的错误;不同目的地桶ARN的数目不能超过1〃我已经编码了复制规则,如下所示,整个代码是通过参考AWS文档完成的。

ReplicationConfiguration:
Role: !Ref S3RoleArn
Rules:
- Id: Rule1
Destination:
Bucket: "arn:aws:s3:::bucketB"
StorageClass: STANDARD
Status: Enabled
- Id: Rule2
Destination:
Bucket: "arn:aws:s3:::bucketC"
AccessControlTranslation:
Owner: Destination
Account: !Ref DestAccountId
StorageClass: STANDARD
Status: Enabled

首先,我为bucketB设置了复制规则,它在同一个帐户但在不同的区域,效果很好。然后,我为从bucket A到bucket C的复制对象编写了另一条规则。bucketC存在于不同的AWS帐户中。

要解决这个问题,我必须使用Filter、Priority和DeleteMarkerReplication属性。

ReplicationConfiguration:
Role: !Ref S3RoleArn
Rules:
- Id: Rule1
Destination:
Bucket: "arn:aws:s3:::bucketB"
StorageClass: STANDARD
Status: Enabled
Priority: 1
Filter:
Prefix: ''
DeleteMarkerReplication:
Status: Enabled
- Id: Rule2
Destination:
Bucket: "arn:aws:s3:::bucketC"
AccessControlTranslation:
Owner: Destination
Account: !Ref DestAccountId
StorageClass: STANDARD
Status: Enabled
Priority: 2
Filter:
Prefix: ''
DeleteMarkerReplication:
Status: Enabled

通过使用上面提到的属性,我能够成功地创建具有所需复制规则的堆栈。

最新更新