华为云用户手册

  • 接口约束 您必须拥有obs:object:PutObject权限,才能获取上传进度。相关授权操作可参见典型权限场景配置案例。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。 支持获取上传进度的接口包括:流式上传、文件上传、上传段、追加上传和断点续传上传。 如果ProgressStatus.getTransferPercentage()返回-1,表明是流式上传,此时必须设置对象属性中的对象长度(Content-Length)。
  • 对象上传简介(Java SDK) 开发过程中,您有任何问题可以在github上提交issue,或者在华为云 对象存储服务 论坛中发帖求助。 在OBS中,用户操作的基本数据单元是对象。OBS Java SDK提供了丰富的对象上传接口,可以通过以下方式上传对象: 流式上传 文件上传 分段上传 追加上传 断点续传上传 基于表单上传 SDK支持上传0KB~5GB的对象。流式上传、文件上传和追加上传的内容大小不能超过5GB;当上传较大文件时,请使用分段上传,分段上传每段内容大小不能超过5GB;基于表单上传提供了基于浏览器表单上传对象的方式。 如果上传的对象权限设置为匿名用户读取权限,对象上传成功后,匿名用户可通过链接地址访问该对象数据。对象链接地址格式为:https://桶名. 域名 /文件夹目录层级/对象名。如果该对象存在于桶的根目录下,则链接地址将不需要有文件夹目录层级。 父主题: 上传对象(Java SDK)
  • 接口约束 您必须是并行文件系统拥有者或拥有截断对象的权限,才能截断对象。建议使用 IAM 或策略进行授权,如果使用IAM则需授予obs:bucket:PutObject权限,如果使用策略则需授予PutObject权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、配置对象策略。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。 目前接口仅在并行文件系统支持,普通对象并行文件系统不支持,如何创建并行文件系统请参考创建并行文件系统(Java SDK)。
  • 代码示例 本示例用于将examplebucket并行文件系统中的objectname对象截断到指定大小,大小指定为1024L。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.TruncateObjectRequest; import com.obs.services.model.TruncateObjectResult; public class TruncateObject001 { public static void main(String[] args) { // 您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。如果使用硬编码可能会存在泄露风险。 // 您可以登录访问管理控制台获取访问密钥AK/SK String ak = System.getenv("AC CES S_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。 // 您可以通过环境变量获取访问密钥AK/SK/SecurityToken,也可以使用其他外部引入方式传入。 // String securityToken = System.getenv("SECURITY_TOKEN"); // endpoint填写桶所在的endpoint, 此处以华北-北京四为例,其他地区请按实际情况填写。 String endPoint = "https://obs.cn-north-4.myhuaweicloud.com"; // 您可以通过环境变量获取endPoint,也可以使用其他外部引入方式传入。 //String endPoint = System.getenv("ENDPOINT"); // 创建ObsClient实例 // 使用永久AK/SK初始化客户端 ObsClient obsClient = new ObsClient(ak, sk,endPoint); // 使用临时AK/SK和SecurityToken初始化客户端 // ObsClient obsClient = new ObsClient(ak, sk, securityToken, endPoint); try { // 截断操作 TruncateObjectRequest request = new TruncateObjectRequest(); request.setBucketName("examplebucket"); request.setObjectKey("objectname"); request.setNewLength(1024L); TruncateObjectResult result = obsClient.truncateObject(request); System.out.println("truncateObject successfully"); System.out.println("HTTP Code: " + result.getStatusCode()); } catch (ObsException e) { System.out.println("truncateObject failed"); // 请求失败,打印http状态码 System.out.println("HTTP Code:" + e.getResponseCode()); // 请求失败,打印服务端错误码 System.out.println("Error Code:" + e.getErrorCode()); // 请求失败,打印详细错误信息 System.out.println("Error Message:" + e.getErrorMessage()); // 请求失败,打印请求id System.out.println("Request ID:" + e.getErrorRequestId()); System.out.println("Host ID:" + e.getErrorHostId()); e.printStackTrace(); } catch (Exception e) { System.out.println("truncateObject failed"); // 其他异常信息打印 e.printStackTrace(); } } }
  • 请求参数说明 表1 请求参数列表 参数名称 参数类型 是否必选 描述 request TruncateObjectRequest 必选 参数解释: 截断对象请求参数,详见TruncateObjectRequest。 表2 TruncateObjectRequest 参数名称 参数类型 是否可选 描述 bucketName String 必选 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 默认取值: 无 objectKey String 必选 参数解释: 文件对象名。对象名是对象在存储桶中的唯一标识。对象名是对象在桶中的完整路径,路径中不包含桶名。 例如,您对象的访问地址为examplebucket.obs.cn-north-4.myhuaweicloud.com/folder/test.txt 中,对象名为folder/test.txt。 取值范围: 长度大于0且不超过1024的字符串。 默认取值: 无 newLength long 必选 参数解释: 文件截断后的大小。 默认取值: 无
  • 代码示例 本示例用于将examplebucket并行文件系统中的folderName/originalObjectName对象重命名为newFolderName/newObjectName。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.RenameObjectRequest; import com.obs.services.model.RenameObjectResult; public class RenameObject001 { public static void main(String[] args) { // 您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。如果使用硬编码可能会存在泄露风险。 // 您可以登录访问管理控制台获取访问密钥AK/SK String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。 // 您可以通过环境变量获取访问密钥AK/SK/SecurityToken,也可以使用其他外部引入方式传入。 // String securityToken = System.getenv("SECURITY_TOKEN"); // endpoint填写桶所在的endpoint, 此处以华北-北京四为例,其他地区请按实际情况填写。 String endPoint = "https://obs.cn-north-4.myhuaweicloud.com"; // 您可以通过环境变量获取endPoint,也可以使用其他外部引入方式传入。 //String endPoint = System.getenv("ENDPOINT"); // 创建ObsClient实例 // 使用永久AK/SK初始化客户端 ObsClient obsClient = new ObsClient(ak, sk,endPoint); // 使用临时AK/SK和SecurityToken初始化客户端 // ObsClient obsClient = new ObsClient(ak, sk, securityToken, endPoint); try { // 重命名对象 RenameObjectRequest request = new RenameObjectRequest(); request.setBucketName("examplebucket"); // objectKey 为原对象的完整对象名 request.setObjectKey("folderName/originalObjectName"); // newObjectKey 为目标对象的完整对象名 request.setNewObjectKey("newFolderName/newObjectName"); RenameObjectResult result = obsClient.renameObject(request); System.out.println("renameObject successfully"); System.out.println("HTTP Code:" + result.getStatusCode()); } catch (ObsException e) { System.out.println("renameObject failed"); // 请求失败,打印http状态码 System.out.println("HTTP Code:" + e.getResponseCode()); // 请求失败,打印服务端错误码 System.out.println("Error Code:" + e.getErrorCode()); // 请求失败,打印详细错误信息 System.out.println("Error Message:" + e.getErrorMessage()); // 请求失败,打印请求id System.out.println("Request ID:" + e.getErrorRequestId()); System.out.println("Host ID:" + e.getErrorHostId()); e.printStackTrace(); } catch (Exception e) { System.out.println("renameObject failed"); // 其他异常信息打印 e.printStackTrace(); } } }
  • 请求参数说明 表1 请求参数列表 参数名称 参数类型 是否必选 描述 request RenameObjectRequest 必选 参数解释: 重命名对象请求参数,详见RenameObjectRequest。 表2 RenameObjectRequest 参数名称 参数类型 是否可选 描述 bucketName String 必选 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 默认取值: 无 objectKey String 必选 参数解释: 原对象名称。对象名是对象在存储桶中的唯一标识。对象名是对象在桶中的完整路径,路径中不包含桶名。 例如,您对象的访问地址为examplebucket.obs.cn-north-4.myhuaweicloud.com/folder/test.txt 中,对象名为folder/test.txt。 取值范围: 长度大于0且不超过1024的字符串。 默认取值: 无 newObjectKey String 必选 参数解释: 修改后的目标对象名称。对象名是对象在存储桶中的唯一标识。对象名是对象在桶中的完整路径,路径中不包含桶名。 例如,您对象的访问地址为examplebucket.obs.cn-north-4.myhuaweicloud.com/folder/test.txt 中,对象名为folder/test.txt。 取值范围: 长度大于0且不超过1024的字符串。 默认取值: 无
  • 接口约束 您必须是并行文件系统拥有者或拥有重命名文件的权限,才能重命名文件。建议使用IAM或策略进行授权,如果使用IAM则需授予obs:bucket:PutObject权限,如果使用策略则需授予PutObject权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、配置对象策略。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。 目前接口仅在并行文件系统支持,普通对象并行文件系统不支持,如何创建并行文件系统请参考创建并行文件系统(Java SDK)。
  • 代码示例 本示例用于指定位置修改examplebucket并行文件系统中objectname对象的内容。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.ModifyObjectRequest; import com.obs.services.model.ModifyObjectResult; import java.io.ByteArrayInputStream; public class ModifyObject001 { public static void main(String[] args) { // 您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。如果使用硬编码可能会存在泄露风险。 // 您可以登录访问管理控制台获取访问密钥AK/SK String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。 // 您可以通过环境变量获取访问密钥AK/SK/SecurityToken,也可以使用其他外部引入方式传入。 // String securityToken = System.getenv("SECURITY_TOKEN"); // endpoint填写桶所在的endpoint, 此处以华北-北京四为例,其他地区请按实际情况填写。 String endPoint = "https://obs.cn-north-4.myhuaweicloud.com"; // 您可以通过环境变量获取endPoint,也可以使用其他外部引入方式传入。 //String endPoint = System.getenv("ENDPOINT"); // 创建ObsClient实例 // 使用永久AK/SK初始化客户端 ObsClient obsClient = new ObsClient(ak, sk,endPoint); // 使用临时AK/SK和SecurityToken初始化客户端 // ObsClient obsClient = new ObsClient(ak, sk, securityToken, endPoint); try { // 第一次上传 ModifyObjectRequest request = new ModifyObjectRequest(); request.setBucketName("examplebucket"); request.setObjectKey("objectname"); request.setPosition(0); request.setInput(new ByteArrayInputStream("HELLO OBS FIRST".getBytes())); ModifyObjectResult result = obsClient.modifyObject(request); // 第二次修改写 request.setPosition(0); request.setInput(new ByteArrayInputStream("hello obs second".getBytes())); result = obsClient.modifyObject(request); System.out.println("modifyObject successfully"); System.out.println("HTTP Code: " + result.getStatusCode()); } catch (ObsException e) { System.out.println("modifyObject failed"); // 请求失败,打印http状态码 System.out.println("HTTP Code:" + e.getResponseCode()); // 请求失败,打印服务端错误码 System.out.println("Error Code:" + e.getErrorCode()); // 请求失败,打印详细错误信息 System.out.println("Error Message:" + e.getErrorMessage()); // 请求失败,打印请求id System.out.println("Request ID:" + e.getErrorRequestId()); System.out.println("Host ID:" + e.getErrorHostId()); e.printStackTrace(); } catch (Exception e) { System.out.println("modifyObject failed"); // 其他异常信息打印 e.printStackTrace(); } } }
  • 请求参数说明 表1 请求参数列表 参数名称 参数类型 是否必选 描述 request ModifyObjectRequest 必选 参数解释: 修改写对象请求参数,详见ModifyObjectRequest。 表2 ModifyObjectRequest 参数名称 参数类型 是否可选 描述 bucketName String 必选 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 默认取值: 无 objectKey String 必选 参数解释: 对象名。对象名是对象在存储桶中的唯一标识。对象名是对象在桶中的完整路径,路径中不包含桶名。 例如,您对象的访问地址为examplebucket.obs.cn-north-4.myhuaweicloud.com/folder/test.txt 中,对象名为folder/test.txt。 取值范围: 长度大于0且不超过1024的字符串。 默认取值: 无 position long 必选 参数解释: 修改写操作的位置。 取值范围: 不小于0的长整型。单位:字节。 默认取值: 无 input InputStream 可选 参数解释: 待上传对象的数据流。 默认取值: 无 file File 可选 参数解释: 待上传的本地文件。 默认取值: 无 encodeHeaders boolean 可选 参数解释: 是否开启OBS对请求头域的自动编码。 由于HTTP编码规范限制,无法发送非ASCII码字符,SDK会在发送请求时对您头域中的中文汉字进行url编码,发送编码后数据。如您设置的值content-disposition为attachment; filename="中文.txt",则对象元数据中存储的信息为attachment; filename="%E4%B8%AD%E6%96%87.txt"。使用浏览器访问时浏览器将会自动解码。 取值范围: true:启用SDK编码。 false:不启用SDK编码。 默认取值: true
  • 接口约束 您必须是并行文件系统拥有者或拥有修改写对象的权限,才能修改写对象。建议使用IAM或策略进行授权,如果使用IAM则需授予obs:bucket:PutObject权限,如果使用策略则需授予PutObject权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、配置对象策略。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。 目前接口仅在并行文件系统支持,普通对象并行文件系统不支持,如何创建并行文件系统请参考创建并行文件系统(Java SDK)。
  • 功能说明 并行文件系统(Parallel File System)是对象存储服务(Object Storage Service,OBS)提供的一种经过优化的高性能文件系统,提供毫秒级别访问时延,TB/s级别带宽和百万级别的IOPS,能够快速处理高性能计算(HPC)工作负载。 作为对象存储服务的子产品,并行文件系统支持用户按照标准的OBS接口读取数据。也支持通过部署在弹性云服务器中的PFS客户端(obsfs工具),按照POSIX文件语义读写数据;通过obsfs用户可以将创建的并行文件系统挂载到云端Linux服务器上,并能像操作本地文件系统一样对并行文件系统内的文件和目录进行在线处理,包括:创建和删除文件/目录,重命名文件/目录,修改写文件等操作。 您可以通过ObsClient.listBuckets列举已存在的并行文件系统。 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。
  • 接口约束 您必须拥有obs:bucket:ListAllMyBuckets权限,才能获取并行文件系统列表。建议使用IAM进行授权,配置方式详见使用IAM自定义策略。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。 并行文件系统暂不支持配额配置功能,默认无配额限制。 必须设置ListBucketsRequest.setBucketType参数为BucketTypeEnum.PFS,才可以列举出当前用户的并行文件系统。 设置ListBucketsRequest.setQueryLocation参数为true后,可在列举并行文件系统时查询并行文件系统的区域位置。
  • 请求参数说明 表1 请求参数列表 参数名称 参数类型 是否必选 描述 request ListBucketsRequest 必选 参数解释: 获取并行文件系统列表请求参数,详见ListBucketsRequest。 表2 ListBucketsRequest 参数名称 参数类型 是否必选 描述 queryLocation boolean 可选 参数解释: 是否同时查询并行文件系统的区域位置。 取值范围: true:同时查询并行文件系统的区域位置。 false:不查询并行文件系统的区域位置。 默认取值: false bucketType BucketTypeEnum 可选 参数解释: 列举指定类型的并行文件系统。 取值范围: 列举并行文件系统时,bucketType必须选择PFS。 默认取值: 无
  • 代码示例 本示例用于新建名为examplebucket的并行文件系统。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.BucketTypeEnum; import com.obs.services.model.CreateBucketRequest; import com.obs.services.model.HeaderResponse; public class CreateBucket001 { public static void main(String[] args) { // 您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。如果使用硬编码可能会存在泄露风险。 // 您可以登录访问管理控制台获取访问密钥AK/SK String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。 // 您可以通过环境变量获取访问密钥AK/SK/SecurityToken,也可以使用其他外部引入方式传入。 // String securityToken = System.getenv("SECURITY_TOKEN"); // endpoint填写桶所在的endpoint, 此处以华北-北京四为例,其他地区请按实际情况填写。 String endPoint = "https://obs.cn-north-4.myhuaweicloud.com"; // 您可以通过环境变量获取endPoint,也可以使用其他外部引入方式传入。 //String endPoint = System.getenv("ENDPOINT"); // 创建ObsClient实例 // 使用永久AK/SK初始化客户端 ObsClient obsClient = new ObsClient(ak, sk,endPoint); // 使用临时AK/SK和SecurityToken初始化客户端 // ObsClient obsClient = new ObsClient(ak, sk, securityToken, endPoint); try { // 创建并行文件系统成功 CreateBucketRequest request = new CreateBucketRequest(); request.setBucketName("examplebucket"); request.setBucketType(BucketTypeEnum.PFS); // 指定所属区域,location 需要与 endpoint的位置信息 一致 request.setLocation("your_region"); HeaderResponse response = obsClient.createBucket(request); System.out.println("CreateBucket successfully"); System.out.println("StatusCode:" + response.getStatusCode()); System.out.println("RequestId:" + response.getRequestId()); } catch (ObsException e) { System.out.println("CreateBucket failed"); // 请求失败,打印http状态码 System.out.println("HTTP Code:" + e.getResponseCode()); // 请求失败,打印服务端错误码 System.out.println("Error Code:" + e.getErrorCode()); // 请求失败,打印详细错误信息 System.out.println("Error Message:" + e.getErrorMessage()); // 请求失败,打印请求id System.out.println("Request ID:" + e.getErrorRequestId()); System.out.println("Host ID:" + e.getErrorHostId()); e.printStackTrace(); } catch (Exception e) { System.out.println("CreateBucket failed"); // 其他异常信息打印 e.printStackTrace(); } } }
  • 功能说明 并行文件系统(Parallel File System)是对象存储服务(Object Storage Service,OBS)提供的一种经过优化的高性能文件系统,提供毫秒级别访问时延,TB/s级别带宽和百万级别的IOPS,能够快速处理高性能计算(HPC)工作负载。 作为对象存储服务的子产品,并行文件系统支持用户按照标准的OBS接口读取数据。也支持通过部署在弹性云服务器中的PFS客户端(obsfs工具),按照POSIX文件语义读写数据;通过obsfs用户可以将创建的并行文件系统挂载到云端Linux服务器上,并能像操作本地文件系统一样对并行文件系统内的文件和目录进行在线处理,包括:创建和删除文件/目录,重命名文件/目录,修改写文件等操作。 您可以通过ObsClient.createBucket创建并行文件系统。 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。
  • 接口约束 您必须拥有obs:bucket:CreateBucket权限,才能创建并行文件系统。建议使用IAM进行授权,配置方式详见使用IAM自定义策略。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。 不支持将已有的OBS桶修改为并行文件系统。 并行文件系统暂不支持配额配置功能,默认无配额限制。 同一账号下,可以创建多个桶,数量上限是100个(包括对象桶和并行文件系统,不区分地域),存储桶中的对象数量和大小没有限制。 新创建并行文件系统的桶名在OBS中必须是唯一的。如果是同一个用户重复创建同一区域的同名桶时返回HTTP状态码200。除此以外的其他场景重复创建同名桶返回HTTP状态码409,表明桶已存在。 用户删除并行文件系统后,需要等待30分钟才能创建同名桶和并行文件系统。 并不是所有区域都支持创建多AZ并行文件系统,您可以在产品价格详情页面,查询指定区域是否支持多AZ。
  • 代码示例 本示例用于删除example-bucket桶的exampleConfigId001清单规则。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.HeaderResponse; import com.obs.services.model.inventory.DeleteInventoryConfigurationRequest; import com.obs.services.model.inventory.GetInventoryConfigurationRequest; import com.obs.services.model.inventory.GetInventoryConfigurationResult; import com.obs.services.model.inventory.InventoryConfiguration; public class DeleteInventoryConfiguration001 { public static void main(String[] args) { // 您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。如果使用硬编码可能会存在泄露风险。 // 您可以登录访问管理控制台获取访问密钥AK/SK String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。 // 您可以通过环境变量获取访问密钥AK/SK/SecurityToken,也可以使用其他外部引入方式传入。 // String securityToken = System.getenv("SECURITY_TOKEN"); // endpoint填写桶所在的endpoint, 此处以华北-北京四为例,其他地区请按实际情况填写。 String endPoint = "https://obs.cn-north-4.myhuaweicloud.com"; // 您可以通过环境变量获取endPoint,也可以使用其他外部引入方式传入。 // String endPoint = System.getenv("ENDPOINT"); // 创建ObsClient实例 // 使用永久AK/SK初始化客户端 ObsClient obsClient = new ObsClient(ak, sk,endPoint); // 使用临时AK/SK和SecurityToken初始化客户端 // ObsClient obsClient = new ObsClient(ak, sk, securityToken, endPoint); try { // 设置相关示例参数 String exampleBucketName = "example-bucket"; String exampleConfigurationId = "exampleConfigId001"; DeleteInventoryConfigurationRequest request = new DeleteInventoryConfigurationRequest(exampleBucketName, exampleConfigurationId); // 删除桶清单配置规则 HeaderResponse result = obsClient.deleteInventoryConfiguration(request); // 打印HTTP状态码 System.out.println("HTTP Code: " + result.getStatusCode()); System.out.println("DeleteInventoryConfiguration succeeded"); } catch (ObsException e) { System.out.println("DeleteInventoryConfiguration failed"); // 请求失败,打印http状态码 System.out.println("HTTP Code: " + e.getResponseCode()); // 请求失败,打印服务端错误码 System.out.println("Error Code:" + e.getErrorCode()); // 请求失败,打印详细错误信息 System.out.println("Error Message:" + e.getErrorMessage()); // 请求失败,打印请求id System.out.println("Request ID:" + e.getErrorRequestId()); System.out.println("Host ID:" + e.getErrorHostId()); } catch (Exception e) { System.out.println("DeleteInventoryConfiguration failed"); // 其他异常信息打印 e.printStackTrace(); } } }
  • 接口约束 您必须是桶拥有者或者拥有获取桶清单权限,才能获取桶清单。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:bucket:DeleteBucketInventoryConfiguration权限,如果使用桶策略则需授予DeleteBucketInventoryConfiguration权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、自定义创建桶策略。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。
  • 请求参数说明 表1 DeleteInventoryConfigurationRequest 参数名称 参数类型 是否必选 描述 bucketName String 是 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 默认取值: 无 configurationId String 是 参数解释: 要删除的清单配置的id。最长64字节,必须由以下字符组成"a-z"、"A-Z"、"0-9"、"-"、"_"和"." 默认取值: 无
  • 请求参数说明 表1 ListInventoryConfigurationRequest 参数名称 参数类型 是否必选 描述 bucketName String 是 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 默认取值: 无
  • 接口约束 您必须是桶拥有者或者拥有列举桶清单权限,才能列举桶清单。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:bucket:GetInventoryConfiguration权限,如果使用桶策略则需授予GetInventoryConfiguration权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、自定义创建桶策略。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。
  • 代码示例 本示例用于获取example-bucket桶,配置规则id为exampleConfigId001的清单规则。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.inventory.GetInventoryConfigurationRequest; import com.obs.services.model.inventory.GetInventoryConfigurationResult; import com.obs.services.model.inventory.InventoryConfiguration; public class GetInventoryConfiguration001 { public static void main(String[] args) { // 您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。如果使用硬编码可能会存在泄露风险。 // 您可以登录访问管理控制台获取访问密钥AK/SK String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。 // 您可以通过环境变量获取访问密钥AK/SK/SecurityToken,也可以使用其他外部引入方式传入。 // String securityToken = System.getenv("SECURITY_TOKEN"); // endpoint填写桶所在的endpoint, 此处以华北-北京四为例,其他地区请按实际情况填写。 String endPoint = "https://obs.cn-north-4.myhuaweicloud.com"; // 您可以通过环境变量获取endPoint,也可以使用其他外部引入方式传入。 // String endPoint = System.getenv("ENDPOINT"); // 创建ObsClient实例 // 使用永久AK/SK初始化客户端 ObsClient obsClient = new ObsClient(ak, sk,endPoint); // 使用临时AK/SK和SecurityToken初始化客户端 // ObsClient obsClient = new ObsClient(ak, sk, securityToken, endPoint); try { // 设置相关示例参数 String exampleBucketName = "example-bucket"; String exampleConfigurationId = "exampleConfigId001"; GetInventoryConfigurationRequest request = new GetInventoryConfigurationRequest(exampleBucketName, exampleConfigurationId); // 获取桶清单配置规则 GetInventoryConfigurationResult result = obsClient.getInventoryConfiguration(request); InventoryConfiguration inventoryConfiguration = result.getInventoryConfiguration(); // 打印inventoryConfiguration的所有成员 System.out.println("ConfigurationId:" + inventoryConfiguration.getConfigurationId()); System.out.println("DestinationBucket:" + inventoryConfiguration.getDestinationBucket()); System.out.println("InventoryFormat:" + inventoryConfiguration.getInventoryFormat()); System.out.println("Enabled:" + inventoryConfiguration.getEnabled()); System.out.println("Frequency:" + inventoryConfiguration.getFrequency()); System.out.println("IncludedObjectVersions:" + inventoryConfiguration.getIncludedObjectVersions()); System.out.println("InventoryPrefix:" + inventoryConfiguration.getInventoryPrefix()); System.out.println("ObjectPrefix:" + inventoryConfiguration.getObjectPrefix()); System.out.println("OptionalFields:" + inventoryConfiguration.getOptionalFields()); // 打印HTTP状态码 System.out.println("HTTP Code: " + result.getStatusCode()); System.out.println("GetInventoryConfiguration succeeded"); } catch (ObsException e) { System.out.println("GetInventoryConfiguration failed"); // 请求失败,打印http状态码 System.out.println("HTTP Code: " + e.getResponseCode()); // 请求失败,打印服务端错误码 System.out.println("Error Code:" + e.getErrorCode()); // 请求失败,打印详细错误信息 System.out.println("Error Message:" + e.getErrorMessage()); // 请求失败,打印请求id System.out.println("Request ID:" + e.getErrorRequestId()); System.out.println("Host ID:" + e.getErrorHostId()); } catch (Exception e) { System.out.println("GetInventoryConfiguration failed"); // 其他异常信息打印 e.printStackTrace(); } } }
  • 接口约束 您必须是桶拥有者或者拥有获取桶清单权限,才能获取桶清单。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:bucket:GetInventoryConfiguration权限,如果使用桶策略则需授予GetInventoryConfiguration权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、自定义创建桶策略。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。
  • 请求参数说明 表1 GetInventoryConfigurationRequest 参数名称 参数类型 是否必选 描述 bucketName String 是 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 默认取值: 无 configurationId String 是 参数解释: 清单配置的id。 约束限制: 最长64字节,必须由以下字符组成"a-z"、"A-Z"、"0-9"、"-"、"_"和"." 默认取值: 无
  • 代码示例 本示例将为example-bucket桶设置桶清单,桶清单会统计前缀为exampleObjectPrefix的对象的信息。清单文件将存储在example-target-bucket桶中,清单文件的前缀为exampleInventoryPrefix。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.HeaderResponse; import com.obs.services.model.inventory.InventoryConfiguration; import com.obs.services.model.inventory.SetInventoryConfigurationRequest; public class SetInventoryConfiguration001 { public static void main(String[] args) { // 您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。如果使用硬编码可能会存在泄露风险。 // 您可以登录访问管理控制台获取访问密钥AK/SK String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。 // 您可以通过环境变量获取访问密钥AK/SK/SecurityToken,也可以使用其他外部引入方式传入。 // String securityToken = System.getenv("SECURITY_TOKEN"); // endpoint填写桶所在的endpoint, 此处以华北-北京四为例,其他地区请按实际情况填写。 String endPoint = "https://obs.cn-north-4.myhuaweicloud.com"; // 您可以通过环境变量获取endPoint,也可以使用其他外部引入方式传入。 // String endPoint = System.getenv("ENDPOINT"); // 创建ObsClient实例 // 使用永久AK/SK初始化客户端 ObsClient obsClient = new ObsClient(ak, sk,endPoint); // 使用临时AK/SK和SecurityToken初始化客户端 // ObsClient obsClient = new ObsClient(ak, sk, securityToken, endPoint); try { // 设置相关示例参数 String exampleBucketName = "example-bucket"; String exampleTargetBucketName = "example-target-bucket"; String exampleConfigurationId = "exampleConfigId001"; String exampleInventoryPrefix = "exampleInventoryPrefix"; String exampleObjectPrefix = "exampleObjectPrefix"; // 设置桶清单配置规则详细参数 InventoryConfiguration exampleConfiguration = new InventoryConfiguration(); exampleConfiguration.setDestinationBucket(exampleTargetBucketName); exampleConfiguration.setConfigurationId(exampleConfigurationId); exampleConfiguration.setInventoryFormat(InventoryConfiguration.InventoryFormatOptions. CS V); exampleConfiguration.setFrequency(InventoryConfiguration.FrequencyOptions.DAILY); exampleConfiguration.setEnabled(true); exampleConfiguration.setIncludedObjectVersions( InventoryConfiguration.IncludedObjectVersionsOptions.CURRENT); exampleConfiguration.setInventoryPrefix(exampleInventoryPrefix); exampleConfiguration.setObjectPrefix(exampleObjectPrefix); // 设置清单文件中会包含的额外的对象元数据字段 exampleConfiguration .getOptionalFields() .add(InventoryConfiguration.OptionalFieldOptions.IS_MULTIPART_UPLOADED); exampleConfiguration.getOptionalFields().add(InventoryConfiguration.OptionalFieldOptions.ETAG); exampleConfiguration .getOptionalFields() .add(InventoryConfiguration.OptionalFieldOptions.REPLICATION_STATUS); SetInventoryConfigurationRequest request = new SetInventoryConfigurationRequest(exampleBucketName, exampleConfiguration); // 设置桶清单配置规则 HeaderResponse response = obsClient.setInventoryConfiguration(request); System.out.println("SetInventoryConfiguration succeeded"); System.out.println("HTTP Code: " + response.getStatusCode()); } catch (ObsException e) { System.out.println("SetInventoryConfiguration failed"); // 请求失败,打印http状态码 System.out.println("HTTP Code: " + e.getResponseCode()); // 请求失败,打印服务端错误码 System.out.println("Error Code:" + e.getErrorCode()); // 请求失败,打印详细错误信息 System.out.println("Error Message:" + e.getErrorMessage()); // 请求失败,打印请求id System.out.println("Request ID:" + e.getErrorRequestId()); System.out.println("Host ID:" + e.getErrorHostId()); } catch (Exception e) { System.out.println("SetInventoryConfiguration failed"); // 其他异常信息打印 e.printStackTrace(); } } }
  • 接口约束 您必须是桶拥有者或者拥有设置桶清单权限,才能设置桶清单。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:bucket:PutBucketInventoryConfiguration权限,如果使用桶策略则需授予PutBucketInventoryConfiguration权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、自定义创建桶策略。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。 桶版本限制: 只有OBS 3.0的桶支持配置清单,目标桶无OBS版本限制。 清单数量限制: 一个桶最多支持10条桶清单。 源桶和目标桶限制: 桶清单配置的源桶和目标桶必须归属同一个账号。 桶清单配置的源桶和目标桶必须归属同一个区域。 桶清单中配置的目标桶不能开启桶默认加密。 功能限制: 只支持生成CSV格式的清单文件。 桶清单筛选条件目前仅支持设置为所有对象或指定前缀的对象。 同一个桶中多条清单规则的筛选条件不能彼此包含: 如果已经存在针对桶中所有对象的规则,则无法再创建按对象名前缀筛选的规则。如需创建,要先删除针对所有对象的规则。 如果已经存在按对象名前缀筛选的规则,则无法再创建针对桶中所有对象的规则。如需创建,要先删除所有按对象名前缀筛选的规则。 如果已经存在某个按对象名前缀筛选的规则(如前缀ab),则无法再创建与其存在包含或被包含关系的规则(如前缀a或前缀abc)。如需创建,要先删除存在包含或被包含关系的规则。 桶清单加密方式目前只支持SSE-KMS。 权限限制: 清单文件使用OBS系统用户上传到目标桶,目标桶必须给OBS系统用户写权限。 其他: 暂不对桶清单功能收费,桶清单生成后只按照存量计费。
  • 代码示例 本示例用于获取exampleBucket桶的桶存储类别。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.BucketStoragePolicyConfiguration; public class GetBucketStoragePolicy001 { public static void main(String[] args) { // 您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。如果使用硬编码可能会存在泄露风险。 // 您可以登录访问管理控制台获取访问密钥AK/SK String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。 // 您可以通过环境变量获取访问密钥AK/SK/SecurityToken,也可以使用其他外部引入方式传入。 // String securityToken = System.getenv("SECURITY_TOKEN"); // endpoint填写桶所在的endpoint, 此处以华北-北京四为例,其他地区请按实际情况填写。 String endPoint = "https://obs.cn-north-4.myhuaweicloud.com"; // 您可以通过环境变量获取endPoint,也可以使用其他外部引入方式传入。 //String endPoint = System.getenv("ENDPOINT"); // 创建ObsClient实例 // 使用永久AK/SK初始化客户端 ObsClient obsClient = new ObsClient(ak, sk,endPoint); // 使用临时AK/SK和SecurityToken初始化客户端 // ObsClient obsClient = new ObsClient(ak, sk, securityToken, endPoint); try { //示例桶名 String exampleBucket = "examplebucket"; //获取桶存储类别 BucketStoragePolicyConfiguration storagePolicy = obsClient.getBucketStoragePolicy(exampleBucket); System.out.println("GetBucketStoragePolicy successfully"); System.out.println("GetBucketStorageClass:" + storagePolicy.getBucketStorageClass()); } catch (ObsException e) { System.out.println("GetBucketStoragePolicy failed"); // 请求失败,打印http状态码 System.out.println("HTTP Code:" + e.getResponseCode()); // 请求失败,打印服务端错误码 System.out.println("Error Code:" + e.getErrorCode()); // 请求失败,打印详细错误信息 System.out.println("Error Message:" + e.getErrorMessage()); // 请求失败,打印请求id System.out.println("Request ID:" + e.getErrorRequestId()); System.out.println("Host ID:" + e.getErrorHostId()); e.printStackTrace(); } catch (Exception e) { System.out.println("GetBucketStoragePolicy failed"); // 其他异常信息打印 e.printStackTrace(); } } }
  • 接口约束 您必须是桶拥有者或拥有获取桶存储类别的权限,才能获取桶存储类别。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:bucket:GetBucketStoragePolicy权限,如果使用桶策略则需授予GetBucketStoragePolicy权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、自定义创建桶策略。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。
  • 请求参数说明 表1 请求参数列表 参数名称 参数类型 是否必选 描述 bucketName String 必选 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 默认取值: 无
共100000条