云服务器内容精选
-
运维中心基本概念 基本概念 说明 资源 资源是具备一定功能和作用的实例,是部署服务的管理对象,如WiseCloud::MicloudService::NuwaContainer实例、WiseCloud::Cache::D CS 实例等。 组件 组件是一个具有相同资源的集合,组件具备以下特点: 可以在组件中声明资源以及资源之间的依赖关系。 同一个资源只能属于一个组件。 组件下的所有资源上下文一致。 环境 环境是一个具有相同组件的集合,环境具有以下特点: 部署服务代码中的environment-id是“环境”的唯一索引。 不同环境下的组件和资源可以同名,同一环境下的资源和组件名称需要保证唯一。 一个组件只能属于一个环境,一个环境下会有多个组件。 环境变更的本质是环境下组件的变更。 流水线 流水线是将多个组件的变更组合起来的流程描述,描述各个组件变更的方式和次序。 变更工单 变更工单是实施现网变更的授权许可,业务需要发起现网变更时,通常会由研发人员提交变更电子流,并附上对应的变更文档。该电子流被审批通过后,会在变更工单管理中,创建一条对应的变更工单,运维人员可使用变更工单实施变更。 变更计划 变更计划是部署服务发起具体变更动作前的风险影响评估过程。通过风险影响评估过程可以得到,本次变更可能导致的资源动作和属性差异变化,以及可能的风险项。 变更风险项 变更风险项是某个资源的具体变更的风险认定。其描述了认定为风险变更的属性变化,以及能够审批允许的审批人列表。 变更电子流 变更电子流是用于无人值守变更的高度自动化的变更方式,是在部署服务基础上,尽可能将所有的运维手工选择操作前移到提交电子流之前。 Terraform Terraform是HashiCorp公司开发的基础设施即代码(Infrastructure-as-Code,IaC)软件,它能自动化的进行 资源编排 ,用于安全高效地预览、配置和管理云基础架构和资源,并提供自定义解决方案。 监控 是采集、汇总和分析IT基础设施、服务组件以及程序应用的运行指标,以了解其当前状态和运行状况,判断是否安全可靠的过程,是保证业务持续稳定运行的重要手段。 告警 告警是监控系统的响应组件,它根据指标值的变化按照既定的策略执行响应操作,其主要目的是引起人们对系统当前状态的关注。告警定义包含基于指标的条件或阈值以及当指标值达到或超出定义条件时要执行的操作。 告警通知 告警的通知在所有的告警处理的链路结束以后才会发生。告警处理模块会根据上报告警的上下文获取告警的值班配置,值班配置由业务预置。 告警屏蔽 为您提供短时间的屏蔽功能,可以通过设置告警屏蔽的规则,告警将在屏蔽的时间内不再触发任何通知,规则结束后,将会被再次唤醒,屏蔽期间告警被清除后,将不再触发任何通知,减少您的处理频度。 告警过滤 告警过滤是直接在接入的阶段就将告警屏蔽,告警仍然会进入Bypass的数据库但不会再向下发送给告警处理模块。 告警收敛 多个维度的告警,通过特定的条件将它们变为一条告警,只需要配置自定义的收敛规则,就可以将重复告警收敛到一起,还有默认的规则帮助用户维护告警。 告警标记 告警标记的作用是为一段时间内的告警打上标签,例如现网变更或者现网演练时,由于要模拟大量异常请求和其他操作会造成大量无用告警上报,标记的作用就是为这一段时间的告警打上标签与正常告警进行区分。 告警定义 对于繁琐复杂的告警上报字段感到困惑,使用统一定义,将会自动下发到业务对应的agent,更加人性化的界面设计,使告警上报更加统一、准确。 告警修复 设置特定的命中条件,告警在发送通知之前会执行预置的修复脚本,进行修复操作,自动帮你修复简单的告警。 语音值班配置 当告警生成时,配置对应的责任人,通过 WeLink 、短信、电话等多种形式,快速将异常情况通知到责任人。 日志 日志是指设备、系统或服务程序在运作时都会产生的事件记录,每一行日志都记载着日期、时间、使用者及动作等相关操作的描述。一般系统会有各种各样的日志文件,如应用程序日志,安全日志、系统日志、Scheduler服务日志、WWW日志、DNS服务器日志等。 日志项目 日志项目是一个包含多个日志服务配置的整体,可以看作是一个微服务实例。 同一个微服务实例下的日志服务配置应当包含在一个日志项目中。 不同微服务实例使用完全相同的日志服务配置时,也可以共用同一个日志项目。 日志空间 日志空间是日志服务为微服务的日志分配的使用空间。 业务须在日志接入页面填写日志相关信息并提交申请日志空间,日志空间支持定义空间内日志的结构化格式信息,此时要求所有使用此空间的日志都满足该日志格式。 日志采集配置 日志采集配置是日志服务采集端在采集微服务实例中日志时所需的配置,一种日志对应一项采集配置。 日志采集配置须归属于一个日志项目,并使用一个已分配好的日志空间。 日志采集配置之间可以共用日志空间,此时需要关注日志空间的日志格式要求,未定义日志格式的空间可不用关注。 事件 事件是指IT基础设施、服务组件以及程序应用等运行过程中发生的问题。事件可通过监控系统自动生成、客户报障生成或SRE主动巡检生成等。监控系统生成事件首先要采集和分析运行数据,然后根据预定规则判断是否需要生成事件。 HCW HW Cloud Watch,AppStage运维中心提供的监控系统,也称为云眼,可以提供监控、告警功能。 HCW Agent 监控系统的采集框架,需要在每台主机上部署,部署路径为/opt/huawei/HCW_Agent。 EAP 事件自动化平台(Event & Action Platform,EAP),通过集成各系统动作,解决复杂运维场景的操作编排功能。 流程 可以通过EAP平台所提供的各种动作组合来编排解决具体运维场景的流程。 动作 各服务的操作(例如部署任务、执行作业、确认告警等)封装。 标签 对某一类特定群体或对象的某项特征进行的抽象分类和概括,其值(标签值)具备可分类性。 标签树 标签树负责标签的管理,包括标签的创建,删除,修改。系统标签由系统管理员统一进行管理,业务自定义标签由业务人员进行管理。 逻辑主体 逻辑主体是业务实体的抽象,是基于物理表(MPPDB、ClickHouse、Influxdb)创建。逻辑主体和物理表之间存在映射关系,逻辑主体的字段名称和物理表可以不一样,这也是为了实现业务属性和物理表之间的解耦。 一个逻辑主体可以映射多种物理实体,当底层数据物理表变更,上层的指标逻辑定义可以不用发生变化。 指标 指标是指在被观测系统中观察和收集的资源使用或行为的测量值,可能是原始采集的数据,也可能是后期经过各种计算和统计方法得到的数值。 令牌 令牌是使用数据源的鉴权方式,只有通过对应业务的token的鉴权,才能使用对应的数据源。 视图 指标本身包含了业务计算规则,只有结合数据源才能真正被查询。视图,就是指标 + 物理表的结合,也是监控大盘上直接可被查询的对象。视图可以包含一个或多个指标,例如折线图只需要单指标的视图,但是表格就需要多指标的视图。 查询视图(Query View)。直接作用于物理表的查询视图,大多用在druid实时监控场景。 长期存储视图(Long Term View)。基于查询视图,可以创建长期存储视图。如果觉得某个查询视图值得被长期持久化,就可以使用该能力。长期存储视图会自动创建三个聚合任务,分别是5分钟粒度、小时粒度、天粒度。 持久化视图(Persistent View)。基于查询视图,可以创建持久化视图。部分视图需要出日报,就可以使用该能力。该视图会自动创建一个汇聚任务。 异常检测视图(Anomaly Detect View)。基于查询视图,可以创建异常检测视图,用来为异常检测任务提供数据。 插件 可在机器上执行并采集各项参数的二进制文件或者脚本。 微服务 微服务是云原生应用的最佳架构, 它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个微服务运行在其独立的进程中, 微服务与微服务间采用轻量级的通信机制互相沟通。每个微服务由全功能团队独立构建、独立测试,并且能够被独立地部署到生产环境。微服务的特点:组件化、松耦合、服务自治、去中心化。 应用 完成某项完整业务场景的软件系统。应用一般由多个微服务组成,应用里面的微服务能够相互发现和调用。 NUWA框架 NUWA提供一个完整的微服务开发框架,是一个开箱即用的应用级容器,以插件的形式汇聚云服务平台能力,让开发把时间更多的花在业务代码逻辑上。 Kubernetes Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署、规划、更新、维护的一种机制。 Pod Pod是Kubernetes创建或部署的最小单位。一个Pod封装一个或多个容器、存储资源、一个独立的网络IP以及管理控制容器运行方式的策略选项。 Node Node是一个执行具体工作的机器,可以是虚拟机或者物理机。Pod是部署在Node节点上的,如果Node故障,整个Pod会被调度到集群中的另外可用的Node节点上去。 工作负载 工作负载是在Kubernetes上运行的应用程序。无论您的工作负载是单个组件还是协同工作的多个组件,您都可以在Kubernetes上的一组Pod中运行它。在Kubernetes中,工作负载是对一组Pod的抽象模型,用于描述业务的运行载体,包括Deployment、StatefulSet、DaemonSet、Job、CronJob等多种类型。 无状态工作负载:即Kubernetes中的“Deployment”,无状态工作负载支持弹性伸缩与滚动升级,适用于实例完全独立、功能相同的场景,如:nginx、wordpress等。 有状态工作负载:即Kubernetes中的“StatefulSet”,有状态工作负载支持实例有序部署和删除,支持持久化存储,适用于实例间存在互访的场景,如ETCD、mysql-HA等。 创建守护进程集:即Kubernetes中的“DaemonSet”,守护进程集确保全部(或者某些)节点都运行一个Pod实例,支持实例动态添加到新节点,适用于实例在每个节点上都需要运行的场景,如ceph、fluentd、Prometheus Node Exporter等。 普通任务:即Kubernetes中的“Job”,普通任务是一次性运行的短任务,部署完成后即可执行。使用场景为在创建工作负载前,执行普通任务,将镜像上传至镜像仓库。 定时任务:即Kubernetes中的“CronJob”,定时任务是按照指定时间周期运行的短任务。使用场景为在某个固定时间点,为所有运行中的节点做时间同步。 父主题: 运维中心简介
-
数据校验流程 DataCheck流程如下: 下载DataCheck的工具包到Linux或Windows服务器并解压。 执行加密命令对源端/目标端数据库登录密码进行加密。 配置dbinfo.properties文件,包含源数据库和目标数据库的相关连接信息以及函数开关信息。 编辑check_input.xlsx文件,输入schema、源数据库表名和dws表名以及校验级别等参数。 执行DataCheck启动命令进行数据校验,校验结果保存在check_input_result.xlsx中。 图1 DataCheck流程图
-
软件要求 操作系统要求 DSC兼容的操作系统如表4所示。 表4 兼容的操作系统 服务器 操作系统 版本 通用x86服务器 SUSE Linux Enterprise Server 11 SP1(SUSE11.1) SP2(SUSE11.2) SP3(SUSE11.3) SP4(SUSE11.4) SUSE Linux Enterprise Server 12 SP0(SUSE12.0) SP1(SUSE12.1) SP2(SUSE12.2) SP3(SUSE12.3) RHEL 6.4-x86_64(RedHat6.4) 6.5-x86_64(RedHat6.5) 6.6-x86_64(RedHat6.6) 6.7-x86_64(RedHat6.7) 6.8-x86_64(RedHat6.8) 6.9-x86_64(RedHat6.9) 7.0-x86_64(RedHat7.0) 7.1-x86_64(RedHat7.1) 7.2-x86_64(RedHat7.2) 7.3-x86_64(RedHat7.3) 7.4-x86_64(RedHat7.4) CentOS 6.4(CentOS6.4) 6.5(CentOS6.5) 6.6(CentOS6.6) 6.7(CentOS6.7) 6.8(CentOS6.8) 6.9(CentOS6.9) 7.0(CentOS7.0) 7.1(CentOS7.1) 7.2(CentOS7.2) 7.3(CentOS7.3) 7.4(CentOS7.4) Windows 7.0,10,11 其他软件要求 DSC对其他软件版本的要求如表5所示。 表5 其他软件要求 软件 用途 JDK 1.8.0_141 or later Used to run DSC. Perl 5.8.8 Used to migrate Perl files. Perl 5.28.2 and later Used to migrate Perl files in Windows. Python 3.8.2 Used to verify post migration script.
-
Data Studio用户界面 表1 用户界面简介 界面名称 描述 主菜单 提供使用Data Studio的基本操作。 工具栏 提供常用操作入口。 “SQL终端”页签 用于执行SQL语句和函数/过程。 “PL/SQL Viewer”页签 显示函数/过程信息。 “调用堆栈”窗格 显示执行栈。 “断点”窗格 显示所有设置过的断点。 “变量”窗格 显示变量及其变量值。 “SQL Assistant”页签 显示“SQL终端”和“PL/SQL Viewer”页签中输入信息的建议或参考。 “结果”页签 显示所执行的函数/过程或SQL语句的结果。 “消息”页签 显示进程输出。显示标准输入、标准输出和标准错误。 “对象浏览器”窗格 显示数据库连接的层级树形结构和用户有权访问的相关数据库对象。除公共模式外,所有默认创建的模式均分组在“系统模式”下,用户模式分组在相应数据库的“用户模式”下。 说明: “对象浏览器”仅显示满足当前用户权限要求的对象。 “最小化窗口”窗格 用于打开“调用堆栈”、“断点”和“变量”窗格。该窗格仅在“调用堆栈”、“断点”、“变量”窗格中的一个或多个窗格最小化时显示。 搜索工具栏 用于在“对象浏览器”窗格中搜索对象。
-
简介 终端配置文件是特定于平台的终端配置,由可执行路径、参数和其他自定义项组成。 配置文件示例: { "terminal.integrated.profiles.windows": { "My PowerShell": { "path": "pwsh.exe", "args": [ "-noexit", "-file", "${env:APPDATA}\PowerShell\my-init-script.ps1" ] } }, "terminal.integrated.defaultProfile.windows": "My PowerShell"} 您可以在终端配置文件中使用变量(例如上面示例中的APPDATA环境变量)。 通过运行Terminal: Select Default Profile命令配置默认集成终端,该命令也可通过Terminal视图中的Launch Profile列表访问。 父主题: 终端简介
-
HBase产品简介 HBase是一个稳定可靠,性能卓越、可伸缩、面向列的分布式 云存储 系统,适用于海量数据存储以及分布式计算的场景,用户可以利用HBase搭建起TB至PB级数据规模的存储系统,对数据轻松进行过滤分析,毫秒级得到响应,快速发现数据价值。 HBase适用场景有: 海量数据存储。 适用于TB~PB级以上的数据存储,提供动态伸缩能力,方便用户在性能或容量需要改变时,改变集群资源,轻松构建企业海量数据存储系统。 实时查询。 HBase的列式KeyValue存储机制,适用于企业用户明细数据即时查询,基于主键的低时延点查,响应时延一般为秒级或毫秒级,方便用户对数据的实时分析。 HBase的架构和详细原理介绍,请参见:https://hbase.apache.org/book.html
-
集群管理功能 CloudTable服务是华为云提供的一项分布式、可扩展的KeyValue数据存储服务。CloudTable提供Web官网服务界面,CloudTable HBase集群管理的具体功能如下: 创建集群:在CloudTable服务界面完成集群的创建。可以选择计算存储分离架构和计算资源动态调整,尽可能为用户降低成本。 管理集群:对创建的集群进行管理。 指标监控:集群运行中,收集各项监控数据,上报 云监控 (Cloud Eye),向用户以图形化的方式呈现集群运行状况。当指标出现异常时,通过 消息通知 用户和管理员,及时人工介入。 删除集群:当用户不再需要集群时,可选择删除集群。此操作为高危操作,删除集群可能导致数据丢失,因此在执行删除操作之前,请确认不存在正在运行的业务,所有数据都已经保存。 重启集群:当修改完集群HBase参数后,或者因长时间不重启导致系统运行缓慢等情况下,用户需要重启集群。重启操作将有可能会导致正在运行中的业务数据丢失,如果需要执行重启操作,请确定不存在正在运行的业务,所有数据都已经保存。 查询告警:集群运行异常或系统故障时,CloudTable服务会收集故障信息并上报网管系统,维护人员可根据用户提供的告警信息定位问题原因。 日志查询:记录用户对集群操作信息,便于集群运行异常时定位分析问题原因。
-
整体框架 华为云CAF提供系统的和完整的云化转型方法论和最佳实践,CAF的完整性体现在两个方面,一要涵盖云化转型的全部旅程,二要涵盖云化转型所有干系人的视角。CAF的整体框架如下图所示。 图1 CAF整体框架 云化全旅程按照时间顺序包含以下六个阶段。 制定战略:制定云化转型的战略,这个战略要与组织的业务战略和技术战略保持对齐,确保云化转型能够实现组织的业务目标。在该阶段需要分析干系人利益、识别云化驱动力、评估云化成熟度、制定云化目标和分析云化收益,然后制定符合组织业务战略的云化转型战略。 顶层规划:云化转型是一项系统性工程,不是简单的将应用系统迁移到云上,需要基于组织的云化转型战略有针对性的设计云化转型的顶层框架,从组织、流程和技术方面整体考虑。在组织层面需要组建一个云卓越中心(Cloud Center of Excellence,简称CCoE)来领导、协调和推进整个云化转型项目。在技术层面需要基于卓越架构(Well-Architected Framework,简称WAF)设计Landing Zone、安全架构和平台工程。在流程层面需要根据组织的IT运营模式设计最佳的云运营模式,并基于云运营模式制定应用生命周期管理流程,最大化云计算带来的业务价值。 调研评估:针对组织的IT基础设施、应用系统和大数据平台进行现状调研,包括静态配置信息和动态运行信息的收集和分析,针对现状信息进行评估分析,选择正确的云服务,为后续详细方案设计提供有效输入。 方案设计:在云化转型的顶层设计框架内,基于调研评估结果,再结合组织的业务架构和WAF框架,详细设计云上技术架构、云上应用架构和云上数据架构,通过卓越的架构设计保障云基础设施和应用系统的安全性、可靠性和高性能。在该阶段需要根据应用系统的重要性制定POC试点和批次迁移计划,根据应用系统的特征选择合适的迁移策略,同时也需要制定云上的成本预算计划,最终整合输出详细设计方案。 采用实施:基于详细设计方案,首先要搭建Landing Zone,部署可扩展的网络基础设施,配置安全基线和运维基线;然后将各个应用系统和大数据平台迁移或直接部署到云上,或者基于云平台进行应用现代化改造,也可以基于云平台提供的各种创新技术直接在云上进行应用和业务创新。 运维治理:将应用系统迁移或部署到云上之后就进入了运维治理阶段,在该阶段需要针对云基础设施、应用系统和大数据平台进行持续的精益化治理、确定性运维、持续安全运营和成本运营,并基于WAF框架进行持续优化。 云化转型项目涉及组织内很多部门和干系人,这些干系人会参与云化转型项目的决策或影响云化旅程的各个阶段。如表1所示,不同的干系人有不同的视角和关注点,这些视角总体分为业务视角和技术视角。 华为云CAF会针对所有这些视角给出恰当的建议,您的组织可以将这些建议作为决策和行动的起点,结合组织的业务特点和偏好制定有针对性的行动方案。 表1 云化全视角 分类 视角 关注点 干系人 业务 战略视角 基于云化转型项目支撑组织的业务战略和数字化战略,充分利用云计算的优势构建组织的核心竞争力。 CXO高级管理人员 业务 业务视角 提升业务连续性,支撑业务的持续发展; 加速新业务上市速度,快速满足不断变化的市场需求; 基于云上创新技术进行业务、产品或模式创新,为组织带来增量收益。 业务主管、CIO 业务 财务视角 云采用前后的TCO对比分析,降低IT的TCO; 不断优化云资源的性能效率和成本效益; 通过提升用户体验和业务创新带来新增收入。 CFO、财务专家 业务 组织视角 搭建云化转型的组织结构,定义云化转型人才的角色和职责; 制定云化转型的绩效考核指标,云化转型人才的选、用、育、留。 CIO、HR专家 业务 流程视角 基于云平台和云服务的特点优化IT服务流程和运维流程,支撑上层应用系统的快速迭代和安全稳定运行。 CIO、IT主管 技术 平台视角 基于云平台和云服务构建企业级、高安全、高可靠、高性能和易扩展的IT基础设施或技术平台,对上层应用系统提供计算、存储、网络、安全、数据库、中间件等服务,帮助应用团队快速基于该平台进行应用系统的开发、测试、部署和高效运维,并支撑应用系统的安全稳定运行。 CIO、CTO、IT主管、IT运维专家、应用开发及测试专家、应用运维专家 技术 架构视角 基于云平台和云服务构建高安全、高可靠、高性能和易扩展的技术架构、应用架构和数据架构。 CTO、云架构师 技术 运维视角 基于云平台和云服务的特点构建完善的云上IT运维体系,针对IT基础设施和应用系统进行监控、告警、故障定位和故障修复,保障IT基础设施和应用系统的长期稳定运行。 CTO、IT运维专家、应用运维专家 技术 安全视角 基于云平台和云服务的特点构建云上全方位安全防护体系和持续安全运营机制,保障IT基础设施和应用系统的机密性、完整性和可用性。 CISO、安全专家 技术 治理视角 基于云平台和云服务的特点构建完善的云上IT治理体系,针对云上的“人财物权法”进行集中化和精益化的治理,有效控制云化转型的风险,最大化业务收益,保障业务的持续发展。 CIO、IT治理专家 云化旅程是一个长期和复杂的过程,涉及的人员庞大,要处理的任务非常繁多,企业要安排专门的项目经理对其进行端到端的项目管理,科学的项目管理方法和行动方案直接影响云化转型的效率和质量,最终将会影响云化转型战略目标的实现。 华为云CAF的目录结构按照云化全旅程的六个阶段展开,在相应的章节会展开介绍各个业务视角和技术视角的关注点和对应的实践建议。 父主题: 云采用框架简介
-
运营中心功能介绍 看板 产品运营人员能直观查看关键数据,分析产品运营过程中取得的成效和潜在问题。 数据模型 运营中心提供数据建模能力,运营人员可以新建实时数据模型和离线数据模型,也可以通过逆向数据库生成数据模型。通过提供多表关联建模整合表能力,一个数据模型可以映射多个数据表数据。 指标管理 运营中心提供指标自定义灵活配置能力,可以配置普通指标、复合型指标和静态指标,基于数据模型,通过计算方式、计算时间单位、统计维度、筛选条件等组合配置指标。 数据管理 运营中心提供多种数据接入能力,通过与数据源连接,可以建立数据源中数据表或数据文件的迁移任务,将源端数据迁移到运营中心,为后续业务做数据准备。 看板管理 通过自定义运营看板,可以把产品运营中的关键数据统一呈现出来,可按人员权限和业务类型展示不同的数据看板,可视化展现产品运营现状。 审计日志 审计日志是记录系统活动的记录,以便检查和审查这些活动。它包含操作对象、操作IP、操作人、操作时间等。
-
Rsync与Inotify简介 Rsync(Remote Synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台服务器间的文件,也可以使用Rsync同步本地硬盘中的不同目录。SUSE Linux中已经预装了此软件,直接使用即可。 Inotify是一种基于内核的文件变化通知机制,用于监控文件系统时间,如文件存取、删除、移动、修改等。该软件在SUSE Linux中没有预装,需要自行安装。该项目的地址为 https://github.com/rvoicilas/inotify-tools。 父主题: 脚本简介
-
代码示例 本示例用于追加上传examplebucket桶中的example/objectname对象 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536373839404142434445464748 package mainimport ( "fmt" "os" "strings" obs "github.com/huaweicloud/huaweicloud-sdk-go-obs/obs")func main() { //推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。 //您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html。 ak := os.Getenv("AccessKeyID") sk := os.Getenv("SecretAccessKey") // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。 securityToken := os.Getenv("SecurityToken") // endpoint填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写。 endPoint := "https://obs.cn-north-4.myhuaweicloud.com"" // 创建obsClient实例 // 如果使用临时AKSK和SecurityToken访问OBS,需要在创建实例时通过obs.WithSecurityToken方法指定securityToken值。 obsClient, err := obs.New(ak, sk, endPoint, obs.WithSecurityToken(securityToken)) if err != nil { fmt.Printf("Create obsClient error, errMsg: %s", err.Error()) } input := &obs.AppendObjectInput{} // 指定存储桶名称 input.Bucket = "examplebucket" // 指定追加上传对象,此处以 example/objectname 为例。 input.Key = "example/objectname" // 指定追加写位置。如果是首次上传时就必须指定position为0 input.Position = 0 // 指定待上传对象的数据流 input.Body = strings.NewReader("Hello OBS") // 追加上传对象 output, err := obsClient.AppendObject(input) if err == nil { fmt.Printf("Append object(%s) under the bucket(%s) successful!\n", input.Key, input.Bucket) fmt.Printf("ETag:%s, NextAppendPosition:%d\n", output.ETag, output.NextAppendPosition) return } fmt.Printf("Append objects under the bucket(%s) fail!\n", input.Bucket) if obsError, ok := err.(obs.ObsError); ok { fmt.Println("An ObsError was found, which means your request sent to OBS was rejected with an error response.") fmt.Println(obsError.Error()) } else { fmt.Println("An Exception was found, which means the client encountered an internal problem when attempting to communicate with OBS, for example, the client was unable to access the network.") fmt.Println(err) }}
-
返回结果说明 表7 返回结果 参数名称 参数类型 描述 output *AppendObjectOutput 参数解释: 接口返回信息,详情参考AppendObjectOutput。 err error 参数解释: 接口返回错误信息。 表8 AppendObjectOutput 参数名称 参数类型 描述 StatusCode int 参数解释: HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 默认取值: 无 RequestId string 参数解释: OBS服务端返回的请求ID。 默认取值: 无 ResponseHeaders map[string][]string 参数解释: HTTP响应头信息。 默认取值: 无 VersionId string 参数解释: 对象的版本号。如果桶的多版本状态为开启,则会返回对象的版本号。 取值范围: 长度为32的字符串 默认取值: 无 ETag string 参数解释: 对象的ETag值,即base64编码的128位MD5摘要。ETag是对象内容的唯一标识,可以通过该值识别对象内容是否有变化。比如上传对象时ETag为A,下载对象时ETag为B,则说明对象内容发生了变化。ETag只反映变化的内容,而不是其元数据。上传的对象或拷贝操作创建的对象,都有唯一的ETag。 约束限制: 当对象是服务端加密的对象时,ETag值不是对象的MD5值。 取值范围: 长度为32的字符串。 默认取值: 无 SseHeader SseCHeader 或 SseKmsHeader 参数解释: 服务端加密头信息,选择SSE-C加密方式,则详见SseCHeader,选择SSE-KMS加密方式。则详见SseKmsHeader。 NextAppendPosition int64 参数解释: 下一次追加上传请求应该提供的追加写位置(position)。 约束限制: 需要追加写的对象首次上传时就必须指定为0,下次追加需要填写的值为服务端本次上传成功返回消息的NextAppendPosition。 取值范围: 0~(263-1),单位:字节。 默认取值: 0 表9 SseCHeader 参数名称 参数类型 是否必选 描述 Encryption string 作为请求参数时必选 参数解释: 表示服务端加密是SSE-C方式。对象使用SSE-C加密方式。 取值范围: 可选值:AES256,即选择SSE-C方式加密对象。 默认取值: 无 Key string 作为请求参数时必选 参数解释: SSE-C方式下加密使用的密钥,该密钥用于加密对象。 约束限制: 该头域由256bit的密钥经过Base64编码得到,示例:K7QkYpBkM5+hca27fsNkUnNVaobncnLht/rCB2o/9Cw= 默认取值: 无 KeyMD5 string 作为请求参数时可选 参数解释: SSE-C方式下加密使用密钥的MD5值,该值用于验证密钥传输过程中是否出错。 约束限制: 由密钥值经过MD5加密再经过Base64编码后得到,示例:4XvB3tbNTN+tIEVa0/fGaQ== 默认取值: 无 表10 SseKmsHeader 参数名称 参数类型 是否必选 描述 Encryption string 作为请求参数时必选 参数解释: 表示服务端加密是SSE-KMS方式。对象使用SSE-KMS方式加密。 取值范围: 可选值:kms,即选择SSE-KMS方式加密对象。 默认取值: 无 Key string 作为请求参数时可选 参数解释: SSE-KMS加密方式下使用的KMS主密钥的ID值。 取值范围: 有效值支持两种格式: regionID:domainID(账号ID):key/key_id key_id 其中: regionID是使用密钥所属region的ID,可在地区和终端节点页面获取; domainID是使用密钥所属账号的账号ID,获取方法参见如何获取账号ID和用户ID?; key_id是从 数据加密 服务创建的密钥ID,获取方法请参见查看密钥。 默认取值: 如果用户没有提供该头域,那么默认的主密钥将会被使用。 如果默认主密钥不存在,将默认创建并使用。
-
接口约束 您必须是桶拥有者或拥有上传对象的权限,才能上传对象。建议使用 IAM 或桶策略进行授权,如果使用IAM则需授予obs:object:PutObject权限,如果使用桶策略则需授予PutObject权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、配置对象策略。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。 用户上传的对象存储在桶中。用户必须对桶有WRITE权限,才可以在桶中上传对象。同一个桶中存储的对象名必须是唯一的。 每次追加上传都会更新该对象的最后修改时间。 服务端加密SSE-C方式,那么追加上传和初始化段一样,设置诸如x-obs-server-side-encryption之类的请求Header,后续追加上传也必须携带。 服务端加密SSE-KMS方式,有且只有第一次上传且桶内不存在同名对象时,才设置诸如x-obs-server-side-encryption之类的请求Header,后续追加上传不携带。 每次追加上传的长度不能超过对象长度上限5G的限制。 每个Appendable对象追加写次数最多为10000次。 如果对象存储类型为COLD(归档存储)或深度归档存储,则不能调用该接口。 如果桶设置了跨区域复制配置,则不能调用该接口。 并行文件系统不支持追加写对象。
-
代码示例 本示例用于断点下载examplebucket桶中的example/objectname对象 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536373839404142434445464748495051 package mainimport ( "fmt" "os" obs "github.com/huaweicloud/huaweicloud-sdk-go-obs/obs")func main() { //推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险。 //您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html。 ak := os.Getenv("AccessKeyID") sk := os.Getenv("SecretAccessKey") // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。 // securityToken := os.Getenv("SecurityToken") // endpoint填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写。 endPoint := "https://obs.cn-north-4.myhuaweicloud.com" // 创建obsClient实例 // 如果使用临时AKSK和SecurityToken访问OBS,需要在创建实例时通过obs.WithSecurityToken方法指定securityToken值。 obsClient, err := obs.New(ak, sk, endPoint/*, obs.WithSecurityToken(securityToken)*/) if err != nil { fmt.Printf("Create obsClient error, errMsg: %s", err.Error()) } input := &obs.DownloadFileInput{} // 指定存储桶名称 input.Bucket = "examplebucket" // 指定下载对象,此处以 example/objectname 为例。 input.Key = "example/objectname" // 指定下载对象的本地文件全路径,此处以/tmp/objectname为例。当该值为空时,默认为当前程序的运行目录。 input.DownloadFile = "/tmp/objectname" // 指定是否开启断点续传模式,此处以true为例。默认为False,表示不开启。 input.EnableCheckpoint = true // 指定分段大小,单位字节。此处以每段9M为例。 input.PartSize = 9 * 1024 * 1024 // 指定分段下载时的最大并发数,此处以并发数5为例 input.TaskNum = 5 // 断点续传下载对象 output, err := obsClient.DownloadFile(input) if err == nil { fmt.Printf("Download file(%s) under the bucket(%s) successful!\n", input.Key, input.Bucket) fmt.Printf("StorageClass:%s, ETag:%s, ContentType:%s, ContentLength:%d, LastModified:%s\n", output.StorageClass, output.ETag, output.ContentType, output.ContentLength, output.LastModified) return } fmt.Printf("Download file(%s) under the bucket(%s) fail!\n", input.Key, input.Bucket) if obsError, ok := err.(obs.ObsError); ok { fmt.Println("An ObsError was found, which means your request sent to OBS was rejected with an error response.") fmt.Println(obsError.Error()) } else { fmt.Println("An Exception was found, which means the client encountered an internal problem when attempting to communicate with OBS, for example, the client was unable to access the network.") fmt.Println(err) }}
-
请求参数说明 表1 请求参数列表 参数名称 参数类型 是否必选 描述 input *DownloadFileInput 必选 参数解释: 断点续传下载请求参数,详见DownloadFileInput。 extensions extensionOptions 可选 参数解释: 拓展配置项。通过调用拓展配置项为对应请求配置额外的拓展请求头,详情参考extensionOptions。 表2 DownloadFileInput 参数名称 参数类型 是否必选 描述 Bucket string 必选 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 默认取值: 无 Key string 必选 参数解释: 对象名。对象名是对象在存储桶中的唯一标识。对象名是对象在桶中的完整路径,路径中不包含桶名。 例如,您对象的访问地址为examplebucket.obs.cn-north-4. emyhuaweicloud.com/folder/test.txt 中,对象名为folder/test.txt。 取值范围: 长度大于0且不超过1024的字符串。 默认取值: 无 VersionId string 可选 参数解释: 对象的版本号,用于获取指定版本号的对象。例如:G001117FCE89978B0000401205D5DC9。 取值范围: 长度为32的字符串。 默认取值: 无,如果不设置则默认获取最新版本的对象。 DownloadFile string 可选 参数解释: 下载对象的本地文件全路径。 默认取值: 当该值为空时,默认为当前程序的运行目录。 PartSize int64 可选 参数解释: 分段大小。 取值范围: 大于0,小于对象大小,单位:字节。 默认取值: 9437184,即每段9MB。 TaskNum int 可选 参数解释: 分段下载时的最大并发数。 取值范围: (0, 文件大小/分段大小],即大于0小于等于文件大小除以分段大小向上取整。 默认取值: 1,即不设置则默认串行下载。 EnableCheckpoint bool 可选 参数解释: 是否开启断点续传模式。 取值范围: true:开启断点续传模式。 false:关闭断点续传模式。 默认取值: false CheckpointFile string 可选 参数解释: 记录下载进度文件的文件路径,只在断点续传模式下有效。 默认取值: 当该值为空时,默认与下载对象的本地文件路径同目录。 SseHeader SseCHeader 可选 参数解释: 服务端解密头信息,详见SseCHeader。 IfMatch string 可选 参数解释: 指定一个预设的Etag值,如果下载对象的ETag值与该参数值相同,则返回对象内容,否则返回错误。 取值范围: 长度为32的字符串。 默认取值: 无 IfNoneMatch string 可选 参数解释: 指定一个预设的Etag值,如果下载对象的ETag值与该参数值不相同,则返回对象内容,否则返回错误。 取值范围: 长度为32的字符串。 默认取值: 无 IfModifiedSince time.Time 可选 参数解释: 如果对象在指定的时间后有修改,则返回对象内容,否则返回错误。 约束限制: 日期格式必须为ISO8601的格式。 例如:2018-01-01T00:00:00.000Z,表示如果最后修改时间晚于2018-01-01T00:00:00.000Z则返回对象内容,否则返回错误。 代码示例:time.Now().Add(time.Duration(24) * time.Hour)。 默认取值: 无 IfUnmodifiedSince time.Time 可选 参数解释: 如果对象在指定的时间后没有修改,则返回对象内容,否则返回错误。 约束限制: 日期格式必须为ISO8601的格式。 例如:2018-01-01T00:00:00.000Z,表示如果最后修改时间早于2018-01-01T00:00:00.000Z则返回对象内容,否则返回错误。 代码示例:time.Now().Add(time.Duration(24) * time.Hour)。 默认取值: 无 表3 SseCHeader 参数名称 参数类型 是否必选 描述 Encryption string 作为请求参数时必选 参数解释: 表示服务端加密是SSE-C方式。对象使用SSE-C加密方式。 取值范围: 可选值:AES256,即选择SSE-C方式加密对象。 默认取值: 无 Key string 作为请求参数时必选 参数解释: SSE-C方式下加密使用的密钥,该密钥用于加密对象。 约束限制: 该头域由256bit的密钥经过Base64编码得到,示例:K7QkYpBkM5+hca27fsNkUnNVaobncnLht/rCB2o/9Cw= 默认取值: 无 KeyMD5 string 作为请求参数时可选 参数解释: SSE-C方式下加密使用密钥的MD5值,该值用于验证密钥传输过程中是否出错。 约束限制: 由密钥值经过MD5加密再经过Base64编码后得到,示例:4XvB3tbNTN+tIEVa0/fGaQ== 默认取值: 无
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格