示例 5:S3 复制时间控制 (S3 RTC) 配置 - Amazon Simple Storage Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

示例 5:S3 复制时间控制 (S3 RTC) 配置

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

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

主题

    有关分步说明,请参阅《Amazon Simple Storage Service 控制台用户指南》中的如何向 S3 存储桶添加复制规则?本主题说明了当两个存储桶由相同和不同 AWS 账户拥有时,如何在复制配置启用 S3 RTC。

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

    在已启用 S3 RTC 时复制 (AWS 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 复制时间控制 (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 复制时间控制 (S3 RTC) 满足合规性要求