使用 S3 複寫時間控制 (S3RTC) 滿足合規要求 - Amazon Simple Storage Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 S3 複寫時間控制 (S3RTC) 滿足合規要求

S3 複寫時間控制 (S3RTC) 可協助您符合資料複寫的合規或業務需求,並提供 Amazon S3 複寫時間的可見度。S3 會在幾秒鐘內RTC複寫您上傳到 Amazon S3 的大多數物件,並在 15 分鐘內複寫這些物件的 99.99%。

S3 RTC 預設包括 S3 複寫指標和 Amazon S3 事件通知,您可以使用這些指標來監控擱置複寫的 S3 API 操作總數、擱置複寫的物件總大小以及最大複寫時間。您可以獨立於 S3 啟用複寫指標RTC。如需詳細資訊,請參閱監控複寫指標的進度。此外,如果物件複寫超過或在 15 分鐘臨界值之後進行複寫,S3 還會RTC提OperationMissedThreshold供通知儲存貯體擁有者的OperationReplicatedAfterThreshold事件。

使用 S3RTC,當物件未在 15 分鐘內複寫,以及物件在 15 分鐘臨界值之後進行複寫時,Amazon S3 事件可在罕見的執行個體中通知您。Amazon S3 活動可透過 Amazon SQS SNS、Amazon 或 AWS Lambda。 如需詳細資訊,請參閱Amazon S3 事件通知

S3 複寫時間控制

您可以開始使用 S3 複寫時間控制 (S3RTC) 搭配新的或現有的複寫規則。您可以選擇將複寫規則套用至整個 S3 儲存貯體,或套用至具有特定前綴或標籤的 Amazon S3 物件。啟用 S3 時RTC,複寫規則也會啟用複寫指標。

如果您使用最新版本的複寫組態 (亦即您在複寫組態規則中指定 Filter 元素),根據預設,Amazon S3 就不會複寫刪除標記。不過,您可以將刪除標記複製新增至 non-tag-based 規則。

注意

複寫指標的費率與 Amazon CloudWatch 自訂指標相同。如需詳細資訊,請參閱 Amazon CloudWatch 定價

如需使用 S3 建立規則的詳細資訊RTC,請參閱啟用 S3 複寫時間控制 (S3RTC)

使用 S3 複寫指標 RTC

啟用 S3 複寫時間控制 (S3RTC) 的複寫規則會發佈複寫指標。使用複寫指標,您可以監控擱置複寫的 S3 API 作業總數、擱置複寫的物件總大小、目的地區域的最長複寫時間,以及複寫失敗的作業總數。然後,您可以監控個別複寫的每個資料集。

啟用 S3 後的 15 分鐘內即可使用複寫指標RTC。複寫指標可透過 Amazon S3 主控台 (Amazon S3 API) 取得 AWS SDKs,該 AWS Command Line Interface (AWS CLI)Amazon CloudWatch。如需詳細資訊,請參閱使用 Amazon 監控指標 CloudWatch

如需有關透過 Amazon S3 主控台尋找複寫指標的詳細資訊,請參閱 檢視複寫指標

使用 Amazon S3 事件通知追蹤複寫物件

您可以監控 S3 複寫時間控制 (S3RTC) 發佈的特定事件通知,來追蹤未在 15 分鐘內複寫之物件的複寫時間。當符合使用 S3 複寫資格的物件RTC未在 15 分鐘內進行複寫,以及在 15 分鐘臨界值之後進行複寫時,就會發佈這些事件。

啟用 S3 後的 15 分鐘內即可使用複寫事件RTC。Amazon S3 活動可透過 Amazon SQS SNS、Amazon 或 AWS Lambda。 如需詳細資訊,請參閱Amazon S3 事件通知

S3 的最佳做法和指導方針 RTC

使用 S3 複寫時間控制 (S3RTC) 在 Amazon S3 中複寫資料時,請遵循以下最佳實務指南,為您的工作負載最佳化複寫效能。

Amazon S3 複寫與請求率效能的指導方針

從 Amazon S3 上傳和擷取儲存時,您的應用程式可以在請求效能中實現每秒數千筆交易。例如,應用程式在 S3 儲存貯體的每個前綴每秒至少可達到 3,500GET/PUTCOPYPOST/DELETEHEAD或 5,500 個/請求,包括 S3 複寫代表您發出的請求。在儲存貯體中的字首數不受限制。您可以並行讀取以提升您的讀取或寫入的效能。例如,如果您在 S3 儲存貯體裡建立 10 個字首,平行讀取,您可以調整讀取效能至每秒 55,000 讀取請求。

