华为云用户手册

  • 接口约束 您必须是桶拥有者或拥有下载对象的权限,才能下载对象。建议使用 IAM 或桶策略进行授权,如果使用IAM则需授予obs:object:GetObject权限,如果使用桶策略则需授予GetObject权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、配置对象策略。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。 对于存储类别为归档存储的对象,需要确认对象的状态为“已恢复”才能对其进行下载。 如果指定的范围无效(比如开始位置、结束位置为负数,开始位置大于结束位置),接口会抛出异常,如果指定范围有效且结束位置大于文件大小,则返回整个对象。
  • 代码示例 本示例用于范围下载examplebucket桶中的objectname对象,并且指定下载范围是0L~1000L。 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 import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.GetObjectRequest; import com.obs.services.model.ObsObject; import java.io.InputStream; public class GetObject002 { 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 { // 范围下载 GetObjectRequest request = new GetObjectRequest("examplebucket", "objectname"); // 指定开始和结束范围 request.setRangeStart(0l); request.setRangeEnd(1000l); ObsObject obsObject = obsClient.getObject(request); // 读取数据 byte[] buf = new byte[1024]; InputStream in = obsObject.getObjectContent(); for (int n = 0; n != -1; ) { n = in.read(buf, 0, buf.length); } System.out.println("GetObject successfully"); in.close(); } catch (ObsException e) { System.out.println("GetObject 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("GetObject failed"); // 其他异常信息打印 e.printStackTrace(); } } }
  • 返回结果说明 表13 ObsObject 参数名称 参数类型 描述 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的字符串。 默认取值: 无 owner Owner 参数解释: 所有者,详见Owner。 metadata ObjectMetadata 参数解释: 对象元数据,详见ObjectMetadata。 objectContent InputStream 参数解释: 对象数据流。 默认取值: 无
  • 返回结果说明 getObject返回结果如下 表13 ObsObject 参数名称 参数类型 描述 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的字符串。 默认取值: 无 owner Owner 参数解释: 所有者,详见Owner。 metadata ObjectMetadata 参数解释: 对象元数据,详见ObjectMetadata。 objectContent InputStream 参数解释: 对象数据流。 默认取值: 无
  • 接口约束 您必须是桶拥有者或拥有下载对象的权限,才能下载对象。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:object:GetObject权限,如果使用桶策略则需授予GetObject权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、配置对象策略。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。 所有的图片处理操作均不会修改存储在桶中的原图。 归档存储不支持图片处理。 深度归档存储不支持图片处理。 处理后的图片直接返回浏览器展示,不会保存在OBS中,也不会占用存储空间,不会产生存储费用。图片处理只收取处理的费用。
  • 代码示例 图片处理下载。以下代码展示对examplebucket桶里的objectname.jpg图片对象进行缩放、旋转然后进行下载。 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.GetObjectRequest; import com.obs.services.model.ObsObject; public class GetObject008 { 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 { // 发起图片处理请求并下载 // examplebucket为桶名,objectname.jpg为对象名 GetObjectRequest request = new GetObjectRequest("examplebucket", "objectname.jpg"); // 设置图片处理参数,对图片依次进行缩放、旋转 request.setImageProcess("image/resize,m_fixed,w_100,h_100/rotate,90"); ObsObject obsObject = obsClient.getObject(request); System.out.println("getObject successfully"); obsObject.getObjectContent().close(); } catch (ObsException e) { System.out.println("getObject 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("getObject failed"); // 其他异常信息打印 e.printStackTrace(); } } }
  • 代码示例 本示例用于获取examplebucket并行文件系统中的目录Dirname的accesslabel 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 import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.fs.accesslabel.* public class GetAccessLabel{ 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 { //获取目录accesslabel GetAccessLabelRequest request = new GetAccessLabelRequest(); request.setBucketName("examplebucket"); request.setDir("Dirname"); GetAccessLabelRequest result = obsClient.GetAccessLabelRequest(request); System.out.println("GetAccessLabel successfully"); System.out.println("HTTP Code: " + result.getStatusCode()); } catch (ObsException e) { System.out.println("GetAccessLabel 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("GetAccessLabel failed"); // 其他异常信息打印 e.printStackTrace(); } } }
  • 请求参数说明 表1 请求参数列表 参数名称 参数类型 是否必选 描述 request GetAccessLabelRequest 必选 参数解释: 请求参数,详见GetAccessLabelRequest。 表2 GetAccessLabelRequest 参数名称 参数类型 是否可选 描述 bucketName String 必选 参数解释: 并行文件系统名。 约束限制: 并行文件系统的名字需全局唯一,不能与已有的任何并行文件系统名称重复,包括其他用户创建的并行文件系统。 并行文件系统命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名并行文件系统不会报错,创建的并行文件系统属性以第一次请求为准。 默认取值: 无 Dir String 必选 参数解释: 目录名。对象名是对象在存储并行文件系统中的唯一标识。目录名是并行文件系统中目录的路径,路径中不包含并行文件系统名。 例如,您对象的访问地址为examplebucket.obs.cn-north-4.myhuaweicloud.com/folder/test.txt 中,对象名为folder/test.txt。 取值范围: 长度大于0且不超过1024的字符串。 默认取值: 无
  • 接口约束 建议使用IAM或策略进行授权,如果使用IAM则需授予obs:bucket:GetAccessLabel权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、配置对象策略。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。 目前接口仅在并行文件系统支持,普通对象桶不支持,如何创建并行文件系统请参考创建并行文件系统(Java SDK)。 仅支持并行文件系统的目录级别的设置,并行文件系统级和文件级均不支持。
  • 方式四:自行编译 Jar 包 您可以下载Java SDK源码,然后自行编译 Jar 包。使用本方式安装SDK前,请确保Java环境和Maven环境正确配置并能正常使用,详细步骤如下: 下载SDK源码并解压。 通过命令行进入源码解压目录。 运行如下命令 linux系统: mvn clean package -Dmaven.test.skip=true -f pom-java.xml Windows系统: mvn clean package "-Dmaven.test.skip=true" -f pom-java.xml 构建产物位于解压目录中的target目录下。 将生成的jar包放置于本地工程的依赖路径。
  • 代码示例 本示例用于限定条件下载examplebucket桶中的objectname对象,并且指定该文件的修改时间必须在“2016-01-01”之后才能下载成功。 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 import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.GetObjectRequest; import com.obs.services.model.ObsObject; import java.text.SimpleDateFormat; public class GetObject004 { 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 { // 限定条件下载 GetObjectRequest request = new GetObjectRequest("examplebucket", "objectname"); request.setRangeStart(0l); request.setRangeEnd(1000l); request.setIfModifiedSince(new SimpleDateFormat("yyyy-MM-dd").parse("2016-01-01")); ObsObject obsObject = obsClient.getObject(request); System.out.println("getObject successfully"); obsObject.getObjectContent().close(); } catch (ObsException e) { System.out.println("getObject 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("getObject failed"); // 其他异常信息打印 e.printStackTrace(); } } }
  • 接口约束 您必须是桶拥有者或拥有下载对象的权限,才能下载对象。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:object:GetObject权限,如果使用桶策略则需授予GetObject权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、配置对象策略。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。 对于存储类别为归档存储的对象,需要确认对象的状态为“已恢复”才能对其进行下载。
  • 返回结果说明 表13 ObsObject 参数名称 参数类型 描述 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的字符串。 默认取值: 无 owner Owner 参数解释: 所有者,详见Owner。 metadata ObjectMetadata 参数解释: 对象元数据,详见ObjectMetadata。 objectContent InputStream 参数解释: 对象数据流。 默认取值: 无
  • 代码示例:复制对象时重写对象访问权限 复制对象时重写对象访问权限,将sourcebucketname桶下的sourceobjectname对象复制到destbucketname桶下的destobjectname对象中。 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 import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.AccessControlList; import com.obs.services.model.CopyObjectRequest; import com.obs.services.model.CopyObjectResult; public class CopyObject004 { 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 { // 复制对象时重写对象访问权限 CopyObjectRequest request = new CopyObjectRequest("sourcebucketname", "sourceobjectname", "destbucketname", "destobjectname"); // 复制时重写对象访问权限为私有读写 request.setAcl(AccessControlList.REST_CANNED_PRIVATE); CopyObjectResult result = obsClient.copyObject(request); System.out.println("copyObject successfully"); System.out.println("Etag:" + result.getEtag()); } catch (ObsException e) { System.out.println("copyObject 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("copyObject failed"); // 其他异常信息打印 e.printStackTrace(); } } }
  • 代码示例:简单复制对象 本示例展示了如何将sourcebucketname桶下的sourceobjectname对象简单复制到destbucketname桶下的destobjectname对象中。示例代码如下: 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.CopyObjectResult; public class CopyObject001 { 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 { // 简单复制 CopyObjectResult result = obsClient.copyObject("sourcebucketname", "sourceobjectname", "destbucketname", "destobjectname"); System.out.println("copyObject successfully"); System.out.println("StatusCode:" + result.getStatusCode()); System.out.println("Etag:" + result.getEtag()); } catch (ObsException e) { System.out.println("copyObject 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("copyObject failed"); // 其他异常信息打印 e.printStackTrace(); } } }
  • 代码示例:限定条件复制 限定条件复制。将sourcebucketname桶下的sourceobjectname对象复制到destbucketname桶下的destobjectname对象中。 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 import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.CopyObjectRequest; import com.obs.services.model.CopyObjectResult; import java.text.SimpleDateFormat; public class CopyObject003 { 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 { // 限定条件复制 CopyObjectRequest request = new CopyObjectRequest("sourcebucketname", "sourceobjectname", "destbucketname", "destobjectname"); request.setIfModifiedSince(new SimpleDateFormat("yyyy-MM-dd").parse("2016-01-01")); request.setIfNoneMatchTag("none-match-etag"); CopyObjectResult result = obsClient.copyObject(request); System.out.println("copyObject successfully"); System.out.println("Etag:" + result.getEtag()); } catch (ObsException e) { System.out.println("copyObject 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("copyObject failed"); // 其他异常信息打印 e.printStackTrace(); } } }
  • 接口约束 您必须是桶拥有者或拥有复制对象的权限,才能复制对象。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:object:PutObject权限,如果使用桶策略则需授予PutObject权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、配置对象策略。 用户有待复制的源对象的读权限。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。 复制对象操作的请求需要通过头域携带拷贝的原桶和对象信息,不能携带消息实体。 支持同区域跨桶复制,不支持跨区域复制。 目标对象大小范围是[0, 5GB],如果源对象大小超过5GB,只能使用分段复制功能复制对象。 如果待复制的源对象是归档存储类别,则必须先恢复源对象才能进行复制。
  • 代码示例 本示例用于删除examplebucket并行文件系统中的目录Dirname的accesslabel 。 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 import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.fs.accesslabel.* public class DeleteAccessLabel{ 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 { //获取目录accesslabel DeleteAccessLabelRequest request = new DeleteAccessLabelRequest(); request.setBucketName("examplebucket"); request.setDir("Dirname"); DeleteAccessLabelRequest result = obsClient.DeleteAccessLabelRequest(request); System.out.println("DeleteAccessLabel successfully"); System.out.println("HTTP Code: " + result.getStatusCode()); } catch (ObsException e) { System.out.println("DeleteAccessLabel 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("DeleteAccessLabel failed"); // 其他异常信息打印 e.printStackTrace(); } } }
  • 请求参数说明 表1 请求参数列表 参数名称 参数类型 是否必选 描述 request DeleteAccessLabelRequest 必选 参数解释: 请求参数,详见DeleteAccessLabelRequest。 表2 DeleteAccessLabelRequest 参数名称 参数类型 是否可选 描述 bucketName String 必选 参数解释: 并行文件系统名。 约束限制: 并行文件系统的名字需全局唯一,不能与已有的任何并行文件系统名称重复,包括其他用户创建的并行文件系统。 并行文件系统命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名并行文件系统不会报错,创建的桶属性以第一次请求为准。 默认取值: 无 Dir String 必选 参数解释: 目录名。目录名是并行文件系统中目录的路径,路径中不包含并行文件系统名。 例如,您对象的访问地址为examplebucket.obs.cn-north-4.myhuaweicloud.com/folder/test.txt 中,对象名为folder/test.txt。 取值范围: 长度大于0且不超过1024的字符串。 默认取值: 无
  • 接口约束 建议使用IAM或策略进行授权,如果使用IAM则需授予obs:bucket:DeleteAccessLabel权限。相关授权方式介绍可参见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 59 60 import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.ObsObject; import java.io.ByteArrayOutputStream; import java.io.InputStream; public class GetObject001 { 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, 此处以华北-北京四为例,其他地区请按实际情况填写。查看桶所在的endpoint请参见:https://support.huaweicloud.com/usermanual-obs/obs_03_0312.html。 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 { // 流式下载 ObsObject obsObject = obsClient.getObject("examplebucket", "objectname"); // 读取对象内容 System.out.println("Object content:"); InputStream input = obsObject.getObjectContent(); byte[] b = new byte[1024]; ByteArrayOutputStream bos = new ByteArrayOutputStream(); int len; while ((len = input.read(b)) != -1) { bos.write(b, 0, len); } System.out.println("getObjectContent successfully"); System.out.println(new String(bos.toByteArray())); bos.close(); input.close(); } catch (ObsException e) { System.out.println("getObjectContent 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("getObjectContent failed"); // 其他异常信息打印 e.printStackTrace(); } } }
  • 接口约束 您必须是桶拥有者或拥有下载对象的权限,才能下载对象。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:object:GetObject权限,如果使用桶策略则需授予GetObject权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、配置对象策略。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。 对于存储类别为归档存储的对象,需要确认对象的状态为“已恢复”才能对其进行下载。 ObsObject.getObjectContent获取的对象输入流一定要显式关闭,否则会造成资源泄露。
  • 返回结果说明 表13 ObsObject 参数名称 参数类型 描述 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的字符串。 默认取值: 无 owner Owner 参数解释: 所有者,详见Owner。 metadata ObjectMetadata 参数解释: 对象元数据,详见ObjectMetadata。 objectContent InputStream 参数解释: 对象数据流。 默认取值: 无
  • 接口约束 您必须是桶拥有者或拥有复制对象的权限,才能复制对象。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:object:PutObject权限,如果使用桶策略则需授予PutObject权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、配置对象策略。 用户有待复制的源对象的读权限。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。 复制对象操作的请求需要通过头域携带拷贝的原桶和对象信息,不能携带消息实体。 支持同区域跨桶复制,不支持跨区域复制。 目标对象大小范围是[0, 5GB],如果源对象大小超过5GB,只能使用分段复制功能复制对象。 如果待复制的源对象是归档存储类别,则必须先恢复源对象才能进行复制。
  • 代码示例 以下代码展示了如何通过设置versionId复制sourceexamplebucket桶中sourceobjectname的多版本对象。 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 import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.CopyObjectRequest; public class CopyObject001 { 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 { // 复制多版本对象 CopyObjectRequest request = new CopyObjectRequest(); request.setSourceBucketName("sourceexamplebucket"); request.setSourceObjectKey("sourceobjectname"); // 设置要复制对象的版本号 request.setVersionId("versionid"); request.setDestinationBucketName("destexamplebucket"); request.setDestinationObjectKey("destobjectname"); obsClient.copyObject(request); System.out.println("copyObject successfully"); } catch (ObsException e) { System.out.println("copyObject 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("copyObject failed"); // 其他异常信息打印 e.printStackTrace(); } } }
  • 代码示例 本示例通过下载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 59 60 61 62 63 64 import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.GetObjectRequest; import com.obs.services.model.ObjectMetadata; import com.obs.services.model.ObsObject; import com.obs.services.model.PutObjectRequest; public class GetObject006 { 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 { // 获取自定义元数据 // 上传对象,设置自定义元数据 PutObjectRequest request = new PutObjectRequest("examplebucket", "objectname"); ObjectMetadata metadata = new ObjectMetadata(); metadata.addUserMetadata("property", "property-value"); request.setMetadata(metadata); obsClient.putObject(request); // 下载对象,获取对象自定义元数据 GetObjectRequest request1 = new GetObjectRequest("examplebucket", "objectname"); ObsObject obsObject = obsClient.getObject(request1); System.out.println("getObject successfully"); // 读取对象元数据 System.out.println(obsObject.getMetadata().getContentType()); // 获取名为property的自定义元数据 System.out.println(obsObject.getMetadata().getUserMetadata("property")); // 获取所有自定义元数据 System.out.println("allUserMetadata:" + metadata.getAllMetadata()); obsObject.getObjectContent().close(); } catch (ObsException e) { System.out.println("getObject 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("getObject failed"); // 其他异常信息打印 e.printStackTrace(); } } }
  • 接口约束 您必须是桶拥有者或拥有获取对象元数据的权限,才能获取自定义元数据。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:object:GetObject权限,如果使用桶策略则需授予GetObject权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、配置对象策略。 OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。
  • 返回结果说明 表13 ObsObject 参数名称 参数类型 描述 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的字符串。 默认取值: 无 owner Owner 参数解释: 所有者,详见Owner。 metadata ObjectMetadata 参数解释: 对象元数据,详见ObjectMetadata。 objectContent InputStream 参数解释: 对象数据流。 默认取值: 无
  • 计费说明 iDME的计费项由“基础版 iDME设计服务”、“体验版 数据建模引擎 节点”、“基础版 数据建模引擎 节点”、“结构化数据增量包(20GB)”、“文件数据增量包(500GB)”、“基线数据增量包(20GB*2)”、“基础版 数据建模引擎 用户”、“基础版 数据建模引擎 边缘节点”、“基础版 数据建模引擎 边缘用户”、“数字主线引擎 MCU”、“基础版 数字化制造基础服务 站点”、“基础版 数字化制造基础服务 用户”组成。具体内容如表1所示。 标 * 的计费项为必选计费项。 表1 iDME计费项 计费项 计费项说明 适用的计费模式 计费公式 *基础版 iDME设计服务 用于创建和设计应用及数据模型。 一个华为账号下只能购买一个。 按需计费 无。 体验版 数据建模引擎 节点 适合新用户尝鲜使用,一个华为账号只能体验一次。在免费试用期间支持删除,且删除后不再支持购买。 体验版是iDME提供的公共运行环境资源池,资源有限,仅当有空闲资源时才可申请。如有需要,请通过提交工单或拨打服务热线(4000-955-988或950808)并提供账号ID及企业联系方式申请。 须知: 体验版数据建模引擎不保障云服务等级协议(SLA),仅适用于测试或体验场景,不可用于正式生产。 按需计费 无。 *基础版 数据建模引擎 节点 节点表示应用运行所需的一组固定规格的底层云服务组合(包含计算资源、数据库等)。 部署在公有云上,适用的节点类型为“基础版 数据建模引擎 节点”,单节点提供固定规格:应用运行4U8G*2,结构化数据存储200G,非结构化存储500G和基线数据存储20G。 计费因子:基础版节点 包年/包月 节点单价 * 购买数量 节点单价以售卖页显示的价格为准,或者参见工业数字模型驱动引擎价格详情。 结构化数据增量包(20GB) 搭配“基础版 数据建模引擎 节点”使用。单个结构化数据增量包可提供20GB的结构化数据容量。 如果需要对节点的结构化数据容量进行扩容,请购买此类型增量包。 计费因子:结构化数据增量包 包年/包月 结构化数据增量包单价 * 购买数量 结构化数据增量包单价以售卖页显示的价格为准,或者参见工业数字模型驱动引擎价格详情。 文件数据增量包(500GB) 搭配“基础版 数据建模引擎 节点”使用。单个文件数据增量包可提供500GB的文件数据容量。 如果需要对节点中的文件数据容量进行扩容,请购买此类型增量包。 计费因子:文件数据增量包 包年/包月 文件数据增量包单价 * 购买数量 文件数据增量包单价以售卖页显示的价格为准,或者请参见工业数字模型驱动引擎价格详情。 基线数据增量包(20GB*2) 搭配“基础版 数据建模引擎 节点”使用。单个基线数据增量包可提供40GB的基线数据容量。 如果需要对节点中的基线数据容量进行扩容,请购买此类型增量包。 计费因子:基线数据增量包 包年/包月 基线数据增量包单价 * 购买数量 基线数据增量包单价以售卖页显示的价格为准,或者参见工业数字模型驱动引擎价格详情。 *基础版 数据建模引擎 用户 用户表示使用您的应用程序的个人。 用户数的IT含义指iDME XDMUser表中的唯一用户记录,系统会自动对 数据实例 的创建者、更新者等数据操作者进行累计统计后去重,并记录在XDMUser表中。 部署在公有云上,适用的用户类型为“基础版 数据建模引擎 用户”。 计费因子:基础版读写用户 包年/包月 用户单价 * 购买数量 用户单价以售卖页显示的价格为准,或者参见工业数字模型驱动引擎价格详情。 *基础版 数据建模引擎 边缘节点 部署在边缘云上,应用运行依赖于智能边缘小站所提供的资源,适用的节点类型为“基础版 数据建模引擎 边缘节点”。 计费因子:边缘端节点 包年/包月 边缘节点单价 * 购买数量 节点单价以售卖页显示的价格为准,或者参见工业数字模型驱动引擎价格详情。 *基础版 数据建模引擎 边缘用户 部署在边缘云上,适用的用户类型为“基础版 数据建模引擎 边缘用户”。 计费因子:边缘端读写用户 包年/包月 边缘用户单价 * 购买数量 用户单价以售卖页显示的价格为准,或者参见工业数字模型驱动引擎价格详情。 *数字主线引擎 MCU MCU(Model Compute Unit),数字主线引擎计费的计算单元。根据各服务能力分配的MCU数量总和和使用时长计费。 需根据业务场景为数字主线引擎提供的各服务能力进行MCU分配,表2展示了各服务能力规格详情。 一个华为账号下只能购买一个数字主线引擎。 计费因子:MCU 包年/包月 按需计费 包年/包月:MCU单价(包月或包年) * MCU数量 * 购买时长 按需计费:MCU单价(按需) * MCU数量 * 计费时长 MCU单价以售卖页显示的价格为准,或者参见工业数字模型驱动引擎价格详情。 *基础版 数字化制造基础服务 站点 站点表示使用数字化制造基础服务的软件授权,包含基础云资源以及数字化制造基础服务的基础功能。通常一个站点对应一个物理的制造基地(工厂)。 计费因子:站点 包年/包月 按需计费 包年/包月:站点单价 * 购买数量 按需计费:站点单价 * 购买数量*计费时长 站点单价以售卖页显示的价格为准。 *基础版 数字化制造基础服务 用户 用户表示使用数字化制造基础服务的最终用户。 计费因子:用户 包年/包月 按需计费 包年/包月:用户单价 * 购买数量 按需计费:用户单价 * 购买数量*计费时长 用户单价以售卖页显示的价格为准。 表2 数字主线引擎各服务能力规格说明 服务能力 MCU分配指标 描述 模型管理 已发布的数据模型数量 用户创建的业务模型(如数据实体、关系实体)数量,体现业务复杂度。每1MCU支持25个已发布的数据模型,MCU分配数量以正整数递增。 服务管理 各类数据服务调用所需的计算资源规模 在每秒内服务可计算数据广度,体现业务分析规模。服务管理与MCU数量换算呈现非线性变化关系,详细请参见表3。 数据管理 模型承载的实例数据规模 产品联接的数据大小,体现用户数据规模。每1MCU支持100GB,MCU分配数量以正整数递增。 表3 服务管理与MCU换算关系表 服务管理(万边/秒) MCU 10 3 20 6 50 12 100 24
  • 适用计费项 数字主线引擎只有为各服务能力,即模型管理、服务管理和数据管理进行MCU分配后,才能确定一个数字主线引擎的具体服务规格。以下计费项支持包年/包月。 表1 适用计费项 计费项 说明 数字主线引擎 MCU 随包年/包月的数字主线引擎进行MCU分配的各服务能力,其计费模式也为包年/包月。 假设您计划购买一个包年/包月的数字主线引擎,并同时进行MCU分配,规格如模型管理4MCU、服务管理3MCU和数据管理3MCU,购买时长为1个月。在购买数据建模引擎服务页面底部,您将看到所需的费用,如图1所示。 图1 配置费用示例 配置费用的计算公式: 配置费用 =MCU数量 * 购买时长 * MCU单价(包月或包年)
共100000条