PutBucketReplication 操作は、バケットのデータレプリケーションルールを設定するために使用されます。OSS は、クロスリージョンレプリケーション (CRR) と同一リージョンレプリケーション (SRR) をサポートしています。
注意事項
データレプリケーションは、ソースバケット内のオブジェクト、およびオブジェクトの作成、更新、削除操作を、宛先バケットに非同期 (ほぼリアルタイム) でレプリケーションします。データレプリケーションを使用する際は、以下の点にご注意ください。
データレプリケーションは非同期です。データサイズに応じて、宛先バケットへのデータレプリケーションには数分から数時間かかります。
ソースバケットと宛先バケットの名前を同じにすることはできません。
クロスリージョンレプリケーション (CRR) の場合、ソースバケットと宛先バケットは異なるリージョンにある必要があります。同一リージョンレプリケーション (SRR) の場合、ソースバケットと宛先バケットは同じリージョンにある必要があります。
現在、タグベースのフィルタリング機能は、中国 (張家口)、中国 (中衛)、およびメキシコリージョンではサポートされていません。
リクエスト構文
POST /?replication&comp=add HTTP/1.1
Date: GMT Date
Content-Length: ContentLength
Content-Type: application/xml
Authorization: SignatureValue
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
<?xml version="1.0" encoding="UTF-8"?>
<ReplicationConfiguration>
<Rule>
<RTC>
<Status>enabled or disabled</Status>
</RTC>
<PrefixSet>
<Prefix>prefix_1</Prefix>
<Prefix>prefix_2</Prefix>
</PrefixSet>
<Action>ALL or PUT</Action>
<Destination>
<Bucket>destbucket</Bucket>
<Location>oss-cn-hangzhou</Location>
<TransferType>oss_acc</TransferType>
</Destination>
<HistoricalObjectReplication>enabled or disabled</HistoricalObjectReplication>
<SyncRole>aliyunramrole</SyncRole>
<UserTaggings>
<FilterType>AND or OR</FilterType>
<UserTagging>
<Key>key1</Key>
<Value>value1</Value>
</UserTagging>
...
</UserTaggings>
</Rule>
</ReplicationConfiguration>リクエスト要素
名前 | タイプ | 必須 | 例 | 説明 |
ReplicationConfiguration | コンテナ | はい | N/A | バケットのデータレプリケーションルールを格納するコンテナです。 親ノード:なし 子ノード:Rule |
Rule | コンテナ | はい | N/A | データレプリケーションルールを格納するコンテナです。 親ノード:ReplicationConfiguration 子ノード:Destination、HistoricalObjectReplication、UserTaggings、ID など |
ID | String | いいえ | first | データレプリケーションルールの一意の ID です。 親ノード:Rule 子ノード:なし |
PrefixSet | コンテナ | いいえ | N/A | プレフィックスを格納するコンテナです。1 つのデータレプリケーションルールで最大 10 個のプレフィックスを指定できます。 親ノード:Rule 子ノード:Prefix |
Prefix | String | いいえ | source1 | レプリケーションするオブジェクトのプレフィックスです。指定されたプレフィックスを名前に含むオブジェクトのみが宛先バケットにレプリケーションされます。
親ノード:PrefixSet 子ノード:なし |
Action | String | いいえ | ALL | 宛先バケットに同期できる操作です。Action を設定した場合、新しく書き込まれたデータと既存データの両方が、Action で指定された操作に基づいて同期されます。 Action では、以下の操作タイプが許可されます。1 つまたは複数の操作タイプを指定できます。 有効値:
親ノード:Rule 子ノード:なし |
Destination | コンテナ | はい | N/A | 宛先バケットに関する情報を格納するコンテナです。 親ノード:Rule 子ノード:Bucket および Location |
Bucket | String | はい | destbucket | データがレプリケーションされる宛先バケットです。 親ノード:Destination 子ノード:なし |
Location | String | はい | oss-cn-hangzhou | 宛先バケットが配置されているリージョンです。 親ノード:Destination 子ノード:なし |
TransferType | String | はい | oss_acc | データレプリケーションに使用されるデータ転送リンクです。 有効値:
親ノード:Destination 子ノード:なし |
HistoricalObjectReplication | String | いいえ | disabled | データレプリケーションが有効になる前に、ソースバケットから宛先バケットに既存データをレプリケーションするかどうかを指定します。 有効値:
親ノード:Rule 子ノード:なし |
SyncRole | String | はい | aliyunramrole | OSS がデータレプリケーションで使用するように承認する RAM ロールです。データレプリケーションの権限は、同一アカウント内でのレプリケーションおよびクロスアカウントレプリケーションに適用されます。同一アカウント内およびクロスアカウントのレプリケーションでは、対応するレプリケーション権限を RAM ロールに付与する必要があります。これを実行しない場合、レプリケーションタスクは失敗します。詳細については、「データレプリケーションに必要な権限」をご参照ください。 親ノード:Rule 子ノード:なし |
SourceSelectionCriteria | コンテナ | いいえ | N/A | レプリケーションするソースオブジェクトの他のフィルター条件を格納するコンテナです。現在、OSS は SSE-KMS を使用して暗号化されたソースオブジェクトのフィルター条件のみをサポートしています。 親ノード:Rule 子ノード:SseKmsEncryptedObjects |
SseKmsEncryptedObjects | コンテナ | いいえ | N/A | SSE-KMS を使用して暗号化されたオブジェクトのフィルター条件を格納するコンテナです。データレプリケーションルールで SourceSelectionCriteria を指定する場合は、この要素を指定する必要があります。 親ノード:SourceSelectionCriteria 子ノード:Status |
Status | String | いいえ | Enabled | OSS が SSE-KMS 暗号化を使用して作成されたオブジェクトをレプリケーションするかどうかを指定します。有効値:
親ノード:SseKmsEncryptedObjects 子ノード:なし |
EncryptionConfiguration | コンテナ | いいえ | N/A | 宛先オブジェクトの暗号化設定です。Status を Enabled に設定した場合は、この要素を指定する必要があります。 親ノード:Rule 子ノード:ReplicaKmsKeyID |
ReplicaKmsKeyID | String | いいえ | c4d49f85-ee30-426b-a5ed-95e9139d**** | SSE-KMS キーの ID です。Status を Enabled に設定した場合は、この要素を指定する必要があります。 親ノード:EncryptionConfiguration 子ノード:なし |
RTC | コンテナ | いいえ | N/A | Replication Time Control (RTC) 機能のステータスです。 親ノード:Rule 子ノード:Status |
Status | String | いいえ | Enabled | RTC を有効にするかどうかを指定します。RTC は CRR を設定する場合にのみ有効にできます。 有効値:
親ノード:RTC 子ノード:なし 説明 RTC をサポートするリージョンの詳細については、「RTC をサポートするリージョン」をご参照ください。 |
UserTaggings | コンテナ | いいえ | N/A | タグベースのフィルタリングルールを格納するコンテナです。タグベースのフィルタリングルールを設定すると、指定されたタグを持つオブジェクトのみが宛先バケットにレプリケーションされます。 UserTaggings を設定する場合は、FilterType と UserTagging の両方を指定する必要があります。 親ノード:Rule 子ノード:FilterType および UserTagging |
FilterType | String | いいえ | OR | タグベースのフィルタリングポリシーです。大文字と小文字が区別されます。有効値:
親ノード:UserTaggings 子ノード:なし |
UserTagging | コンテナ | いいえ | N/A | 単一のタグのキーと値のペアを格納するコンテナです。最大 10 個のタグを指定できます。指定されたタグ (キーと値のペア) は一意である必要があります。 親ノード:UserTaggings 子ノード:Key および Value |
Key | String | いいえ | env | タグキーです。キーの長さは最大 128 文字で、大文字と小文字が区別されます。キーには、文字、数字、スペース、および次の特殊文字を含めることができます:+ - = . _ : / 親ノード:UserTagging 子ノード:なし |
Value | String | いいえ | test | タグ値です。値の長さは最大 256 文字で、大文字と小文字が区別されます。値には、文字、数字、スペース、および次の特殊文字を含めることができます:+ - = . _ : / 親ノード:UserTagging 子ノード:なし |
この操作には、Host や Date などの共通リクエストヘッダーも含まれます。詳細については、「共通リクエストヘッダー」をご参照ください。
レスポンスヘッダー
この操作は、共通レスポンスヘッダーのみを返します。詳細については、「共通レスポンスヘッダー」をご参照ください。
例
リクエスト例 1 (OR フィルタリングポリシー)
POST /?replication&comp=add HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Content-Type: application/xml
Content-Length: 186
Date: Thu, 17 Apr 2025 15:39:12 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
<?xml version="1.0" encoding="UTF-8"?>
<ReplicationConfiguration>
<Rule>
<RTC>
<Status>enabled</Status>
</RTC>
<PrefixSet>
<Prefix>source1</Prefix>
<Prefix>video</Prefix>
</PrefixSet>
<Action>PUT</Action>
<Destination>
<Bucket>destbucket</Bucket>
<Location>oss-cn-beijing</Location>
<TransferType>oss_acc</TransferType>
</Destination>
<HistoricalObjectReplication>enabled</HistoricalObjectReplication>
<SyncRole>aliyunramrole</SyncRole>
<SourceSelectionCriteria>
<SseKmsEncryptedObjects>
<Status>Enabled</Status>
</SseKmsEncryptedObjects>
</SourceSelectionCriteria>
<EncryptionConfiguration>
<ReplicaKmsKeyID>c4d49f85-ee30-426b-a5ed-95e9139d****</ReplicaKmsKeyID>
</EncryptionConfiguration>
<UserTaggings>
<FilterType>OR</FilterType>
<UserTagging>
<Key>env</Key>
<Value>test</Value>
</UserTagging>
<UserTagging>
<Key>dept</Key>
<Value>dev</Value>
</UserTagging>
</UserTaggings>
</Rule>
</ReplicationConfiguration>リクエスト例 2 (AND フィルタリングポリシー)
POST /?replication&comp=add HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Content-Type: application/xml
Content-Length: 350
Date: Thu, 17 Apr 2025 16:00:00 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=b8d4e5f6a7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4
<?xml version="1.0" encoding="UTF-8"?>
<ReplicationConfiguration>
<Rule>
<PrefixSet>
<Prefix>source1</Prefix>
<Prefix>video</Prefix>
</PrefixSet>
<Action>PUT</Action>
<Destination>
<Bucket>destbucket</Bucket>
<Location>oss-cn-beijing</Location>
<TransferType>oss_acc</TransferType>
</Destination>
<HistoricalObjectReplication>disabled</HistoricalObjectReplication>
<SyncRole>aliyunramrole</SyncRole>
<UserTaggings>
<FilterType>AND</FilterType>
<UserTagging>
<Key>env</Key>
<Value>production</Value>
</UserTagging>
<UserTagging>
<Key>dept</Key>
<Value>finance</Value>
</UserTagging>
</UserTaggings>
</Rule>
</ReplicationConfiguration>レスポンス例
HTTP/1.1 200 OK
x-oss-request-id: 534B371674E88A4D8906****
Date: Thu, 24 Sep 2025 15:39:12 GMT
Content-Length: 0
Connection: close
Server: AliyunOSSSDK
この操作をサポートする SDK は次の表のとおりです。
ossutil
PutBucketReplication 操作に対応する ossutil コマンドの詳細については、「put-bucket-replication」をご参照ください。
エラーコード
エラーコード | HTTP ステータスコード | 説明 |
InvalidTargetBucket | 400 BadRequest | このエラーの原因として、以下が考えられます。
|
InvalidTargetLocation | 400 BadRequest | 宛先バケットが配置されているリージョンが、XML リクエストで指定されたリージョンではありません。 |
BucketReplicationAlreadyExist | 400 BadRequest | ソースバケットと宛先バケットの間にレプリケーション関係が既に存在します。 新しいデータレプリケーションルールを設定する場合は、まず既存のデータレプリケーションルールを削除してください。 |
BadReplicationLocation | 400 BadRequest | 選択された宛先リージョンが無効です。 GetBucketReplicationLocation 操作を呼び出して、データをレプリケーションできる有効な宛先リージョンを取得できます。 |
NoReplicationLocation | 400 BadRequest | CRR の場合、ソースバケットが配置されているリージョンとペアになっている宛先リージョンがありません。 CRR のリージョンペアの詳細については、「リージョンとエンドポイント」をご参照ください。 |
TooManyReplicationRules | 400 BadRequest | リクエストで複数のデータレプリケーションルールが設定されています。 1 回のリクエストで設定できるデータレプリケーションルールは 1 つだけです。 |
TooManyIncomingReplication | 400 BadRequest | バケットに設定されたデータレプリケーションルールの数が 100 に達しました。不要になったデータレプリケーションルールを削除してから、もう一度お試しください。 バケットには最大 100 個のデータレプリケーションルールを設定できます。ビジネス要件がこの制限を超える場合は、チケットを送信。 |
TooManyOutgoingReplication | 400 BadRequest | バケットに設定されたデータレプリケーションルールの数が 100 に達しました。不要になったデータレプリケーションルールを削除してから、もう一度お試しください。 バケットには最大 100 個のデータレプリケーションルールを設定できます。ビジネス要件がこの制限を超える場合は、チケットを送信。 |
MissingArgument | 400 BadRequest | データ転送リンクが指定されていません。 |
InvalidArgument | 400 BadRequest | 指定されたデータ転送リンクはサポートされていません。 |
ReplicationLocationNotSupportRtc | 400 BadRequest | このリージョンでは RTC を有効にできません。RTC をサポートするリージョンの詳細については、「RTC をサポートするリージョン」をご参照ください。 |
TooManyTaggings | 400 BadRequest | バケットに設定されたデータレプリケーションルールのタグの数は 10 を超えることはできません。 |
DuplicateReplicationRuleTaggings | 400 BadRequest | バケットに設定されたデータレプリケーションルールに、重複するタグキーと値が含まれています。 |
DuplicateReplicationRuleTaggingKeys | 400 BadRequest | バケットに設定されたデータレプリケーションルールの FilterType が AND に設定されており、重複するタグキーが含まれています。 |