数据同步
运行以下示例前,请先参考初始化完成 BOS Client 初始化,并将示例中的 bucket_name(及其它占位符)替换为实际值。
设置数据同步规则
replication 参数说明如下:
| 参数 | 类型 | 是否必须(必填) | 描述/说明 |
|---|---|---|---|
id |
string |
是 | replication 规则名。由数字、字母、连字符 -、下划线 _ 组成,不得超过 20 个字符。 |
status |
string |
是 | 是否生效,取值 enabled、disabled。 |
resource |
list[string] |
是 | replication 生效前缀。配置形式为 bucket_name/<生效的对象前缀>,必须以 bucket_name + / 开头;单个规则最多 20 个 resource,每个 resource 最多包含一个通配符 * 且只能位于末尾。 |
notIncludeResource |
list[string] |
否 | replication 不生效范围(排除项)。配置形式为 bucket_name/<不生效的对象范围>,必须以 bucket_name + / 开头;仅接受 bucket_name/<前缀>*、bucket_name/*<后缀>、bucket_name/*<中缀>* 三种形式。单个规则最多 20 个。 |
destination |
dict |
是 | 复制的目的端配置。 |
destination.bucket |
string |
是 | 目的 Bucket 名称,不能与源 Bucket 同名。 |
destination.storageClass |
string |
否 | 目的 Object 的存储类型。如果保持和源 Bucket 的存储类型一致,则该参数不需要配置;如果需要单独指定存储类型,可以为 STANDARD、STANDARD_IA、COLD;如果是多 AZ 类型 Bucket,可取值为 MAZ_COLD、MAZ_STANDARD_IA 和 MAZ_STANDARD。 |
destination.prefix |
string |
否 | 目的存储路径前缀。若设置,必须以 / 结尾。 |
replicateHistory |
dict |
否 | 历史文件复制。有该项则认为开启历史文件复制。开启历史文件复制后,存量的全部 Object 都同步复制到目的 Bucket,复制范围共用 resource。 |
replicateHistory.storageClass |
string |
否 | 历史文件复制到目的端后的 Object 存储类型。取值同 destination.storageClass;不配置则与源 Bucket 保持一致。 |
replicateDeletes |
string |
是 | 是否开启删除同步,可以为 enabled、disabled。 |
若需要开启 Bucket 之间的数据同步,可调用 bos_client.put_bucket_replication(bucket_name, replication) 设置数据同步规则。调用前请确保源 Bucket 与目的 Bucket 已存在。
注意:
- 目的 Bucket 不能与源 Bucket 相同。
- 单个规则最多 20 个
resource、20 个notIncludeResource;整个配置大小不超过 128KB,同一 Bucket 下所有规则总长度不超过 200KB。- 对同一个
id首次put视为创建规则,再次put视为覆盖:若原status为enabled,不允许覆盖为disabled;不允许两条规则除id外其它项完全相同。
1bucket_name = 'example-bucket-name'
2destination_bucket_name = 'example-dest-bucket-name'
3rule_id = "sample-rep-config"
4
5replication = {
6 "status": "enabled",
7 "resource": [
8 bucket_name + "/*"
9 ],
10 "notIncludeResource": [
11 bucket_name + "/tmp/*"
12 ],
13 "destination": {
14 "bucket": destination_bucket_name,
15 "storageClass": "COLD",
16 "prefix": "backup/"
17 },
18 "replicateHistory": {
19 "storageClass": "COLD"
20 },
21 "replicateDeletes": "enabled",
22 "id": rule_id
23}
24
25bos_client.put_bucket_replication(bucket_name, replication)
调用成功后,put_bucket_replication 无需处理特殊业务响应体;如果请求失败,SDK 会返回对应异常信息。
获取指定的数据同步规则
若需要获取 Bucket 指定 ID 的数据同步信息,包括源 Bucket 名称、目的 Bucket 名称、存储类型、是否进行历史复制、数据同步策略、目的 region 等,可调用 bos_client.get_bucket_replication(bucket_name, id=rule_id)。
1rule_id = "sample-rep-config"
2
3response = bos_client.get_bucket_replication(bucket_name, id=rule_id)
4
5print(
6 "id:{}, status:{}, resource:{}, destination:{}, "
7 "replicateDeletes:{}, replicateHistory:{}".format(
8 response.id,
9 response.status,
10 response.resource,
11 response.destination,
12 response.replicate_deletes,
13 response.replicate_history
14 )
15)
参数说明
| 参数 | 类型 | 是否必须(必填) | 描述/说明 |
|---|---|---|---|
bucket_name |
string |
是 | 源 Bucket 名称。 |
id |
string |
是 | 要查询的数据同步规则 ID。 |
返回值说明如下:
| 返回字段 | 类型 | 描述/说明 |
|---|---|---|
response.id |
string |
数据同步规则 ID。 |
response.status |
string |
数据同步规则状态。 |
response.resource |
list[string] |
数据同步规则的生效前缀。 |
response.destination |
Expando 类 |
目的端配置,包括目的 Bucket、存储类型等信息。 |
response.replicate_deletes |
string |
删除同步策略。 |
response.replicate_history |
Expando 类 |
历史文件复制配置。 |
response.create_time |
number |
数据同步规则的创建时间(UNIX 时间戳)。 |
response.dest_region |
string |
目的 region。 |
删除指定的数据同步规则
若需要删除 Bucket 指定 ID 的数据同步规则,可调用 bos_client.delete_bucket_replication(bucket_name, id=rule_id)。
1rule_id = "sample-rep-config"
2
3bos_client.delete_bucket_replication(bucket_name, id=rule_id)
参数说明
| 参数 | 类型 | 是否必须(必填) | 描述/说明 |
|---|---|---|---|
bucket_name |
string |
是 | 源 Bucket 名称。 |
id |
string |
是 | 要删除的数据同步规则 ID。 |
调用成功后,delete_bucket_replication 无需处理特殊业务响应体。
列举数据同步规则
若需要获取 Bucket 所有的 replication 同步规则,可调用 bos_client.list_bucket_replication(bucket_name)。
1response = bos_client.list_bucket_replication(bucket_name)
2
3print(response.rules)
参数说明
| 参数 | 类型 | 是否必须(必填) | 描述/说明 |
|---|---|---|---|
bucket_name |
string |
是 | 源 Bucket 名称。 |
返回值说明如下:
| 返回字段 | 类型 | 描述/说明 |
|---|---|---|
response.rules |
list |
当前 Bucket 下的数据同步规则列表。 |
rule.id |
string |
数据同步规则 ID。 |
rule.status |
string |
数据同步规则状态。 |
rule.resource |
list[string] |
数据同步规则的生效前缀。 |
rule.destination |
Expando 类 |
目的端配置,包括目的 Bucket、存储类型等信息。 |
rule.replicate_deletes |
string |
删除同步策略。 |
rule.replicate_history |
Expando 类 |
历史文件复制配置。 |
rule.create_time |
number |
数据同步规则的创建时间(UNIX 时间戳)。 |
rule.dest_region |
string |
目的 region。 |
获取指定的数据同步规则的进程状态
若需要获取指定 ID 的数据同步复制进程状态,可调用 bos_client.get_bucket_replication_progress(bucket_name, id=rule_id)。
1rule_id = "sample-rep-config"
2
3response = bos_client.get_bucket_replication_progress(bucket_name, id=rule_id)
4
5print(
6 "status:{}, historyReplicationPercent:{}, latestReplicationTime:{}".format(
7 response.status,
8 response.history_replication_percent,
9 response.latest_replication_time
10 )
11)
参数说明
| 参数 | 类型 | 是否必须(必填) | 描述/说明 |
|---|---|---|---|
bucket_name |
string |
是 | 源 Bucket 名称。 |
id |
string |
是 | 要查询复制进程状态的数据同步规则 ID。 |
返回值说明如下:
| 返回字段 | 类型 | 描述/说明 |
|---|---|---|
response.status |
string |
数据同步复制进程状态。 |
response.history_replication_percent |
string 或 number |
历史文件复制进度百分比。 |
response.latest_replication_time |
string 或 number |
最新复制时间。 |
评价此篇文章
