OBS支持多版本控制,您可以在一个桶中保留对象的多个版本,使您更方便地检索和还原各个版本,在意外操作或应用程序故障时快速恢复数据。更多多版本相关信息请参见
多版本控制
。
调用设置桶的多版本状态接口,您可以为指定桶设置多版本状态。
您必须是桶拥有者或拥有设置桶的多版本状态的权限,才能设置桶的多版本状态。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:bucket:PutBucketVersioning权限,如果使用桶策略则需授予PutBucketVersioning权限。相关授权方式介绍可参见
OBS权限控制概述
,配置方式详见
使用IAM自定义策略
、
自定义创建桶策略
。
OBS支持的Region与Endpoint的对应关系,详细信息请参见
地区与终端节点
。
ObsClient.setBucketVersioning(bucketName, status, extensionHeaders)
请求参数说明
# 推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险
# 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html
ak
=
os
.
getenv
(
"AccessKeyID"
)
sk
=
os
.
getenv
(
"SecretAccessKey"
)
# 【可选】如果使用临时AKSK和SecurityToken访问OBS,则同样推荐通过环境变量获取
# security_token = os.getenv("SecurityToken")
# server填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写
server
=
"https://obs.cn-north-4.myhuaweicloud.com"
# 创建obsClient实例
# 如果使用临时AKSK和SecurityToken访问OBS,需要在创建实例时通过security_token参数指定securityToken值
obsClient
=
ObsClient
(
access_key_id
=
ak
,
secret_access_key
=
sk
,
server
=
server
)
try
:
bucketName
=
"examplebucket"
# 设置桶的多版本状态
resp
=
obsClient
.
setBucketVersioning
(
bucketName
,
status
=
'Enabled'
)
# 返回码为2xx时,接口调用成功,否则接口调用失败
if
resp
.
status
<
300
:
print
(
'Set Bucket Versioning Succeeded'
)
print
(
'requestId:'
,
resp
.
requestId
)
else
:
print
(
'Set Bucket Versioning Failed'
)
print
(
'requestId:'
,
resp
.
requestId
)
print
(
'errorCode:'
,
resp
.
errorCode
)
print
(
'errorMessage:'
,
resp
.
errorMessage
)
except
:
print
(
'Set Bucket Versioning Failed'
)
print
(
traceback
.
format_exc
())
关于设置桶的多版本状态的API说明,请参见
设置桶的多版本状态
。
更多关于设置桶的多版本状态的示例代码,请参见
Github示例
。
设置桶的多版本状态过程中返回的错误码含义、问题原因及处理措施可参考
OBS错误码
。
多版本控制相关问题请参见
多版本控制相关常见问题
。