-
报错信息:com.obs.services.exception.ObsException: Error message:Request Error.OBS service Error Message. -- ResponseCode: 404, ResponseStatus: Not Foundheaders{date:Thu, 04 Dec 2025 00:52:34 GMT,x-reserved:amazon, aws and amazon web services are trademarks or registered trademarks of Amazon Technologies, Inc,content-length:317,connection:keep-alive,content-type:application/xml,}
-
我的训练数据大约是16TB的图像数据和光流真值(.pfm文件)。我目前想要尝试使用该数据训练模型,但是在创建训练作业的时候,并没有选项支持从OBS桶中读取这些数据。我查阅了相关使用指南,在 cid:link_0 中提到,在训练代码中通过OBS SDK实现操作OBS中的数据,并且说明了有400GB的磁盘空间可以直接挂载。但是这一空间还是太少了,不满足我当前的需求。而直接访问obs桶的话,数据读取速度又太慢了,npu长时间处于等待状态。有没有方法可以进一步提高obs中的数据访问速度?或者,能否提供更大的 ssd 存储空间,以支持大规模数据训练?
-
以下是华为云各项存储服务的汇总表:存储服务类型服务名称服务描述适用场景更多详情参考块存储服务云硬盘(Elastic Volume Service,EVS)为云服务器提供高可靠、高性能、规格丰富并且可弹性扩展的块存储服务,满足不同场景的业务需求。分布式文件系统、开发测试、数据仓库、高性能计算等云硬盘产品介绍块存储备份服务云硬盘备份(Volume Backup Service,VBS)为云硬盘创建备份,利用备份数据回滚云硬盘,保证用户数据正确性和安全性。确保云硬盘数据安全云硬盘备份产品介绍文件存储服务弹性文件服务(Scalable File Service,SFS)提供按需扩展的高性能文件存储,可供云上多个云服务器共享访问,具备高可靠和高可用特点,性能随容量增加而提升。多个云服务器共享文件存储需求弹性文件服务产品介绍对象存储服务对象存储服务(Object Storage Service ,OBS)基于对象的海量存储服务,提供海量、安全、高可靠、低成本的数据存储能力。海量数据存储需求对象存储服务产品介绍服务器备份服务云服务器备份(Cloud Server Backup Service,CSBS)提供对弹性云服务器和裸金属服务器的备份保护服务,支持基于多云硬盘一致性快照技术的备份,并支持利用备份数据恢复服务器数据。保障服务器数据的安全性和正确性,确保业务安全云服务器备份服务产品介绍存储服务的官方文档地址为:https://support.huaweicloud.com/dg-sap/sap_05_0012.html
-
案例介绍本项目是基于华为开发者空间云上开发环境部署的<AI试卷生成与在线测试平台>技术实践案例。该应用深度集成华为云MaaS(ModelArts as a Service)平台提供的DeepSeek-V3大语言模型,充分利用平台提供的百万级商用token处理能力,构建了一个能够一键生成任意学科、任意难度的试卷,提供模拟考试环境、自动评分以及智能解析功能的智能试卷生成与在线测试平台。案例内容一、概述1. 案例介绍华为开发者空间,是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云主机、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。本项目是华为开发者空间开发平台 - 云开发环境(容器)部署的<AI试卷生成与在线测试平台>技术实践案例。该应用深度集成华为云MaaS(ModelArts as a Service)平台提供的DeepSeek-V3大语言模型,充分利用平台提供的百万级商用token处理能力,构建了一个能够一键生成任意学科、任意难度的试卷,提供模拟考试环境、自动评分以及智能解析功能的智能试卷生成与在线测试平台。<AI试卷生成与在线测试平台>技术架构上,项目采用react+typescript技术栈,基于华为MaaS平台的强大算力支持,实现了智能解析功能的智能试卷生成与在线测试平台。华为MaaS平台不仅提供高质量的DeepSeek-V3模型,更具备百万token的超长上下文处理能力,使得本应用能够生成准确的试题。前端采用React框架构建响应式界面,后端通过封装MaaS平台API,为用户提供刷题、模拟考试、自动评分、智能解析等功能。2. 功能特性AI 智能出题: 输入任意主题(如“Python基础”、“中国近代史”、“驾考科目一”),即刻生成包含单选、多选、判断题的完整试卷。模拟考试: 沉浸式答题界面,配备倒计时功能。自动评分: 考试结束后立即出分,通过可视化图表展示得分详情。错题回顾: 提供复习模式,高亮显示错题,并附带 AI 生成的详细解析。题集功能: 建立错题难题题集,不断复习巩固知识。题集试卷: 根据题集生成试卷,检验你的学习成果。历史记录: 自动保存考试记录与成绩,随时回溯过往练习。云端同步: 支持配置 Huawei Cloud OBS 将考试记录同步至云端。3. 适用对象企业个人开发者高校学生4. 案例时间本案例总时长预计60分钟。5. 案例流程说明:登录华为开发者空间,VS Code安装Huawei Developer Space插件,远程连接操作云开发环境;远程创建、开机、连接云开发环境(虚拟机);领取百万token代金券福利,开通商用模型服务,获取模型API 地址、API Key等参数;GitCode拉取代码 https://gitcode.com/zhepama/ai-exam-platform.git,安装依赖,修改参数;启动程序,在浏览器端测试验证<AI试卷生成与在线测试平台>。5. 资源总览本案例预计花费0元。资源名称规格单价(元)时长(分钟)华为开发者空间开发平台 - 云开发环境(容器)鲲鹏通用计算增强型 kc1 | 2vCPUs | 4G | HCE免费60二、基础环境与资源准备1. VS Code远程连接云开发环境(容器)参考案例《华为开发者空间 - 云开发环境(容器)IDE插件远程连接操作指导》中的“二、云开发环境IDE插件远程连接操作指导”的内容,完成“1. 安装插件” ~ “4. 连接”章节步骤。完成连接之后的状态:2. 领取百万免费token福利参考案例《Versatile Agent中自定义接入大模型配置华为云Maas指导》中的“一、 领取”章节内容,领取华为开发者空间百万token代金券福利,购买ModelArts Studio DeepSeek-V3 轻量体验包(¥3.50)。开通商用模型服务,最后获取API地址、API Key的参数值。三、来刷题吧 - AI试卷生成与在线测试平台1.来刷题吧 - AI试卷生成与在线测试平台功能介绍AI试卷生成与在线测试平台是一个基于DeepSeek大模型的智能聊天应用,提供美观的Web界面和流畅的对话体验。项目采用React + Typescript,结合华为云MaaS平台百万免费商用token,配置DeepSeek-V3大模型。🛠️ 技术栈核心框架: React 19构建工具: ViteUI 样式: Tailwind CSS图标库: Lucide React环境管理: dotenv📂 目录结构server/index.js - 后端服务主入口与路由逻辑src/App.tsx - 前端应用主入口与路由逻辑src/services/geminiService.ts - AI 接口调用与试卷生成逻辑src/services/storageService.ts - 本地存储与云同步逻辑src/components/ - UI 组件库types.ts - TypeScript 类型定义2. 获取来刷题吧 - AI试卷生成与在线测试平台代码新建项目文件在/workspace/node目录下创建ai-exam-platform文件夹。cd /workspace/node mkdir ai-exam-platform cd ai-exam-platform下载代码点击Source Control图标,然后点Initialize Repository。点CHANGES右侧的 ··· 图标,在下拉菜单中选择Clone。输入代码仓地址,Clone from URL: https://gitcode.com/zhepama/ai-exam-platform.git选择代码仓目录:/workspace/ai-exam-platform/,点Select as Repository Destination。然后点Open,将此目录设置为本地代码仓。加载结束后的状态如下:3. 安装项目依赖安装项目依赖npm install2. 修改配置文件,配置API Key在项目根目录下创建一个 .env 文件,参考 .env.example 进行配置:cp .env.example .env打开配置文件.env,修改配置参数。将配置文件中的your_API_Key替换为“二、基础环境与资源准备”章中的“4. 领取百万免费福利”节最后获取到的API Key。配置项说明:变量名必填描述示例API_KEY✅AI 模型的 API 密钥 (Gemini 或 OpenAI)AIzaSy...AI_PROVIDER❌指定 AI 提供商 (gemini 或 openai)openaiAI_MODEL❌指定模型版本deepseek-v3.1AI_BASE_URL❌OpenAI 接口地址 (用于代理)https://api.modelarts-maas.com/v2OBS_SERVER❌连接OBS的服务地址``OBS_ACCESS_KEY_ID❌OBS访问密钥中的AK。``OBS_SECRET_ACCESS_KEY❌OBS访问密钥中的SK。``OBS_BUCKET❌OBS的bucker``JUDGE_COUNT❌判断题数量。5SINGLE_CHOICE_COUNT❌单选题数量。5MULTI_CHOICE_COUNT❌多选题数量5# API配置 # AI Provider Configuration # Options: 'gemini' | 'openai' # Default: 'gemini' AI_PROVIDER=openai # API Key for the selected provider # For Gemini: Get from Google AI Studio # For OpenAI: Get from OpenAI Platform API_KEY=your_API_Key # 替换为你的实际API密钥 # AI Model to use # Default for Gemini: 'gemini-2.5-flash' # Default for OpenAI: 'gpt-3.5-turbo' # You can override this with other models like 'gpt-4', 'gemini-1.5-pro', etc. AI_MODEL=deepseek-v3.1 # AI Base URL # Only used if AI_PROVIDER is 'openai' (or compatible services like DeepSeek, Moonshot, etc.) # Default: 'https://api.openai.com/v1' AI_BASE_URL=https://api.modelarts-maas.com/v2 5. 测试体验来刷题吧 - AI试卷生成与在线测试平台在VS Code终端窗口中运行如下命令,启动来刷题吧 - AI试卷生成与在线测试平台。npm run dev:server在VS Code弹出的对话框中点Open in Browser,或者直接在浏览器中打开:http://localhost:3000/输入测试问题:“驾考科目一”,来刷题吧 - AI试卷生成与在线测试平台正确回答。开始答题提交试卷查看错题每一题都会有答案解析数据同步题集功能 (新增)查看题集题集中会随机出题,供你测试点击题目卡片,卡片反转可以查看答案题集试卷根据题目生成试卷生成新的试卷进行测试吧至此,基于华为开发者空间-云开发环境(容器)+MaaS实现来刷题吧 - AI试卷生成与在线测试平台案例结束,各位开发者快来华为开发者空间体验吧。我正在参加【案例共创】【第8期】基于华为开发者空间云开发环境(容器),集成华为云AI服务(Agent或MaaS API),完成AI应用构建开发最佳实践cid:link_6
-
背景类似预签名的方式,后端生成了签名和policy, 前端使用表单提交。提示如果可以,尽量使用简单的方式,比如前端用accessKeyId+accessKeySecret 的方式直接putObject.但这种方法会暴露secret。也可以通过自己服务后台上传到aliyun oss. 但这种方式会占用自己服务的带宽。如果使用post Object 的方式,很麻烦,官方文档也的也不好(写的跟si一样)。调试了1天,帮doubao的帮助下才搞定。后端代码 public AliyunOssSignatureView genSignature() throws Exception { // 步骤1:创建policy。 ObjectMapper mapper = new ObjectMapper(); Map<String, Object> policy = new HashMap<>(); policy.put("expiration", formatISODateTime()); List<Object> conditions = new ArrayList<>(); Map<String, String> bucketCondition = new HashMap<>(); bucketCondition.put("bucket", bucketName); conditions.add(bucketCondition); Map<String, String> signatureVersionCondition = new HashMap<>(); signatureVersionCondition.put("x-oss-signature-version", "OSS4-HMAC-SHA256"); conditions.add(signatureVersionCondition); Map<String, String> credentialCondition = new HashMap<>(); credentialCondition.put("x-oss-credential", accessKeyId + "/" + formatISODate() + "/" + region + "/oss/aliyun_v4_request"); // 替换为实际的 access key id conditions.add(credentialCondition); Map<String, String> dateCondition = new HashMap<>(); dateCondition.put("x-oss-date", formateDateTimeZ()); conditions.add(dateCondition); conditions.add(Arrays.asList("content-length-range", 1L, 1024L*1024*1024*5)); conditions.add(Arrays.asList("eq", "$success_action_status", "201"));// conditions.add(Arrays.asList("starts-with", "$key", "user/eric/"));// conditions.add(Arrays.asList("in", "$content-type", Arrays.asList("image/jpg", "image/png")));// conditions.add(Arrays.asList("not-in", "$cache-control", Arrays.asList("no-cache"))); policy.put("conditions", conditions); String jsonPolicy = mapper.writeValueAsString(policy); // 步骤2:构造待签名字符串(StringToSign)。 String stringToSign = new String(Base64.encodeBase64(jsonPolicy.getBytes())); // 步骤3:计算SigningKey。 byte[] dateKey = hmacsha256(("aliyun_v4" + accessKeySecret).getBytes(), formatISODate()); byte[] dateRegionKey = hmacsha256(dateKey, region); byte[] dateRegionServiceKey = hmacsha256(dateRegionKey, "oss"); byte[] signingKey = hmacsha256(dateRegionServiceKey, "aliyun_v4_request"); // 步骤4:计算Signature。 byte[] result = hmacsha256(signingKey, stringToSign); String signature = BinaryUtil.toHex(result); log.info("policy:{}, base64 policy:{}, signature:{}", jsonPolicy, stringToSign, signature); return new AliyunOssSignatureView(stringToSign, signature); } public static byte[] hmacsha256(byte[] key, String data) { try { // 初始化HMAC密钥规格,指定算法为HMAC-SHA256并使用提供的密钥。 SecretKeySpec secretKeySpec = new SecretKeySpec(key, "HmacSHA256"); // 获取Mac实例,并通过getInstance方法指定使用HMAC-SHA256算法。 Mac mac = Mac.getInstance("HmacSHA256"); // 使用密钥初始化Mac对象。 mac.init(secretKeySpec); // 执行HMAC计算,通过doFinal方法接收需要计算的数据并返回计算结果的数组。 byte[] hmacBytes = mac.doFinal(data.getBytes()); return hmacBytes; } catch (Exception e) { throw new RuntimeException("Failed to calculate HMAC-SHA256", e); } } /** * 获取ISO格式时间 * 2024-12-03T13:00:00Z * @return current time iso format */ public static String formatISODateTime() { ZonedDateTime utcTime = ZonedDateTime.now(); utcTime = utcTime.plusHours(1); return utcTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")); } public static String formatISODate() { LocalDate utcDate = LocalDate.now(ZoneOffset.UTC); return utcDate.format(DateTimeFormatter.ofPattern("yyyyMMdd")); } public static String formateDateTimeZ() { ZonedDateTime utcTime = ZonedDateTime.now(ZoneOffset.UTC); return utcTime.format(DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmmss'Z'")); } 其中region 一定要注意,是类似cn-beijing 这样的,而不是oss-cn-beijing.endpoint 是 https://bucketName.oss-cn-beijing.alyuncs.com上面使用的base64是apache 的。不是java自带的 前端代码filed的顺序一定不能错,错了就不好使 policy 和 x-oss-signature 都是后端生成返回给前端。key 是上传后的文件名称前端可以把policy base64 decode一下。在里面取x-oss-signature-version,x-oss-credential, x-oss-date,success_action_status这些值 。file 是要上传的文件 转载于:https://www.cnblogs.com/zhangyy3/p/19176009
-
概述华为云OBS(Object Storage Service)是一种安全、高可靠、低成本、高扩展性的云存储服务,适用于多种业务场景,如数据备份、归档、文件共享和大数据分析等。华为云OBS提供了丰富的SDK,支持多种编程语言,包括但不限于Java、Python、JavaScript、Go、C++等。本文将介绍如何使用不同的编程语言调用华为云OBS对象存储服务,实现文件的上传、下载和管理等操作。一、JavaJava是华为云OBS SDK支持的主要语言之一,适用于企业级应用和后端服务。1. 准备工作注册华为云账号:访问华为云官网,注册并登录账号。创建OBS桶:在华为云控制台中创建一个OBS桶,用于存储文件。获取访问密钥(AK/SK):在“我的凭证”中创建访问密钥,用于身份认证。引入OBS Java SDK:在项目中添加华为云OBS Java SDK的依赖。2. 示例代码上传文件import com.obs.services.ObsClient; import com.obs.services.model.PutObjectRequest; import com.obs.services.model.PutObjectResult; import java.io.File; public class ObsFileUpload { public static void main(String[] args) { String ak = "你的AK"; String sk = "你的SK"; String endpoint = "obs.cn-north-4.myhuaweicloud.com"; String bucketName = "你的桶名称"; String localFilePath = "C:/test/local-file.txt"; String objectKey = "remote-file.txt"; ObsClient obsClient = new ObsClient(ak, sk, endpoint); try { PutObjectRequest request = new PutObjectRequest(bucketName, objectKey, new File(localFilePath)); PutObjectResult result = obsClient.putObject(request); System.out.println("文件上传成功,ETag: " + result.getEtag()); } catch (Exception e) { System.err.println("文件上传失败:" + e.getMessage()); e.printStackTrace(); } finally { if (obsClient != null) { try { obsClient.close(); } catch (Exception e) { e.printStackTrace(); } } } } } 下载文件import com.obs.services.ObsClient; import com.obs.services.model.ObsObject; import java.io.InputStream; import java.io.ByteArrayOutputStream; public class ObsFileDownload { public static void main(String[] args) { String ak = "你的AK"; String sk = "你的SK"; String endpoint = "obs.cn-north-4.myhuaweicloud.com"; String bucketName = "你的桶名称"; String objectKey = "remote-file.txt"; ObsClient obsClient = new ObsClient(ak, sk, endpoint); try { ObsObject obsObject = obsClient.getObject(bucketName, objectKey); InputStream input = obsObject.getObjectContent(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); byte[] b = new byte[1024]; int len; while ((len = input.read(b)) != -1) { bos.write(b, 0, len); } System.out.println("文件内容:"); System.out.println(new String(bos.toByteArray())); bos.close(); input.close(); } catch (Exception e) { System.err.println("文件下载失败:" + e.getMessage()); e.printStackTrace(); } finally { if (obsClient != null) { try { obsClient.close(); } catch (Exception e) { e.printStackTrace(); } } } } } 二、PythonPython是一种简洁高效的脚本语言,广泛应用于数据处理、Web开发和自动化运维等领域。1. 准备工作注册华为云账号:同Java。创建OBS桶:同Java。获取访问密钥(AK/SK):同Java。安装OBS Python SDK:使用pip安装华为云OBS Python SDK。pip install obs-python-sdk2. 示例代码上传文件from obs import ObsClient ak = '你的AK' sk = '你的SK' endpoint = 'obs.cn-north-4.myhuaweicloud.com' bucket_name = '你的桶名称' local_file_path = 'C:/test/local-file.txt' object_key = 'remote-file.txt' obs_client = ObsClient(ak, sk, endpoint) try: resp = obs_client.putFile(bucket_name, object_key, local_file_path) if resp.status < 300: print('文件上传成功') else: print('文件上传失败,错误码:', resp.status) except Exception as e: print('文件上传失败:', e) finally: obs_client.close() 下载文件from obs import ObsClient ak = '你的AK' sk = '你的SK' endpoint = 'obs.cn-north-4.myhuaweicloud.com' bucket_name = '你的桶名称' object_key = 'remote-file.txt' download_path = 'C:/test/downloaded-file.txt' obs_client = ObsClient(ak, sk, endpoint) try: resp = obs_client.getObject(bucket_name, object_key, download_path=download_path) if resp.status < 300: print('文件下载成功') else: print('文件下载失败,错误码:', resp.status) except Exception as e: print('文件下载失败:', e) finally: obs_client.close() 三、JavaScript(Node.js)JavaScript(Node.js)适用于前端和后端开发,特别是在Web应用中。1. 准备工作注册华为云账号:同Java。创建OBS桶:同Java。获取访问密钥(AK/SK):同Java。安装OBS Node.js SDK:使用npm安装华为云OBS Node.js SDK。npm install obs-nodejs-sdk2. 示例代码上传文件const ObsClient = require('obs-nodejs-sdk'); const ak = '你的AK'; const sk = '你的SK'; const endpoint = 'obs.cn-north-4.myhuaweicloud.com'; const bucketName = '你的桶名称'; const localFilePath = 'C:/test/local-file.txt'; const objectKey = 'remote-file.txt'; const obsClient = new ObsClient(ak, sk, endpoint); obsClient.putFile(bucketName, objectKey, localFilePath) .then((result) => { if (result.status < 300) { console.log('文件上传成功'); } else { console.log('文件上传失败,错误码:', result.status); } }) .catch((err) => { console.error('文件上传失败:', err); }) .finally(() => { obsClient.close(); }); 下载文件const ObsClient = require('obs-nodejs-sdk'); const ak = '你的AK'; const sk = '你的SK'; const endpoint = 'obs.cn-north-4.myhuaweicloud.com'; const bucketName = '你的桶名称'; const objectKey = 'remote-file.txt'; const downloadPath = 'C:/test/downloaded-file.txt'; const obsClient = new ObsClient(ak, sk, endpoint); obsClient.getObject(bucketName, objectKey, downloadPath) .then((result) => { if (result.status < 300) { console.log('文件下载成功'); } else { console.log('文件下载失败,错误码:', result.status); } }) .catch((err) => { console.error('文件下载失败:', err); }) .finally(() => { obsClient.close(); }); 四、GoGo语言适用于高性能、高并发的应用开发。1. 准备工作注册华为云账号:同Java。创建OBS桶:同Java。获取访问密钥(AK/SK):同Java。安装OBS Go SDK:使用go get安装华为云OBS Go SDK。go get github.com/huaweicloud/huaweicloud-sdk-go-obs2. 示例代码上传文件package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-obs/obs" ) func main() { ak := "你的AK" sk := "你的SK" endpoint := "obs.cn-north-4.myhuaweicloud.com" bucketName := "你的桶名称" localFilePath := "C:/test/local-file.txt" objectKey := "remote-file.txt" client, err := obs.New(ak, sk, endpoint) if err != nil { fmt.Println("创建客户端失败:", err) return } defer client.Close() input := &obs.PutFileInput{} input.Bucket = bucketName input.Key = objectKey input.SourceFile = localFilePath output, err := client.PutFile(input) if err != nil { fmt.Println("文件上传失败:", err) return } fmt.Println("文件上传成功,ETag:", output.ETag) } 下载文件package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-obs/obs" ) func main() { ak := "你的AK" sk := "你的SK" endpoint := "obs.cn-north-4.myhuaweicloud.com" bucketName := "你的桶名称" objectKey := "remote-file.txt" downloadPath := "C:/test/downloaded-file.txt" client, err := obs.New(ak, sk, endpoint) if err != nil { fmt.Println("创建客户端失败:", err) return } defer client.Close() input := &obs.GetObjectInput{} input.Bucket = bucketName input.Key = objectKey input.DownloadPath = downloadPath output, err := client.GetObject(input) if err != nil { fmt.Println("文件下载失败:", err) return } fmt.Println("文件下载成功,ETag:", output.ETag) } 五、C++C++适用于系统级开发和性能敏感的应用。1. 准备工作注册华为云账号:同Java。创建OBS桶:同Java。获取访问密钥(AK/SK):同Java。安装OBS C++ SDK:下载并安装华为云OBS C++ SDK。2. 示例代码上传文件#include <iostream> #include "obs/ObsClient.h" using namespace obs; int main() { std::string ak = "你的AK"; std::string sk = "你的SK"; std::string endpoint = "obs.cn-north-4.myhuaweicloud.com"; std::string bucketName = "你的桶名称"; std::string localFilePath = "C:/test/local-file.txt"; std::string objectKey = "remote-file.txt"; ObsClient client(ak, sk, endpoint); PutObjectRequest request(bucketName, objectKey, localFilePath); auto outcome = client.PutObject(request); if (outcome.IsSuccess()) { std::cout << "文件上传成功,ETag: " << outcome.GetResult().GetETag() << std::endl; } else { std::cout << "文件上传失败: " << outcome.GetError().GetMessage() << std::endl; } return 0; } 下载文件#include <iostream> #include "obs/ObsClient.h" using namespace obs; int main() { std::string ak = "你的AK"; std::string sk = "你的SK"; std::string endpoint = "obs.cn-north-4.myhuaweicloud.com"; std::string bucketName = "你的桶名称"; std::string objectKey = "remote-file.txt"; std::string downloadPath = "C:/test/downloaded-file.txt"; ObsClient client(ak, sk, endpoint); GetObjectRequest request(bucketName, objectKey); request.SetDownloadPath(downloadPath); auto outcome = client.GetObject(request); if (outcome.IsSuccess()) { std::cout << "文件下载成功,ETag: " << outcome.GetResult().GetETag() << std::endl; } else { std::cout << "文件下载失败: " << outcome.GetError().GetMessage() << std::endl; } return 0; } 六、总结华为云OBS提供了多种编程语言的SDK,方便开发者在不同的应用场景中调用OBS服务。本文介绍了Java、Python、JavaScript(Node.js)、Go和C++五种语言的调用方法,涵盖了文件上传和下载的基本操作。开发者可以根据自己的技术栈和项目需求,选择合适的语言和SDK进行开发。更多高级功能,如分片上传、生命周期管理、权限控制等,可以参考华为云OBS的官方文档和SDK文档。
-
OBS(对象存储服务)和FTP(文件传输协议)在适用场景上存在显著差异,主要源于它们在存储架构、访问方式、安全性和扩展性上的不同设计。以下是两者的具体适用场景对比及选择建议:一、OBS存储的适用场景1. 海量非结构化数据存储典型场景:图片/视频托管:如网站、APP的静态资源(用户头像、商品图片、短视频)。日志与监控数据:存储服务器日志、应用监控数据,支持长期归档和分析。备份与归档:企业数据备份(如数据库快照)、合规文档存储(如金融交易记录)。优势:对象存储的扁平化结构支持EB级数据,无需担心目录层级限制。低成本存储(如冷存储类别)适合长期保留不频繁访问的数据。2. 云计算与分布式应用典型场景:云原生应用:作为容器(如Kubernetes)或无服务器函数(如AWS Lambda)的后端存储。大数据分析:存储Hadoop/Spark处理的数据集,支持高吞吐量读取。全球内容分发:通过CDN加速,将静态资源分发至全球边缘节点。优势:通过HTTP/HTTPS协议全球访问,兼容云服务生态。支持并发读写,适合多节点协同工作。3. 高安全性与合规需求典型场景:医疗影像存储:存储DICOM格式的X光、CT扫描图像,需满足HIPAA等合规要求。金融数据归档:存储交易记录、客户凭证,需审计日志和加密传输。优势:提供服务器端加密(SSE)、传输层加密(SSL/TLS)和细粒度权限控制(如IAM策略)。支持跨区域复制,提升灾难恢复能力。4. 弹性扩展与自动化典型场景:突发流量应对:如电商大促期间存储用户上传的商品评价图片。自动化工作流:与CI/CD管道集成,存储构建产物或测试数据。优势:按需付费模式,无需提前预留容量。通过API/SDK实现自动化管理(如自动清理过期文件)。二、FTP的适用场景1. 简单文件传输与共享典型场景:内部文件交换:企业部门间传输文档(如合同、报表),通过局域网或VPN访问。临时数据传递:如向第三方供应商发送设计稿、测试数据包。优势:部署简单,低成本(甚至可基于开源软件如vsftpd搭建)。兼容性广,几乎所有操作系统和工具支持FTP客户端。2. 传统系统集成典型场景:遗留应用兼容:老旧系统(如银行核心系统)依赖FTP接口传输数据。设备数据采集:如工业传感器通过FTP上传日志到本地服务器。优势:无需修改现有系统架构,快速实现数据传输。支持断点续传(需客户端支持),适合大文件传输。3. 预算有限的小规模场景典型场景:个人用户备份:如备份家庭照片、视频到本地NAS的FTP服务。小型网站托管:存储少量静态文件(如HTML、CSS),流量较低。优势:无需支付云服务费用,仅需服务器硬件成本。管理简单,适合非技术用户。三、关键差异与选择建议维度OBS存储FTP数据规模适合EB级海量数据适合GB级小规模数据访问方式HTTP/HTTPS API,全球访问TCP命令行,依赖局域网/VPN安全性高(加密、IAM、审计日志)低(明文传输,需手动配置FTPS)扩展性自动扩展,无需干预手动扩容,受服务器性能限制典型用户互联网企业、云原生应用、大数据团队传统企业、个人用户、遗留系统选择建议:优先选OBS:需要存储海量数据(如TB/PB级)。要求高可用性、自动化扩展或全球访问。涉及敏感数据需合规审计。集成云计算生态(如AWS S3、阿里云OSS)。可考虑FTP:数据量小(如GB级以下),预算有限。场景简单(如内部文件共享),无高并发需求。需兼容传统系统或设备(如仅支持FTP协议的传感器)。四、趋势与替代方案FTP的局限性:随着云计算普及,FTP因安全性差、扩展性弱逐渐被替代。现代替代方案包括:SFTP/SCP:基于SSH的安全文件传输,适合需要加密的场景。WebDAV:通过HTTP扩展实现文件管理,兼容性更好。云存储网关:如AWS Storage Gateway,将本地文件系统映射到云存储。OBS的演进:对象存储正向智能化发展,例如:生命周期管理:自动将冷数据迁移至低成本存储。数据加工:在存储层直接处理数据(如图片压缩、CSV解析)。多云兼容:支持S3兼容接口,跨云厂商无缝迁移。总结:OBS适合现代云计算和大数据场景,强调弹性、安全与全球化;FTP则适用于传统、小规模或预算敏感的场景,但需权衡安全性与扩展性。企业应根据数据规模、访问频率和合规要求综合选择。
-
OBS(对象存储服务)与FTP(文件传输协议)在存储架构、数据管理方式、适用场景及技术特性上存在显著区别,具体分析如下:1. 存储架构与数据模型OBS:基于对象存储架构,数据以“对象”形式存储,每个对象包含数据本身、元数据(如创建时间、文件类型等)和唯一标识符(Key)。无目录层级:对象通过扁平化结构管理,依赖Key实现快速检索,适合海量非结构化数据(如图片、视频、日志)。无限扩展性:系统容量和对象数量无硬性限制,支持EB级数据存储,满足云计算和大数据场景需求。FTP:基于传统文件系统架构,数据以“文件”形式存储在目录层级中,依赖路径(如/folder/file.txt)进行定位。目录结构清晰:适合结构化文件管理,但目录深度和文件数量受服务器性能限制。容量有限:单服务器存储空间和并发连接数存在瓶颈,难以支撑超大规模数据。2. 数据访问与传输方式OBS:HTTP/HTTPS协议:通过Web接口访问,支持全球任意地点互联网连接,兼容性高。API与SDK集成:提供RESTful API和多种语言SDK(如Java、Python),便于开发自动化应用。断点续传与并发下载:支持多线程传输,提升大文件传输效率。FTP:TCP协议控制:使用21端口(控制连接)和20端口(数据连接),依赖主动/被动模式穿透防火墙。命令行交互:通过USER、PASS、GET、PUT等指令实现文件操作,适合简单传输任务。断点续传支持有限:部分FTP客户端支持,但稳定性依赖服务器配置。3. 安全性与权限控制OBS:多层次安全机制:数据加密:支持SSL/TLS传输加密和服务器端加密(SSE)。访问控制:通过桶策略(Bucket Policy)、ACL(访问控制列表)和IAM(身份与访问管理)实现细粒度权限管理。审计日志:记录所有操作行为,满足合规性要求。跨区域复制:支持数据在多区域同步,提升灾难恢复能力。FTP:基础安全措施:SSL/TLS加密:需配置FTPS(FTP over SSL)实现安全传输,但默认FTP为明文传输,存在数据泄露风险。用户名/密码认证:支持匿名访问(风险较高)或本地账户认证。权限控制简单:通过操作系统文件权限(如Linux的chmod)管理,缺乏集中式权限体系。4. 性能与可靠性OBS:高可用性:数据自动复制到多个物理节点,设计可用性达99.95%以上。低延迟与高吞吐:标准存储类别适合热点数据,温存储和冷存储优化成本与访问频率的平衡。自动扩展:无需手动扩容,应对突发流量。FTP:性能依赖服务器配置:单服务器处理能力有限,高并发时易出现延迟或连接失败。无自动冗余:数据需手动备份,灾难恢复依赖外部方案。传输效率波动:大文件或大量文件传输时,性能可能下降。5. 成本与适用场景OBS:按需付费:存储量、请求次数和流量计费,适合数据量波动大的场景。典型场景:云计算应用(如网站静态资源托管)。大数据分析(如日志存储、机器学习数据集)。长期归档(如医疗影像、合规文档)。FTP:低成本简单部署:适合预算有限、数据量小的场景。典型场景:内部文件共享(如企业部门间文档传递)。传统系统集成(如遗留应用依赖FTP接口)。临时文件传输(如小规模数据备份)。总结与推荐选择OBS:若需处理海量数据、追求高可用性、自动化扩展或集成云计算生态,OBS是更优解。其安全性、灵活性和成本效益适合现代应用开发。选择FTP:若场景简单、数据量小且预算有限,FTP可满足基本需求。但需注意安全风险,并规划替代方案以应对未来扩展。
-
您好我正在notebook配置上手昇腾相关环境,需要一些额外的存储空间来装数据和其他文件,但是我在配置外挂obs的时候遇到了一些问题,还请问这里文档说《选择运行中的Notebook实例,单击实例名称,进入Notebook实例详情页面,在“存储配置”页签,单击“添加数据存储”,设置挂载参数》但是我按照说明点进了notebook详情页但是并没有找到挂载pfs的地方,还请老师指教这个《存储配置》页签在哪里?此外我看北京4,上海1都可以挂载obs,但是没有昇腾算力。还请老师帮助解决。
-
没找到任何使用说明,和pg的parquet s3 fdw差不多的东西吗
-
微信小程序 npm下载esdk-obs-browserjs 后初始化报错详细描述:微信小程序 npm下载esdk-obs-browserjs 后初始化报错:TypeError: ObsClient is not a constructor,如何解决链接:https://bbs.huaweicloud.com/forum/thread-0228191150250998072-1-1.html答:小程序直传OBS,请看这篇文档:https://support.huaweicloud.com/bestpractice-obs/obs_05_2000.html在自定义域名下,访问obs,如何自定义一个错误页面详细描述:我在我自定义域名下随便输入一个不存在的桶或者文件会返回一个<Error> <Code>NoSuchKey</Code> <Message>The specified key does not exist.</Message> <RequestId>000001996050CD379015682CDCFA9747</RequestId> <HostId>Y6HbEithXoiIL1fwT8CxIdGP8txtYR13HdIEaEvZVNQW6K6fq2UsX/iMud6VntPw</HostId> <Key>123/ssss</Key> </Error>这样的xml,支不支持自定义一个错误的页面,类似于文件不存在链接:https://bbs.huaweicloud.com/forum/thread-02127193640666927106-1-1.html答:OBS的错误是XML的固定格式:https://support.huaweicloud.com/api-obs/obs_04_0115.html你可以解析这个返回报文,然后向用户展示你自己的页面并将数据填入(华为云OBS这边并不支持定制错误页面)php8.1处理文件上传,报错During inheritance of ArrayAccess详细描述:具体信息:During inheritance of ArrayAccess: Uncaught think\\exception\\ErrorException: Return type of Obs\\Internal\\Common\\Model::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\\work\\xsbnqcy\\source\\backendsuperai\\vendor\\obs\\esdk-obs-php\\Obs\\Internal\\Common\\Model.php:177 最新版php sdk,3.23.11链接:https://bbs.huaweicloud.com/forum/thread-0232193975827532122-1-1.html答:这个错误是由于 PHP 8.1 对 ArrayAccess 接口的返回类型严格化导致的。以下是解决方案:原因PHP 8.1 要求 ArrayAccess 接口方法的返回类型必须显式声明为 mixed,或使用 #[ReturnTypeWillChange] 属性抑制警告。华为 OBS SDK 3.23.11 的 Model.php 未适配此变更。解决方案(任选其一)临时修复(推荐快速解决)修改 vendor/obs/esdk-obs-php/Obs/Internal/Common/Model.php,在 offsetGet 方法上方添加属性:#[\ReturnTypeWillChange] public function offsetGet($offset) { /* 原代码 */ } 升级 SDK检查华为 OBS 官方是否有兼容 PHP 8.1 的新版本 SDK。降级 PHP临时降级到 PHP 8.0(不推荐长期方案)。根本原因华为 OBS SDK 的 Model 类实现了 ArrayAccess,但未遵循 PHP 8.1 的严格类型声明要求。需等待官方 SDK 更新或手动补丁。⚠️ 注意:直接修改 vendor 文件会在 composer update 时被覆盖,建议通过派生类或联系华为支持反馈此问题。通过临时授权url上传文件提示SignatureDoesNotMatch详细描述:不用怀疑key的可靠性,不通过临时授权url是可以正常上传文件的。代码用的官方sdk参考中的“临时授权访问->使用临时URL进行授权访问->上传对象”。php sdk:3.23.11php版本:8.1链接:https://bbs.huaweicloud.com/forum/thread-0251194027522409129-1-1.html答:临时授权密钥和正常访问的密钥是不一样的参考文档(临时授权访问OBS):https://support.huaweicloud.com/perms-cfg-obs/obs_40_0037.html
-
不用怀疑key的可靠性,不通过临时授权url是可以正常上传文件的。代码用的官方sdk参考中的“临时授权访问->使用临时URL进行授权访问->上传对象”。php sdk:3.23.11php版本:8.1
-
具体信息:During inheritance of ArrayAccess: Uncaught think\\exception\\ErrorException: Return type of Obs\\Internal\\Common\\Model::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\\work\\xsbnqcy\\source\\backendsuperai\\vendor\\obs\\esdk-obs-php\\Obs\\Internal\\Common\\Model.php:177 最新版php sdk,3.23.11
-
我在我自定义域名下随便输入一个不存在的桶或者文件会返回一个<Error><Code>NoSuchKey</Code><Message>The specified key does not exist.</Message><RequestId>000001996050CD379015682CDCFA9747</RequestId><HostId>Y6HbEithXoiIL1fwT8CxIdGP8txtYR13HdIEaEvZVNQW6K6fq2UsX/iMud6VntPw</HostId><Key>123/ssss</Key></Error>这样的xml,支不支持自定义一个错误的页面,类似于文件不存在
-
您好,我目前使用modelarts notebook,需要上传2t左右数据。目前发现可以直接在notebook创建过程中创建一个较大的EVS,然后ssh连接notebook,并上传文件。此外还可以创建obs,用obs browser+上传,然后再拷贝到notebook的云硬盘上。但我尝试下来,这两种方法上传都比较慢。然后由于我使用的是校园网,ipv4限速而ipv6不限速,请问有没有办法通过ipv6上传数据到notebook的云硬盘中?
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签