Amazon S3 會根據超過這些準則的持續請求率自動擴展,或是與請求同時執行的持續LIST請求率。雖然 Amazon S3 正在針對新請求率進行內部最佳化,但在優化完成之前,您可能會暫時收到 HTTP 503 個請求回應。這可能會隨著每秒請求率的增加,或者當您第一次啟用 S3 時發生RTC。在這些期間,您的複寫延遲可能會增加。S3 RTC 服務水準協議 (SLA) 不適用於超過 Amazon S3 每秒請求效能指導方針的時段。

S3 RTC SLA 也不適用於複寫資料傳輸速率超過預設 1 Gbps 限制的時段。如果您預期複寫傳輸速率超過 1 Gbps,您可以聯絡 AWS Support 集中或使用 Service Quotas 來要求提高您的限制。

預估您的複寫請求率

您的請求率總計 (包括 Amazon S3 代表您進行的複寫請求) 應符合複寫來源和目的地儲存貯體的 Amazon S3 請求率指導方針。對於每個複製的物件,Amazon S3 複寫最多會對來源儲存貯體構成五個GET/HEAD請求和一PUT個請求,以及一個對每個目標儲存貯體的請PUT求。

例如,如果您希望每秒複寫 100 個物件,Amazon S3 複寫可能會代表您執行額外 100 個PUT請求,PUTs每秒總共 200 個到來源 S3 儲存貯體。Amazon S3 複寫最多可能會執行 500GET/HEAD(每個複製的物件有 5 個GET/個HEAD請求)。

注意

每個複製的物件只會產生一個PUT要求的費用。如需詳細資訊,請參閱 Amazon S3 中關於複寫的定FAQ價資訊。

超過 S3 RTC 資料傳輸速率限制

如果您預期 S3 複寫時間控制資料傳輸速率超過預設的 1 Gbps 限制,請聯絡 AWS Support 集中或使用 Service Quotas 來要求提高您的限制。

AWS KMS 加密物件複寫要求率

當您使用 Amazon S3 複寫複寫使用伺服器端加密 (SSE-KMS) 加密的物件時, AWS Key Management Service (AWS KMS) 每秒要求限制適用。 AWS KMS 可能會拒絕其他有效的要求,因為您的要求率超過每秒要求數目的限制。當請求被限制時, AWS KMS 返回一個ThrottlingException錯誤。所以此 AWS KMS 請求速率限制適用於您直接提出的請求以及 Amazon S3 複寫代您發出的請求。

例如,如果您希望每秒複製 1,000 個物件,您可以從 AWS KMS 請求速率限制。產生的每秒要求率可供您使用 AWS KMS 工作負載排除複製。您可以使用 AWS KMS 在 Amazon 請求指標 CloudWatch來監控總數 AWS KMS 在您的請求率 AWS 帳戶.

啟用 S3 複寫時間控制 (S3RTC)

S3 複寫時間控制 (S3RTC) 可協助您符合資料複寫的合規或業務需求,並提供 Amazon S3 複寫時間的可見度。S3 會在幾秒鐘內RTC複寫您上傳到 Amazon S3 的大多數物件,並在 15 分鐘內複寫這些物件的 99.99%。

使用 S3RTC,您可以監控擱置複寫的物件總數和大小,以及目的地區域的最長複寫時間。複製測量結果可透過 AWS Management ConsoleAmazon CloudWatch 用戶指南。如需詳細資訊,請參閱「S3 複寫指標 CloudWatch」。

主題

    如需 step-by-step 指示,請參閱為相同帳戶擁有的來源和目的地儲存貯體設定複寫。本主題提供有關RTC在儲存貯體擁有相同且不同時在複寫組態中啟用 S3 的指示 AWS 帳戶.

    若要使用 AWS CLI 若要在RTC啟用 S3 的情況下複寫物件,您可以建立儲存貯體、在儲存貯體上啟用版本控制、建立一個IAM角色以授予 Amazon S3 複寫物件的權限,以及將複寫組態新增至來源儲存貯體。複寫組態必須啟用 S3 複寫時間控制 (S3RTC)。

    若要在RTC啟用 S3 的情況下複寫 (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 作為有效值。

    下列 Java 範例新增具有 S3 複寫時間控制 (S3RTC) 的複寫組態。

    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 複寫時間控制 (S3RTC) 滿足合規要求