S3 Replication Time Control (S3 RTC) を使用してコンプライアンス要件を満たす - Amazon Simple Storage Service

S3 Replication Time Control (S3 RTC) を使用してコンプライアンス要件を満たす

S3 Replication Time Control (S3 RTC) では、データレプリケーションに関するコンプライアンス要件 (またはビジネス要件) への対応をサポートします。また、Amazon S3 レプリケーション時間を可視化します。S3 RTC は、Amazon S3 にアップロードしたほとんどのオブジェクトを数秒でレプリケートし、これらのオブジェクトの 99.99% を 15 分以内にレプリケートします。

S3 RTC にはデフォルトで S3 レプリケーションメトリクスと Amazon S3 イベント通知が含まれており、これらを使用することで、レプリケーションを保留している S3 API オペレーションの総数、レプリケーションを保留しているオブジェクトの合計サイズ、および最大レプリケーション時間をモニタリングできます。レプリケーションメトリクスは、S3 RTC とは別に有効化できます。詳細については、「レプリケーションメトリクスによる進捗状況のモニタリング」を参照してください。さらに、S3 RTC は、オブジェクトレプリケーションが 15 分のしきい値を超えた場合、または 15 分のしきい値の後にレプリケートされた場合に、バケット所有者に通知する OperationMissedThreshold および OperationReplicatedAfterThreshold イベントを提供します。

S3 RTC を使用すると、まれなケースとして、オブジェクトが 15 分以内にレプリケートされなかったとき、またこれらのオブジェクトが 15 分のしきい値の後にレプリケートされたときに、Amazon S3 イベントから通知を受け取ることができます。Amazon S3 イベントは、Amazon SQS、Amazon SNS、または AWS Lambda.を通じて利用できます。詳細については、「Amazon S3 イベント通知」を参照してください。

S3 Replication Time Control

新しいレプリケーションルールまたは既存のレプリケーションルールで S3 Replication Time Control (S3 RTC) の使用を開始できます。レプリケーションルールを S3 バケット全体に適用するか、特定のプレフィックスやタグを持つ Amazon S3 オブジェクトに適用するかを選択できます。S3 RTC を有効にすると、レプリケーションルールでレプリケーションメトリクスも有効になります。

最新バージョンのレプリケーション設定を使用している (すなわち、レプリケーション設定ルールでFilter要素を指定している) 場合、Amazon S3 は削除マーカーをレプリケートしません。ただし、タグベース以外のルールには削除マーカーレプリケーションを追加できます。

注記

レプリケーションメトリクスは、Amazon CloudWatch カスタムメトリクスと同じレートで請求されます。詳細については、「Amazon CloudWatch の料金」を参照してください。

S3 RTC を使用したルールの作成の詳細については、S3 Replication Time Control (S3 RTC) の有効化を参照してください。

S3 RTC でのレプリケーションメトリクス

S3 Replication Time Control (S3 RTC) が有効なレプリケーションルールは、レプリケーションメトリクスをパブリッシュします。レプリケーションメトリクスを使用すると、レプリケーションを保留している S3 API オペレーションの合計数、レプリケーションを保留しているオブジェクトの合計サイズ、およびレプリケート先のリージョンへの最大レプリケーション時間、およびレプリケーションに失敗したオペレーションの合計数をモニタリングできます。次に、個別にレプリケートする各データセットをモニタリングできます。

レプリケーションメトリクスは、S3 RTC が有効になってから 15 分以内に使用できます。レプリケーションメトリクスは、Amazon S3 コンソールAmazon S3 API、AWS SDK、AWS Command Line Interface (AWS CLI)、および Amazon CloudWatch を通じてご利用いただけます。詳細については、「Amazon CloudWatch によるメトリクスのモニタリング」を参照してください。

Amazon S3 コンソールを使用したレプリケーションメトリクスの検索の詳細については、レプリケーションメトリクスの表示を参照してください。

Amazon S3 イベント通知の使用によるレプリケーションオブジェクトの追跡

S3 Replication Time Control (S3 RTC) が発行する特定のイベント通知をモニタリングすることで、15 分以内にレプリケートされなかったオブジェクトのレプリケーション時間を追跡できます。これらのイベントは、S3 RTC を使用したレプリケーションの対象であったオブジェクトが 15 分以内にレプリケートされなかったときや、そのオブジェクトが 15 分のしきい値の後にレプリケートされたときに発行されます。

レプリケーションイベントは、S3 RTC が有効になってから 15 分以内に使用できます。Amazon S3 イベントは、Amazon SQS、Amazon SNS、または AWS Lambda.を通じて利用できます。詳細については、「Amazon S3 イベント通知」を参照してください。

S3 RTC のベストプラクティスとガイドライン

S3 Replication Time Control (S3 RTC) を使用して Amazon S3 にデータをレプリケートする場合は、以下のベストプラクティスガイドラインに従って、ワークロードのレプリケーションパフォーマンスを最適化します。

Amazon S3 レプリケーションおよびリクエストレートのパフォーマンスガイドライン

アプリケーションは、Amazon S3 レプリケーション のストレージをアップロードおよび取得する際に、リクエストパフォーマンスで 1 秒あたり何千ものトランザクションを達成できます。たとえば、アプリケーションは S3 バケットでプレフィックスあたり毎秒 3,500 個以上の PUT/COPY/POST/DELETE リクエストまたは 5,500 個以上の GET/HEAD リクエストを処理できます。これには、S3 レプリケーションがユーザーに代わって行うリクエストも含まれます。バケット内のプレフィックスの数に制限はありません。読み取りを並列化することによって読み取りまたは書き込みのパフォーマンスを向上させることができます。たとえば、S3 バケットに 10 個のプレフィックスを作成して読み取りを並列化すると、読み取りパフォーマンスを 1 秒あたり 55,000 回の読み取りリクエストにスケールできます。

