使用 S3 Replication Time Control(S3 RTC)复制对象 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 S3 Replication Time Control(S3 RTC)复制对象

S3 Replication Time Control(S3 RTC)可以帮助您满足数据复制的合规性要求或业务要求,并提供对 Amazon S3 复制时间的可见性。S3 RTC 会在几秒钟内复制您上传到 Amazon S3 的大多数对象,并在 15 分钟内复制 99.99% 的对象。

借助 S3 RTC,您可以监控等待复制的对象总数和大小,以及到目标区域的最长复制时间。复制指标可通过Amazon Web Services Management ConsoleAmazon CloudWatch 用户指南获得。有关更多信息,请参阅CloudWatch 中的 S3 复制指标

主题

    如需分步指导,请参阅 为同一账户拥有的源存储桶和目标存储桶配置复制。本主题提供了在两个存储桶由相同和不同的 Amazon Web Services 账户 拥有时在复制配置中启用 S3 RTC 的说明。

    要在启用 S3 RTC 的情况下使用 Amazon CLI 复制对象,您需要创建存储桶,对存储桶启用版本控制,创建一个 IAM 角色(该角色向 Amazon S3 赋予复制对象的权限),并将复制配置添加到源存储桶。复制配置需要启用 S3 Replication Time Control(S3 RTC)。

    在已启用 S3 RTC 的情况下进行复制 (Amazon CLI)
    • 以下示例设置 ReplicationTimeMetric,并将复制配置添加到源存储桶。

      { "Rules": [ { "Status": "Enabled", "Filter": { "Prefix": "Tax" }, "DeleteMarkerReplication": { "Status": "Disabled" }, "Destination": { "Bucket": "arn:aws:s3:::destination", "Metrics": { "Status": "Enabled", "EventThreshold": { "Minutes": 15 } }, "ReplicationTime": { "Status": "Enabled", "Time": { "Minutes": 15 } } }, "Priority": 1 } ], "Role": "IAM-Role-ARN" }
      重要

      Metrics:EventThreshold:MinutesReplicationTime:Time:Minutes 只能设置为 15 作为有效值。

    下面是使用 S3 Replication Time Control(S3 RTC)添加复制配置的 Java 示例。

    import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.model.DeleteMarkerReplication; import software.amazon.awssdk.services.s3.model.Destination; import software.amazon.awssdk.services.s3.model.Metrics; import software.amazon.awssdk.services.s3.model.MetricsStatus; import software.amazon.awssdk.services.s3.model.PutBucketReplicationRequest; import software.amazon.awssdk.services.s3.model.ReplicationConfiguration; import software.amazon.awssdk.services.s3.model.ReplicationRule; import software.amazon.awssdk.services.s3.model.ReplicationRuleFilter; import software.amazon.awssdk.services.s3.model.ReplicationTime; import software.amazon.awssdk.services.s3.model.ReplicationTimeStatus; import software.amazon.awssdk.services.s3.model.ReplicationTimeValue; public class Main { public static void main(String[] args) { S3Client s3 = S3Client.builder() .region(Region.US_EAST_1) .credentialsProvider(() -> AwsBasicCredentials.create( "AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY") ) .build(); ReplicationConfiguration replicationConfig = ReplicationConfiguration .builder() .rules( ReplicationRule .builder() .status("Enabled") .priority(1) .deleteMarkerReplication( DeleteMarkerReplication .builder() .status("Disabled") .build() ) .destination( Destination .builder() .bucket("destination_bucket_arn") .replicationTime( ReplicationTime.builder().time( ReplicationTimeValue.builder().minutes(15).build() ).status( ReplicationTimeStatus.ENABLED ).build() ) .metrics( Metrics.builder().eventThreshold( ReplicationTimeValue.builder().minutes(15).build() ).status( MetricsStatus.ENABLED ).build() ) .build() ) .filter( ReplicationRuleFilter .builder() .prefix("testtest") .build() ) .build()) .role("role_arn") .build(); // Put replication configuration PutBucketReplicationRequest putBucketReplicationRequest = PutBucketReplicationRequest .builder() .bucket("source_bucket") .replicationConfiguration(replicationConfig) .build(); s3.putBucketReplication(putBucketReplicationRequest); } }

    有关更多信息,请参阅使用 S3 Replication Time Control(S3 RTC)满足合规性要求