OBS 对象介绍

元数据(Metadata)为描述对象属性的信息,是一组名称值对,用作对象管理的一部分。

obs对象的四种存储类型是,标准存储,低档访问存储,归档存储,深度归档存储(受限公测中)。

OBS支持断点续传。

一般我们在迁移的时候使用oms,准备好AK和SK , 桶的名字。在控制台创建任务进行迁移。

镜像回源

用户为桶定义镜像回源规则后,如果客户端访问OBS桶中不存在的资源,且该资源符合镜像回源规则,OBS将以镜像回源的方式去数据源站获取资源,将该资源上传到OBS中并返回给客户端。整个过程不中断业务,适用于客户源站无缝迁移数据到OBS,用户可以在无感知的情况下,低成本地迁移业务到OBS上来。镜像回源流程如图1所示。

图1 镜像回源流程

约束与限制

桶版本限制:

  • 仅桶版本号为3.0及以上的桶支持镜像回源。

时间限制:

  • 修改镜像回源规则,需要5分钟之后才能生效。

区域限制:

  • 当前仅在以下区域开放:华东-上海一、华北-北京四、华南-广州、中国-香港、亚太-新加坡、亚太-曼谷。

规则数量限制:

  • 最多创建10条镜像回源规则。

功能限制:

  • 不支持匿名用户配置镜像回源规则。
  • 不支持给并行文件系统配置镜像回源规则。
  • 不支持OBS静态网站,即通过OBS静态网站域名下载对象出现404,不会触发镜像回源规则。
  • 不支持在镜像回源规则中指定当前OBS桶域名,即源桶与目标桶不能是同一个桶。
  • 私有桶的镜像回源当前仅支持部分云厂商。
  • 不支持源站使用Transfer-Encoding: chunked方式传输数据,即从源站下载对象的响应中必须包含Content-Length头域来指明源对象大小。

 

一般情况下,当客户端访问OBS时,如果OBS中没有被访问的数据,将会返回404错误。OBS提供数据回源功能,可以在被请求的数据不存在时,通过回源规则从源站获取对应数据。

### 华为云OBS对象存储Java SDK使用指南 #### 依赖引入 为了能够在项目中集成并使用华为云OBS对象存储服务,需先在项目的`pom.xml`文件里加入如下Maven依赖: ```xml <dependency> <groupId>com.huaweicloud</groupId> <artifactId>esdk-obs-java</artifactId> <version>3.21.12</version> </dependency> ``` 此版本号可能随时间更新而变化,请查阅官方文档获取最新版次[^1]。 #### 初始化客户端 创建ObsClient实例用于后续操作前,应确保已设置好环境变量或配置文件中的认证信息(Access Key ID 和 Secret Access Key),以便成功连接至华为云账户下的资源。以下是初始化代码片段: ```java import com.obs.services.ObsClient; // ... String ak = "your-access-key-id"; String sk = "your-secret-access-key"; String endpoint = "https://your-endpoint"; ObsClient obsClient = new ObsClient(ak, sk, endpoint); ``` 此处endpoint参数取决于所选区域的服务地址,具体可参见官方文档说明。 #### 文件上传功能实现 利用上述构建好的ObsClient对象执行PUT请求完成文件上传动作,下面是一段简单的例子展示如何将本地路径指定的一个文件上传到特定桶内: ```java import java.io.File; public void uploadFile(String bucketName, String objectKey, File file){ try { PutObjectResult putObjectResult = obsClient.putObject(bucketName, objectKey, file); System.out.println("Etag:" + putObjectResult.getETag()); System.out.println("VersionId:" + putObjectResult.getVersionId()); } catch (Exception e) { e.printStackTrace(); } } ``` 这段程序会打印出返回的etag以及版本ID作为确认标志。 #### 文件下载逻辑编写 对于从OBS拉取数据而言,则可通过调用get方法来达成目的;这里提供了一个基础示例用来读取远端对象的内容流,并将其保存成新的本地文件形式: ```java import java.nio.file.Files; import java.nio.file.Paths; public void downloadFile(String bucketName, String objectKey, String localFilePath){ try{ ObjectMetadata metadata = obsClient.getObject(new GetObjectRequest(bucketName, objectKey), Paths.get(localFilePath)); System.out.println("Content-Type: " + metadata.getContentType()); }catch(Exception ex){ ex.printStackTrace(); } } ``` 该函数接收三个字符串类型的参数分别代表目标容器名称、待检索键名及期望存放位置,最终输出的是HTTP响应头里的content-type字段值。 #### 资源管理与清理工作 当不再需要某个已经存在的bucket或者想要移除其中部分object时,可以借助deleteBucket/deleteObjects API接口来进行相应处理。需要注意的是,在实际应用环境中应当谨慎对待这些命令以免误删重要资料。 ```java // 删除单个对象 DeleteObjectResult deleteObjectResult = obsClient.deleteObject(bucketName, objectKey); // 批量删除多个对象 List<String> keysToDelete = Arrays.asList("key1", "key2"); DeleteObjectsResponse response = obsClient.deleteObjects( DeleteObjectsRequest.builder() .withQuiet(false) .addKeys(keysToDelete.toArray(new String[0])) .build(), bucketName); ``` 以上即是对华为云OBS对象存储服务基本使用的介绍,涵盖了SDK接入准备阶段直至常见CRUD操作的具体实践过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值