Amazon S3 は、これらのガイドラインを上回る持続的なリクエストレートや、LIST リクエストで同時実行される持続的なリクエストレートに応じて自動的にスケールします。Amazon S3 が新しいリクエストレートに合わせて最適化を行っている間、最適化が完了するまで一時的に HTTP 503 リクエストレスポンスが送信される場合があります。これは、1 秒あたりのリクエスト数が増加したときや、S3 RTC を初めて有効にしたときに発生する場合があります。この間は、レプリケーションのレイテンシーが増加する可能性があります。S3 RTC サービスレベルアグリーメント (SLA) は、1 秒あたりのリクエストに関する Amazon S3 パフォーマンスガイドラインを超えた期間には適用されません。

S3 RTC SLA は、レプリケーションデータ転送速度がデフォルトの 1 Gbps 制限を超えた期間にも適用されません。レプリケーション転送速度が 1 Gbps を超えることが予想される場合は、AWS Support センターに問い合わせるか、Service Quotas を使用して制限の引き上げをリクエストできます。

レプリケーションリクエストレートの見積り

合計リクエストレート (Amazon S3 レプリケーションがユーザーに代わって行うリクエストを含む) は、レプリケート元バケットとレプリケート先バケットの両方で Amazon S3 リクエストレートのガイドライン内に収まる必要があります。レプリケートされたオブジェクトごとに、Amazon S3 レプリケーションがレプリケート元に最大 5 件の GET/HEAD リクエストと 1 件の PUT リクエストを行い、レプリケート先バケットに 1 件の PUT リクエストを行います。

たとえば、1 秒あたり 100 個のオブジェクトをレプリケートする場合、Amazon S3 レプリケーションはユーザーに代わって 100 件の PUT リクエストを追加で実行する可能性があります。つまり、レプリケート元 S3 バケットに対して 1 秒あたり合計 200 個の PUT リクエストが実行されることになります。Amazon S3 レプリケーションでは、最大 500 件の GET/HEAD (レプリケートされたオブジェクトごとに 5 件の GET/HEAD リクエスト) を実行する可能性があります。

注記

レプリケートされたオブジェクトごとに 1 つの PUT リクエストに対してのみコストが発生します。詳細については、「Amazon S3 のレプリケーションに関するよくある質問」で料金情報を参照してください。

S3 RTC データ転送レート制限を超過する場合

S3 レプリケーション時間コントロールのデータ転送速度がデフォルトの 1 Gbps の制限を超えると予想される場合は、AWS Support センターに問い合わせるか、Service Quotas を使用して、制限の引き上げをリクエストしてください。

AWS KMS 暗号化オブジェクトのレプリケーションリクエストレート

Amazon S3 レプリケーションを使用してサーバー側の暗号化 (SSE-KMS) で暗号化されたオブジェクトをレプリケートする場合、AWS Key Management Service (AWS KMS) リクエスト/秒の制限が適用されます。AWS KMS は、リクエストレートが 1 秒あたりのリクエスト数の制限を超えているために (そうでなければ) 有効なリクエストを拒否することがあります。リクエストがスロットリングされると、AWS KMS は ThrottlingException エラーを返します。AWS KMS リクエストレートの制限は、ユーザーが直接行うリクエストと、ユーザーに代わって Amazon S3 レプリケーションが行うリクエストに適用されます。

例えば、1 秒あたり 1,000 個のオブジェクトをレプリケートする場合、AWS KMS リクエストレートの制限から 2,000 個のリクエストを差し引くことができます。差し引いた後の 1 秒あたりのリクエストレートを、レプリケーションを除く AWS KMS ワークロードで使用できます。AWS KMSAmazon CloudWatch でリクエストメトリクスを使用して、AWS アカウント の合計 AWS KMS リクエストレートをモニタリングできます。

S3 Replication Time Control (S3 RTC) の有効化

S3 Replication Time Control (S3 RTC) では、データレプリケーションに関するコンプライアンス要件 (またはビジネス要件) への対応をサポートします。また、Amazon S3 レプリケーション時間を可視化します。S3 RTC は、Amazon S3 にアップロードしたほとんどのオブジェクトを数秒でレプリケートし、これらのオブジェクトの 99.99% を 15 分以内にレプリケートします。

S3 RTC を使用すると、レプリケーションが保留中のオブジェクトの合計数とサイズ、およびレプリケート先リージョンへの最大レプリケーション時間をモニタリングできます。レプリケーションのメトリクスは、AWS Management ConsoleおよびAmazon CloudWatch ユーザーガイドから入手できます。詳細については、「CloudWatch の S3 レプリケーションメトリクス」を参照してください。

トピック

    手順については、「同じアカウントが所有するレプリケート元バケットとレプリケート先バケットのレプリケーションの設定」を参照してください。このトピックでは、バケットが同じ AWS アカウントや異なるアカウントで所有されている場合に、レプリケーション設定で S3 RTC を有効にする手順について説明します。

    AWS CLI を使用して S3 RTC が有効になったオブジェクトをレプリケートするには、バケットを作成し、バケットのバージョニングを有効にします。さらに、IAM ロールを作成して Amazon S3 にオブジェクトをレプリケートする許可を与え、レプリケート元バケットにレプリケーション設定を追加します。レプリケーション設定で S3 Replication Time Control (S3 RTC) を有効にする必要があります。

    S3 RTC を有効にしてレプリケートするには (AWS CLI)
    • 次の例ではReplicationTimeおよびMetricを設定し、レプリケート元バケットにレプリケーション設定を追加します。

      { "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) を使用してコンプライアンス要件を満たす」を参照してください。