华为云用户手册

  • 操作步骤 登录pEDA-Schematic并进入电子设计数据管理。 在“电子设计数据管理”页面,选择“符号”页签。 在“符号”页面,单击“新增”。 在“新增symbol”弹窗中,填写符号信息,参数说明请参见表1。 表1 符号参数说明 参数 参数说明 名称 符号的名称。 原理图符号 单击“选择文件”,上传创建符号需要的原理图文件。 描述 可添加对符号的详细描述信息。 分类 分类名称。 小类名称 分类的子类名称。 文档类型 可创建的符号类型,有器件、网络标识、网络端口、图纸符号、无电气特性符号和短接符。 创建“器件”类型符号,“类型”选择器件。 创建“特殊符号”类型符号,“类型”选择网络标识、网络端口、图纸符号和无电气特性符号。 填写完成后,单击“确认”。新建的符号展示在符号列表中。
  • 导入样例CBB数据 登录pEDA-Schematic并进入电子设计数据管理。 在“电子设计数据管理”页面,选择“CBB”页签。 在“CBB”页面,单击“批量导入”。 在“CBB批量导入”页面,单击“模板下载”,将模板文件下载到本地不用修改。 在“CBB批量导入”页面,单击“选择文件”,直接选择下载的cbb_batch_example.zip文件,单击“打开”,系统自动对模板中的信息进行校验,校验完成后页面显示校验结果。 图1 样例数据批量导入结果 在导入结果页面,单击右上角的“上传”,系统会自动导入所有CBB,导入完成后提示导入成功,页面跳转到CBB列表。
  • 导入自有CBB数据 登录pEDA-Schematic并进入电子设计数据管理。 在“电子设计数据管理”页面,选择“CBB”页签。 在“CBB”页面,单击“批量导入”。 在“CBB批量导入”页面,单击“模板下载”,将模板文件下载到本地。 在本地解压下载的符号模板文件zip包,按模板文件要求填写符号信息。 下载的封装模板文件zip包中包含.tssch文件和excel文件两种文件,需要将这两种文件内容补充完成后,重新打包成zip包后,才能导入数据。 .tssch文件:是包含有CBB数据的CBB文件。 excel文件:是数据导入文件,请按照excel文件中“导入说明”页签中的要求,在“cbb”页签填写好需要导入的符号数据,其中“CBB文件名”列的值需要和.tssch的CBB文件名称相对应。 模板文件填写完成后,单击“选择文件”选择本地准备好的模板文件,系统自动对模板中的信息进行校验,校验完成后页面显示校验结果。 图2 自有数据批量导入结果 在导入结果页面,单击右上角的“上传”,系统会对CBB信息进行二次校验。 当所有CBB都通过二次校验,单击“上传”后,系统会自动导入所有CBB,导入完成后提示导入成功。 当部分CBB通过二次校验,单击“上传”后,通过校验的CBB会自动导入,未通过校验的CBB会显示在弹出的“重新导入失败数据”页面,在“重新导入失败文件”页面,可查看CBB导入失败的原因。 图3 重新导入失败文件 “可修改”页签的CBB数据,可勾选CBB,单击“确认”,强制覆盖元件库中的CBB。 “不可修改”页签的CBB数据,需要重新修改导入文件后重新导入。
  • 画布 原理图编辑器中,画布用于绘制电路原理图,允许进行放置器件、特殊符号(除短接符号,因其无右键菜单)、CBB;绘制导线、总线、圆弧、矩形、圆、折线、多边形;插入文本、表格等操作。此处仅针对画布中的右键功能进行介绍。 适应选中 剪切 复制 删除 旋转 左右翻转 上下翻转 更新Symbol 替换Symbol 替换属性 Supply属性批量处理 复位属性位置 属性 展开 CBB位号 导线批量重命名 选中单根网络 选中单组网络 选中整组/同名网络 选择总线 粘贴 适应窗口 签入签出 上一页 下一页 跳转图页 回到上层 打开模板页 添加意见 父主题: 原理图编辑器
  • 操作步骤 登录pEDA-Schematic并进入电子设计数据管理。 在“电子设计数据管理”页面,选择“封装”页签。 在封装页面有三种方式查询封装,具体操作如表1所示。 表1 封装查询 查询方式 查询步骤 按名称查询 在封装列表上方的输入框中,输入查询的封装名称,单击输入框中的。 按描述查询 在封装列表上方的输入框中,输入查询的封装描述,单击输入框中的。 按属性组合查询 在“封装”页面,单击右上角的。 在弹窗中,单击添加属性行,在每个属性行中下拉选择“属性”(如:名称),下拉选择“操作”(如:模糊),在“值”中输入内容(如:syl),单击“查询”。
  • 操作步骤 登录pEDA-Schematic并进入电子设计数据管理。 在“电子设计数据管理”页面,选择“器件”页签。 在“器件”页面,单击“新增”。 在“新增元器件”弹窗中,填写器件信息,参数说明请参见表1。 表1 器件参数说明 参数 参数说明 名称 器件名称。 编码 器件的编码。 分类 器件的分类名称,如:电容。 小类名称 器件分类下的子类名称,如:插装薄膜电容。 封装 下拉选择器件需要绑定的封装,下拉列表的封装数据来源于封装页面创建的封装,创建封装操作请参见新增封装。 Symbol 下拉选择器件需要绑定的符号,下拉列表的符号数据来源于符号页面创建的符号,创建符号操作请参见新增符号。 厂家高度 器件的高度,有了高度在查看3D视图时会更真实。 描述 可添加对器件的详细描述信息。 备注 可添加对器件的备注信息。 标称值 器件的标称值,例如:0.5PF。 器件高度单位 器件高度的单位,例如:mm。 大版本 器件的大版本。 小版本 器件的小版本。 优选等级 器件优选的等级划分,例如:A。 厂家型号标识 器件的型号。 厂家 器件的生产厂家。 厂家型号 件器的厂家型号。 国家地区 器件生产的国家地区。 供应商 器件的供应商。 价格 器件的购买价格。 库存 器件的库存。 填写完成后,单击“确认”。新增的器件展示在器件列表中。
  • 操作步骤 登录pEDA-Schematic并进入电子设计数据管理。 在“电子设计数据管理”页面,选择“符号”页签。 在“符号”页面的符号列表中,选择目标符号行,右键选择“修改”。 在“修改Symbol”弹窗中,修改符号的信息,参数说明请参见表1。 表1 符号参数说明 参数 参数说明 名称 符号的名称,不可修改。 原理图符号 单击“选择文件”,上传新的原理图文件。 描述 可添加对符号的详细描述信息。 分类 分类名称。 小类名称 分类的子类名称。 文档类型 符号类型,不可修改。 修改完成后,单击“确认”。符号列表刷新成修改后的信息。
  • 支持云审计的关键操作列表 表1 云审计服务支持的pEDA操作列表 操作名称 资源类型 事件名称 云服务变更询价 pedaOperation changeInquiry 运营鉴权 pedaOperation orderAuthentication 云服务变更 cbcResource orderChange 云服务倒计时信息查询 cbcResource countdownQuery 资源查询 pedaOperation resourceinstances 资源查询(租户使用) pedaOperation resourceTenantInstances 订购 pedaOperation subscribe 开通服务回调 pedaOperation cbcCallbackSubscribe 云服务加锁 pedaOperation lock 云服务解锁 pedaOperation unlock 更新云服务metadata信息 pedaOperation updateMetadata 退订 pedaOperation unsubscribePeda 开通云服务回调前校验 pedaOperation subscribeCallbackVerify 变更服务回调 pedaOperation cbcCallbackChange 查询租户的组织列表 pedaOperation queryTenantOrganizationList orgid注册app pedaOperation registApp
  • 操作步骤 登录pEDA-Schematic并进入电子设计数据管理。 在“电子设计数据管理”页面,选择“符号”页签。 在符号页面有三种方式查询符号,具体操作如表1所示。 表1 符号查询 查询方式 查询步骤 按名称查询 在符号列表上方的输入框中,输入查询的符号名称,单击输入框中的。 按描述查询 在符号列表上方的输入框中,输入查询的符号描述,单击输入框中的。 按属性组合查询 在“符号”页面,单击右上角的。 在弹窗中,单击添加属性行,在每个属性行中下拉选择“属性”(如:名称),下拉选择“操作”(如:模糊),在“值”中输入内容(如:syl),单击“查询”。
  • 导入自有特殊符号数据 前提条件 已批量导入符号,批量导入符号的操作请参见批量导入符号。 已批量导入封装,批量导入封装的操作请参见批量导入封装。 操作步骤 登录pEDA-Schematic并进入电子设计数据管理。 在“电子设计数据管理”页面,选择“特殊符号”页签。 在“特殊符号”页面,单击“批量导入”。 在“特殊符号批量导入”页面,单击“模板下载”,将模板文件下载到本地。 在本地打开模板文件,按模板文件要求填写器件信息。 请按照excel文件中“导入说明”页签中的要求,在“specail_symbol”页签填写好需要导入的特殊符号数据。 模板文件填写完成后,单击“选择文件”选择本地准备好的模板文件,系统自动对模板中的信息进行校验,校验完成后页面显示校验结果。 图2 自有数据批量导入结果 在导入结果页面,单击右上角的“上传”,系统会对特殊符号信息进行二次校验。 当所有特殊符号都通过二次校验,单击“上传”后,系统会自动导入所有特殊符号,导入完成后提示导入成功,页面跳转到特殊符号列表。 当部分特殊符号通过二次校验,单击“上传”后,通过校验的特殊符号会自动导入,未通过校验的特殊符号会显示在弹出的“重新导入失败文件”页面,在“重新导入失败文件”页面,可查看特殊符号导入失败的原因。 图3 重新导入失败文件 “可修改”页签的特殊符号数据,可单击“操作”列进行修改。修改完成后,勾选修改的特殊符号,单击“确认”,重新上传特殊符号。 “不可修改”页签的特殊符号数据,需要重新修改导入文件后重新导入。
  • 导入样例特殊符号数据 前提条件 已批量导入符号样例数据,批量导入符号的操作请参见导入样例符号数据。 已批量导入封装样例数据,批量导入封装的操作请参见导入样例封装数据。 操作步骤 登录pEDA-Schematic并进入电子设计数据管理。 在“电子设计数据管理”页面,选择“特殊符号”页签。 在“特殊符号”页面,单击“批量导入”。 在“特殊符号批量导入”页面,单击“模板下载”,将模板文件下载到本地不用修改。 在“特殊符号批量导入”页面,单击“选择文件”,直接选择下载的specail_symbol_batch_example .xlsx文件,单击“打开”,系统自动对模板中的信息进行校验,校验完成后页面显示校验结果。 图1 样例数据批量导入结果 在导入结果页面,单击右上角的“上传”,系统会自动导入所有特殊符号,导入完成后提示导入成功,页面跳转到特殊符号列表。
  • 管理控制台审计日志 pEDA通过云审计服务(Cloud Trace Service,CTS)记录pEDA 管理控制台的关键操作事件,比如开通服务、变更服务等。记录的日志可用于支撑安全分析、合规审计、资源跟踪和问题定位等常见应用场景。 用户开通云审计服务并创建和配置追踪器后,CTS可记录pEDA在管理控制台上的管理事件和数据事件用于审计。 CTS的详细介绍和开通配置方法,请参见CTS快速入门。 pEDA支持云审计的操作事件和查看审计日志方法,请参见管理控制台审计日志。
  • 响应示例 状态码: 200 响应成功 { "offset" : 0, "limit" : 5, "count" : 1, "data" : [ { "otherNumber" : "", "otherNumberCountry" : "", "country" : "chinaPR", "phone" : "+86135xxxx0611", "email" : "******", "corpName" : null, "deptName" : null, "position" : null, "address" : null, "remarks" : null, "id" : "af4aaae4b29d45649e3c61f48ee2f64b", "name" : "李四", "customNumber" : null, "type" : "CORP", "updateTime" : 1665994358499 } ] }
  • IMS权限 默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 IMS部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域(如华北-北京1)对应的项目(cn-north-1)中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域下的项目中都生效。访问IMS时,需要先切换至授权区域。 根据授权精度分为角色和策略。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 表1 IMS系统角色 系统角色 描述 依赖关系 IMS Administrator 镜像服务的管理员权限。 该角色有依赖,需要勾选依赖的角色:Tenant Administrator。 Server Administrator 拥有该权限的用户可以创建、删除、查询、修改及上传镜像。 该角色有依赖,需要在同项目中勾选依赖的角色:IMS Administrator。 策略(推荐):IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对IMS服务,管理员能够控制IAM用户仅能对某一类镜像资源进行指定的管理操作。 多数策略以API接口为粒度进行权限拆分,IMS支持的API授权项请参见:权限及授权项说明。 表2 IMS系统策略 策略名称 描述 依赖关系 IMS FullAccess 镜像服务所有权限。 无 IMS ReadOnlyAccess 镜像服务只读权限,拥有该权限的用户仅能查看镜像服务数据。 无 表3列出了镜像服务(IMS)常用操作与系统权限的授权关系,您可以参照该表选择合适的系统权限。 表3 常用操作与系统权限的关系 操作 IMS FullAccess IMS ReadOnlyAccess IMS Administrator(需依赖Tenant Administrator) 创建镜像 √ x √ 删除镜像 √ x √ 查询镜像 √ √ √ 更新镜像信息 √ x √
  • 应用场景 服务器上云或云上迁移 利用镜像导入功能,将已有的业务服务器制作成镜像后导入到云平台(当前支持vhd、vmdk、qcow2、raw等多种格式),方便企业业务上云。 使用镜像共享和镜像跨区域复制功能,实现云服务器在不同账号、不同地域之间迁移。 部署特定软件环境 使用共享镜像或者应用超市的市场镜像均可帮助企业快速搭建特定的软件环境,免去了自行配置环境、安装软件等耗时费力的工作,特别适合互联网初创型公司使用。 批量部署软件环境 将已经部署好的云服务器的操作系统、分区和软件等信息打包,用以制作私有镜像,然后使用该镜像批量创建云服务器实例,新实例将拥有一样的环境信息,从而达到批量部署的目的。 服务器运行环境备份 对一台云服务器实例制作镜像以备份环境。当该实例的软件环境出现故障而无法正常运行时,可以使用镜像进行恢复。
  • 责任共担 华为云秉承“将公司对网络和业务安全性保障的责任置于公司的商业利益之上”。针对层出不穷的云安全挑战和无孔不入的云安全威胁与攻击,华为云在遵从法律法规业界标准的基础上,以安全生态圈为护城河,依托华为独有的软硬件优势,构建面向不同区域和行业的完善云服务安全保障体系。 安全性是华为云与您的共同责任,如图1所示。 华为云:负责云服务自身的安全,提供安全的云。华为云的安全责任在于保障其所提供的 IaaS、PaaS 和 SaaS 类云服务自身的安全,涵盖华为云数据中心的物理环境设施和运行其上的基础服务、平台服务、应用服务等。这不仅包括华为云基础设施和各项云服务技术的安全功能和性能本身,也包括运维运营安全,以及更广义的安全合规遵从。 租户:负责云服务内部的安全,安全地使用云。 华为云租户的安全责任在于对使用的 IaaS、PaaS 和 SaaS 类云服务内部的安全以及对租户定制配置进行安全有效的管理,包括但不限于虚拟网络、虚拟主机和访客虚拟机的操作系统,虚拟防火墙、API 网关和高级安全服务,各项云服务,租户数据,以及身份账号和密钥管理等方面的安全配置。 《华为云安全白皮书》详细介绍华为云安全性的构建思路与措施,包括云安全战略、责任共担模型、合规与隐私、安全组织与人员、基础设施安全、租户服务与租户安全、工程安全、运维运营安全、生态安全。 图1 华为云安全责任共担模型 父主题: 安全
  • 镜像部署与手工部署对比 表1 镜像部署与手工部署对比 对比项 镜像部署 手工部署 部署时长 2~5分钟 1~2天 复杂度 使用公共镜像、应用超市的市场镜像,或者根据已使用过的方案均可快速创建符合要求的云服务器。 评估业务场景,选择合适的操作系统、数据库、应用软件等,并且需要安装和调试。 安全性 除共享镜像需要用户自行甄别来源以外,公共镜像、私有镜像,及市场镜像均经过严格测试,能够保证镜像安全、稳定。 依赖开发或运维人员的水平。
  • 安全 公共镜像覆盖华为自研EulerOS操作系统,及Windows Server、Ubuntu、CentOS等多款主流操作系统,皆以正版授权,均经过严格测试,能够保证镜像安全、稳定。 镜像后端对应的镜像文件使用华为云对象存储服务进行多份冗余存储,具有高数据可靠性和持久性。 可以使用密钥管理服务(Key Management Service,KMS)提供的信封加密方式对私有镜像进行加密,确保数据安全性。
  • OBS客户端通用示例 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 使用OBS客户端进行接口调用操作完成后,没有异常抛出,则表明返回值有效,返回SDK公共响应头实例或其子类实例;若抛出异常,则说明操作失败,此时应从SDK自定义异常实例中获取错误信息。 以下代码展示了使用OBS客户端的通用方式: // 您的工程中可以只保留一个全局的ObsClient实例 // ObsClient是线程安全的,可在并发场景下使用 ObsClient obsClient = null; try { String endPoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); // 创建ObsClient实例 obsClient = new ObsClient(ak, sk, endPoint); // 调用接口进行操作,例如上传对象 HeaderResponse response = obsClient.putObject("bucketname", "objectname", new File("localfile")); // localfile为待上传的本地文件路径,需要指定到具体的文件名 System.out.println(response); } catch (ObsException e) { System.out.println("HTTP Code: " + e.getResponseCode()); System.out.println("Error Code:" + e.getErrorCode()); System.out.println("Error Message: " + e.getErrorMessage()); System.out.println("Request ID:" + e.getErrorRequestId()); System.out.println("Host ID:" + e.getErrorHostId()); }finally{ // 关闭ObsClient实例,如果是全局ObsClient实例,可以不在每个方法调用完成后关闭 // ObsClient在调用ObsClient.close方法关闭后不能再次使用 if(obsClient != null){ try { // obsClient.close(); } catch (IOException e) { } } } 父主题: 快速入门
  • 初始化 CryptoCipher OBS Java SDK 提供两种 加密套件。您可根据使用场景自行选择。 CtrRSACipherGenerator 继承于CTRCipherGenerator,不需要提供数据密钥或初始值,只需要提供 RSA 公钥或RSA 私钥,用以加密和解密随机生成的数据密钥。 表1 CtrRSACipherGenerator 类型参数 参数名 类型 约束 说明 privateKey PrivateKey 解密文件时必选(例如getObject) RSA 私钥。 publicKey PublicKey 加密文件时必选(例如putObject) RSA 公钥。 masterKeyInfo String 可选 密钥信息,该信息会存至对象的自定义元数据中, 帮助您区分不同密钥,需您自行维护 masterKeyInfo与 密钥的映射关系. secureRandom SecureRandom 必选 安全随机数生成器,用于随机生成cryptoKeyBytes和cryptoIvBytes,请您根据业务需求选择设置 needSha256 boolean 可选 是否校验加密后数据的sha256,并设置加密前后的sha256作为自定义元数据. 说明: 设置 need_sha256 为 True 时,SDK 会自动计算待上传对象的加密前 sha256 值与加密后的 sha256 值,并存至对象自定义元数据,同时也会在发送请求时将加密后的文件的 sha256 值置于请求头,服务端收到请求后会计算收到对象的sha256,如若 sha256 不一致会返回错误信息。 为了节省内存开销,SDK 采用了流式计算sha256的方法,这也就意味着,普通上传时需要读取并加密文件两次;另外由于InputStream流无法重复读取,流式上传不支持计算sha256。 CTRCipherGenerator 仅需提供一个数据密钥,所有对象均使用该数据密钥进行加密。 表2 CTRCipherGenerator 类型参数 参数名 类型 约束 说明 masterKeyInfo String 可选 密钥信息,该信息会存至对象的自定义元数据中, 帮助您区分不同cryptoKeyBytes,需您自行维护 masterKeyInfo与 cryptoKeyBytes的映射关系. cryptoKeyBytes byte[] 必选 加密数据所使用的数据密钥,长度必须为 32 bytes. cryptoIvBytes byte[] 可选 加密数据时所使用的初始值,长度必须为 16 bytes,指定时,所有对象均使用该初始值加密;未指定时,SDK 会为每个对象随机生成不同 初始值. secureRandom SecureRandom 必选 安全随机数生成器,用于在未设置cryptoKeyBytes或cryptoIvBytes时随机生成缺失的对应参数,请您根据业务需求设置 needSha256 boolean 可选 是否校验加密后数据的sha256,并设置加密前后的sha256作为自定义元数据. 说明: 设置 need_sha256 为 True 时,SDK 会自动计算待上传对象的加密前 sha256 值与加密后的 sha256 值,并存至对象自定义元数据,同时也会在发送请求时将加密后的文件的 sha256 值置于请求头,服务端收到请求后会计算收到对象的sha256,如若 sha256 不一致会返回错误信息。 为了节省内存开销,SDK 采用了流式计算sha256的方法,这也就意味着,普通上传时需要读取并加密文件两次;另外由于InputStream流无法重复读取,流式上传不支持计算sha256。
  • 示例代码 这是CtrRSACipherGenerator的示例代码 import com.obs.services.ObsConfiguration; import com.obs.services.crypto.CTRCipherGenerator; import com.obs.services.crypto.CryptoObsClient; import com.obs.services.crypto.CtrRSACipherGenerator; import com.obs.services.exception.ObsException; import com.obs.services.model.GetObjectRequest; import com.obs.services.model.ObsObject; import com.obs.services.model.PutObjectResult; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; import java.security.PublicKey; import java.security.spec.InvalidKeySpecException; public class CtrRSACipherGeneratorDemo001 { public static void main(String[] args) { // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html 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,也可以使用其他外部引入方式传入。 // String endPoint = System.getenv("ENDPOINT"); String endPoint = "https://obs.cn-north-4.myhuaweicloud.com"; CtrRSACipherGenerator ctrRSACipherGenerator = null; try { String examplePrivateKeyPath = "yourRSAPrivateKeyPath"; String examplePublicKeyPath = "yourRSAPublicKeyPath"; ObsConfiguration config = new ObsConfiguration(); PrivateKey privateKeyObj = CtrRSACipherGenerator.importPKCS8PrivateKey(examplePrivateKeyPath); PublicKey publicKeyObj = CtrRSACipherGenerator.importPublicKey(examplePublicKeyPath); ctrRSACipherGenerator = new CtrRSACipherGenerator( "example_master_key_info", true, config.getSecureRandom(), privateKeyObj, publicKeyObj); } catch (IllegalArgumentException | IOException | NoSuchAlgorithmException | InvalidKeySpecException e) { e.printStackTrace(); } assert ctrRSACipherGenerator != null; // 创建ObsClient实例 try (CryptoObsClient cryptoObsClient = new CryptoObsClient(ak, sk, securityToken, endPoint, ctrRSACipherGenerator)) { String exampleBucketName = "example-bucket"; String exampleObjectKey = "exampleObjectKey"; String examplePlainTextFilePath = "examplePlainTextFilePath"; String exampleDecryptedFilePath = "exampleDecryptedFilePath"; PutObjectResult putObjectResult = cryptoObsClient.putObject(exampleBucketName, exampleObjectKey, new File(examplePlainTextFilePath)); System.out.println("HTTP Code: " + putObjectResult.getStatusCode()); System.out.println("Etag: " + putObjectResult.getEtag()); // 客户端加密上传成功 System.out.println("CtrRSACipherGeneratorDemo001 putObject successfully"); GetObjectRequest getObjectRequest = new GetObjectRequest(exampleBucketName, exampleObjectKey); ObsObject obsObject = cryptoObsClient.getObject(getObjectRequest); InputStream input = obsObject.getObjectContent(); byte[] b = new byte[1024]; FileOutputStream fileOutputStream = new FileOutputStream(exampleDecryptedFilePath); int len; while ((len = input.read(b)) != -1) { fileOutputStream.write(b, 0, len); } fileOutputStream.close(); input.close(); System.out.println("HTTP Code: " + obsObject.getMetadata().getStatusCode()); // 客户端解密下载成功 System.out.println("CtrRSACipherGeneratorDemo001 getObject successfully"); // 验证一下,加密之前的文件和解密之后的文件是否一致 byte[] plainTextFileSha256 = CTRCipherGenerator.getFileSha256Bytes(examplePlainTextFilePath); byte[] decryptedFileSha256 = CTRCipherGenerator.getFileSha256Bytes(exampleDecryptedFilePath); String plainTextFileSha256Base64Encoded = CTRCipherGenerator.getBase64Info(plainTextFileSha256); String decryptedFileSha256Base64Encoded = CTRCipherGenerator.getBase64Info(decryptedFileSha256); System.out.println("plainTextFileSha256 base64 encoded: " + plainTextFileSha256Base64Encoded); System.out.println("decryptedFileSha256 base64 encoded: " + decryptedFileSha256Base64Encoded); System.out.println( "plainTextFileSha256 equals decryptedFileSha256 ? " + decryptedFileSha256Base64Encoded.equals(plainTextFileSha256Base64Encoded)); System.out.println("CtrRSACipherGeneratorDemo001 successfully"); } catch (ObsException e) { System.out.println("CtrRSACipherGeneratorDemo001 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("CtrRSACipherGeneratorDemo001 putObject failed"); // 其他异常信息打印 e.printStackTrace(); } } }
  • 透传访问密钥 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 OBS Java SDK提供了直接在接口方法中透传AK和SK的OBS客户端(SecretFlexibleObsClient)。示例代码如下: String endPoint = "https://your-endpoint"; // 创建ObsConfiguration配置类实例 ObsConfiguration config = new ObsConfiguration(); config.setEndPoint(endPoint); // 创建SecretFlexibleObsClient实例 SecretFlexibleObsClient obsClient = new SecretFlexibleObsClient(config); // 使用访问OBS // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak1 = System.getenv("ACCESS_KEY_ID"); String sk1 = System.getenv("SECRET_ACCESS_KEY_ID"); obsClient.listBuckets(ak1, sk1); String ak2 = System.getenv("ACCESS_KEY_ID"); String sk2 = System.getenv("SECRET_ACCESS_KEY_ID"); obsClient.listBuckets(ak2, sk2); // 关闭obsClient obsClient.close(); SecretFlexibleObsClient继承自ObsClient,可作为ObsClient使用。 父主题: 初始化
  • 代码示例 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保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html 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,也可以使用其他外部引入方式传入。 //String endPoint = System.getenv("ENDPOINT"); String endPoint = "https://obs.cn-north-4.myhuaweicloud.com"; // 创建ObsClient实例 try (ObsClient obsClient = new ObsClient(ak, sk, securityToken, endPoint)) { // 设置相关示例参数 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.CSV); 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(); } } }
  • 初始化OBS客户端 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 集成OBS SDK工具时,使用import声明包,参考以下示例: import com.obs.services.ObsClient; 向OBS发送任一HTTP/HTTPS请求之前,必须先创建一个ObsClient实例: String endPoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); // 使用访问OBS // 关闭obsClient,全局使用一个ObsClient客户端的情况下,不建议主动关闭ObsClient客户端 obsClient.close(); 更多关于OBS客户端初始化的操作请参考“初始化”章节。 日志配置详见配置SDK日志 父主题: 快速入门
  • 关闭桶日志 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 关闭桶日志功能实际上就是调用ObsClient.setBucketLogging将日志配置清空,以下代码展示了如何关闭桶日志: // Endpoint以北京四为例,其他地区请按实际情况填写。 String endPoint = "https://obs.cn-north-4.myhuaweicloud.com"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); // 对桶设置空的日志配置 obsClient.setBucketLogging("bucketname", new BucketLoggingConfiguration()); 父主题: 设置访问日志
  • 单点登录测试 应用凭证申请。 服务器接口调测成功后,集成联营Kit前,服务商需要申请应用凭证,该凭证在发布商品、Kit集成阶段均会使用,具体操作步骤请参见《云商店 接入指南》的应用凭证申请。 应用测试账号获取。 服务商成功申请应用凭证并完成如上的接口开发后,为了测试已调试好的应用的可用性,可以申请测试账号进行测试验证,具体操作步骤请参见《云商店 接入指南》的应用测试账号获取。 父主题: 单点登录改造和测试
  • 应用单点登录 新增组织机构、用户成功,即可开始应用单点登录。用户登录之后工业工作台若无门户页面,门户配置请参考管理员配置企业门户。 打开华为工业云平台页面。 图1 华为工业云平台页面 输入账号、密码,进入工业工作台用户界面。 图2 工业工作台用户界面 单击“通用应用”,进入应用界面。 图3 应用界面 单击其中一个应用进行单点登录。 图4 应用单点登录页面 父主题: 应用绑定企业租户后对接工业工作台
  • MIW测试人员审核测试报告 应用对接测试用例自测全部通过之后,联系华为方应用对接人员审核测试报告,从以下三个方面进行审核: 应用新增租户、组织、用户同步事件成功。 应用单点登录正常。 应用对接测试用例执行通过。 审核通过后,SaaS类0元测试商品需进行下架处理。 华为方应用对接人员: 刘勇文 工号:l30039245,联系方式:13570918957 朱凯宏 工号:z30036867,联系方式:17826827694 父主题: 自测指引
  • 请求参数场景说明 租户信息同步接口/租户应用信息同步接口/组织部门信息同步(增量): 若接口请求参数的“flag”字段删除、修改或新增,服务商需要实现删除、修改或新增租户信息的业务逻辑。自测用例请参见联营License类应用绑定。 租户应用授权信息同步接口: 若接口请求参数的“flag”字段删除或新增,服务商需要实现删除或新增租户信息的业务逻辑。自测用例请参见联营License类应用绑定。 下述两个场景需要用到扩展字段extension功能: ERP类应用,涉及到多帐套的需通过扩展字段extension来传帐套信息。 非ERP类应用,如果需要同步user扩展字段(如手机号、工号、邮箱等字段),可通过扩展字段来进行扩展传参,ISV端需要提前做好对接逻辑。扩展字段详细操作请参考企业租户将应用授权给下属的用户中的ERP类应用多帐套或者扩展字段传参流程。 租户应用授权信息同步时,需要根据用户信息userList中的role参数描述的逻辑进行处理。 role字段有admin、user的区分,测试时与租户手机号相同的用户作为admin角色,其它用户作为user角色: admin:role传到第三方应用下游,该用户在平台进入应用时默认有管理员的权限。 user:role传到第三方应用下游,该用户在平台进入应用时默认有用户的权限。
  • 组织和账号同步说明 组织部门信息同步(增量)/组织部门信息同步(全量): 组织同步说明: 应用有组织部门 ISV应用中如果每个用户都有单独的组织,即整个租户下的组织是树形结构,每个用户都挂在各自的组织下,则需要做组织的同步。 应用无组织部门 ISV应用中如果每个用户都挂在一个根组织下,即没有组织结构,组织不做对接就可以,同步组织事件做一个“伪通过”即可。 存量组织、账号同步说明: 应用涉及存量组织、账号同步 ISV应用本身有存量的组织、用户,若涉及旧数据迁移到MIW新平台,就需要考虑存量组织、用户同步的场景。 应用不涉及存量组织、账号同步 ISV应用本身无存量的组织、用户,若不涉及旧数据迁移到MIW新平台,就无需考虑存量组织、用户同步的场景。 应用中的存量组织数据迁移,应用程序根据如下流程处理: 应用中的存量用户数据迁移,应用程序根据如下流程处理:
共100000条