云服务器内容精选

  • 基本概念 账号 用户注册时的账号,账号对其所拥有的资源及云服务具有完全的访问权限,可以重置用户密码、分配用户权限等。由于账号是付费主体,为了确保账号安全,建议您不要直接使用账号进行日常管理工作,而是创建用户并使用他们进行日常管理工作。 用户 由账号在 IAM 中创建的用户,是云服务的使用人员,具有身份凭证(密码和访问密钥)。 在我的凭证下,您可以查看账号ID和用户ID。通常在调用API的鉴权过程中,您需要用到账号、用户和密码等信息。 区域(Region) 从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 详情请参见区域和可用区。 可用区(AZ,Availability Zone) 一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 项目 华为云的区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计算资源、存储资源和网络资源),以默认项目为单位进行授权,用户可以访问您账号中该区域的所有资源。如果您希望进行更加精细的权限控制,可以在区域默认的项目中创建子项目,并在子项目中购买资源,然后以子项目为单位进行授权,使得用户仅能访问特定子项目中资源,使得资源的权限控制更加精确。 图1 项目隔离模型 在我的凭证下,您可以查看项目ID。 git 分布式版本管理软件,最初由Linus Torvalds创作。 分支(Branching) 在版本控制与软件配置管理中,分支是由某个版本的程式码或软件物件中建立复制版本,在分支出来后的两个版本,可以独立进行修改。分支会形成树状结构,也被称为trees,streams或codelines。原始的版本,称为父分支(parent branch)或是上游分支(upstream branch)。分支出来的复本,称为子分支(Child branches)。作为最源头,没有父分支的分支,称为主干(trunk)或主线(mainline)。 修订标签 / 标签(revision tag / tag) 在版本控制系统中,对应某一项目特定修订版本的文本标签。可以让使用者针对项目的某一特定状态给予有意义的名称。一些版本控制系统的指令可以用修订标签代替修订版本标识符。在软件开发过程中,可以用修订标签来标示软件特定的软件版本周期,例如“1.2版”。 分叉(复刻/fork) 一个软件工程名词,发生在当开发人员从一个软件包拷贝了一份源代码然后在其上进行独立的开发,创建不同的软件。这个术语不只意味着版本控制上的分支,同时也意味着开发者社区的分割,是一种形式的分裂。 在Github出现之后,fork成为常态,再加上合并请求的机制,事实上社区并未分裂,却变得更加繁荣了。 合并请求(Pull requests/merge request) 用户可以将自己的代码(在fork仓库中编写,或者在某个新的分支中编写),提出合并请求,由代码仓库的管理审核,并合入。 父主题: 使用前必读
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 如下公共消息头需要添加到请求中。 Content-Type:消息体的类型(格式),必选,默认取值为“application/json”,有其他取值时会在具体接口中专门说明。 X-Auth-Token:用户Token,可选,当使用Token方式认证时,必须填充该字段。用户Token也就是调用获取用户Token接口的响应值,该接口是唯一不需要认证的接口。 公有云API同时支持使用AK/SK认证,AK/SK认证是使用SDK对请求进行签名,签名过程会自动往请求中添加Authorization(签名认证信息)和X-Sdk-Date(请求发送的时间)请求头。 AK/SK认证的详细说明请参考AK/SK认证。 对于获取用户Token接口,由于不需要认证,所以只添加“Content-Type”即可,添加消息头后的请求如下所示。 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json
  • 请求消息体 请求消息体通常以结构化格式发出,与请求消息头中Content-type对应,传递除请求消息头之外的内容。若请求消息体中参数支持中文,则中文字符必须为UTF-8编码。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。 对于获取用户Token接口,您可以从接口的请求部分看到所需的请求参数及参数说明。将消息体加入后的请求如下所示,加粗的斜体字段需要根据实际值填写,其中username为用户名,domainname为用户所属的账号名称,********为用户登录密码,xxxxxxxxxx为project的名称,您可以从地区和终端节点中获取。 scope参数定义了Token的作用域,下面示例中获取的Token仅能访问project下的资源。您还可以设置Token额作用域为某个账号下所有资源或账号的某个project下的资源,详细定义请参见获取用户Token。 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "name": "xxxxxxxx" } } } } 获取用户Token到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编写代码等方式发送请求调用API。对于获取用户Token接口,返回的响应消息头中“x-subject-token”就是需要获取的用户Token。有了Token之后,您就可以使用Token认证调用其他API。
  • 请求URI 请求URI由如下部分组成。 {URI-scheme} :// {Endpoint} / {resource-path} ? {query-string} 尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所以在此单独强调。 URI-scheme:表示用于传输请求的协议,当前所有API均采用HTTPS协议。 Endpoint:指定承载REST服务端点的服务器 域名 或IP,不同服务不同区域的Endpoint不同,您可以从地区和终端节点中获取。例如IAM服务在“华北-北京一”区域的Endpoint为“iam.cn-north-1.myhuaweicloud.com”。 resource-path:资源路径,也即API访问路径。从具体API的URI模块获取,例如“获取用户Token”API的resource-path为“/v3/auth/tokens”。 query-string:查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”,例如“limit=10”,表示查询不超过10条数据。 例如您需要获取IAM在“华北-北京一”区域的Token,则需使用“华北-北京一”区域的Endpoint(iam.cn-north-1.myhuaweicloud.com),并在获取用户Token的URI部分找到resource-path(/v3/auth/tokens),拼接起来如下所示。 https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens 图1 URI示意图 为查看方便,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,而Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • 请求方法 HTTP请求方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。 GET:请求服务器返回指定资源。 PUT:请求服务器更新指定资源。 POST:请求服务器新增资源或执行特殊操作。 DELETE:请求服务器删除指定资源,如删除对象等。 HEAD:请求服务器资源头部。 PATCH:请求服务器更新资源的部分内容。当资源不存在的时候,PATCH可能会去创建一个新的资源。 在获取用户Token的URI部分,您可以看到其请求方法为“POST”,则其请求为: POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens
  • 集中式版本控制系统 集中式版本控制系统的特点是只有一台中央服务器,存放着所有研发数据,而其它客户端机器上保存的是中央服务器最新版本的文件快照,不包括项目文件的变更历史。所以,每个相关人员工作开始前,都需要从这台中央服务器同步最新版本,才能开始工作,如下图所示。 常见的集中式版本控制系统为CVS、VSS、SVN、ClearCase。 集中式版本控制系统的优点与缺点如下表所示。 表1 集中式版本控制系统描述 优点 缺点 操作简单,使用没有难度,可轻松上手。 文件夹级权限控制,权限控制粒度小。 对客户端配置要求不高,无需存储全套代码。 网络环境要求高,相关人员必须联网才能工作。 中央服务器的单点故障影响全局,如果服务器宕机,所有人都无法工作。 中央服务器在没有备份的情况下,磁盘一旦被损坏,将丢失所有数据。
  • 分布式版本控制系统 分布式版本控制系统的特点是每个客户端都是代码仓库的完整镜像,包括项目文件的变更历史。所有数据分布的存储在每个客户端,不存在中央服务器。可能有人会问,公司使用Git分布式存储工具,也有“中央服务器”啊?其实,这个所谓的“中央服务器”仅仅是用来方便管理多人协作,任何一台客户端都可以胜任它的工作,它和所有客户端没有本质区别,如下图所示。 常见的分布式版本控制系统为Git、Mercurial、Bazaar、Bitkeeper。 分布式版本控制系统的优点与缺点如下表所示。 表2 分布式版本控制系统描述 优点 缺点 版本库本地化,版本库的完整克隆,包括标签、分支、版本记录等。 支持离线提交,适合跨地域协同开发。 分支切换快速高效,创建和删除分支成本低。 学习成本高,不容易上手。 只能针对整个仓库创建分支,无法根据目录建立层次性的分支。
  • 新建评审意见 您可以在“代码”页签的“文件”和“提交”子菜单下,也可以在“合并请求”中“文件变更”子菜单下给待检视文件添加检视意见。 您可以在“合并请求”详情页“评审意见”下给待检视的合并请求添加评论,也可以在“代码”页签下的“提交”子菜单下给提交文件添加评论。 其中在“代码”页签的“文件”和“提交”子菜单下添加的检视意见和评论可以在“评审记录”页签下“源自Commit的评审记录”中查看。 在“合并请求”中“文件变更”子菜单下给待检视文件添加检视意见和在“合并请求”详情页“评审意见”中添加的评论可以在“评审记录”页签下“源自合并请求的评审记录”中查看。 在“代码”页签下“文件”子菜单,新建检视意见。 进入“文件”子菜单,单击“待评审文件”,单击代码行图标,在“文本框”输入评审意见,选择“严重程度”和“指派给”,如“严重程度”为“一般”,“指派给”为“MR创建者”,在下拉框选择“意见分类”和“意见模块”,单击“确定”完成检视意见添加。 图3 新建检视意见 在“代码”页签下“提交”子菜单,新建检视意见。 进入“提交”子菜单,单击“提交记录”下“待检视的文件”,单击代码行图标,在“文本框”输入评审意见,选择“严重程度”和“指派给”,如“严重程度”为“一般”,“指派给”为“MR创建者”,在下拉框选择“意见分类”和“意见模块”,单击“确定”完成检视意见添加。 图4 新建检视意见 在“合并请求”页签中“文件变更”子菜单下,新建检视意见。 进入“文件变更”子菜单,单击代码行图标,在“文本框”输入评审意见,选择“严重程度”和“指派给”,如“严重程度”为“一般”,“指派给”为“MR创建者”,在下拉框选择“意见分类”和“意见模块”,单击“确定”完成检视意见添加。 图5 新建检视意见 在“合并请求”页签中合并请求详情页,新建评论。 进入“合并请求”页签,单击“待检视的合并请求”,进入合并请求详情页。单击“评审记录”,在评审记录下输入评审意见,单击“确定”完成评论的添加。 在“提交”页面中,单击某个提交,切换“评论”界面,即可新建评论。 图6 新建评论
  • 实现原理 代码托管服务 (CodeArts Repo)结合仓库的存储方式提供以下迁移方案: HTTP在线导入 通过HTTP协议直接将您的远程仓库导入到代码托管中,全程线上操作,但导入仓库的时长会受到网络条件及仓库容量的影响。 仓库容量相对较大的云端仓库推荐使用Git客户端推送的方式进行迁移。 Git客户端推送 通过使用Git客户端将本地仓库中的代码文件推送至代码托管服务。 将项目文件存放在本地计算机的用户,建议先将本地项目文件初始化成Git仓库,再使用Git客户端进行迁移。 新建仓库对于仓库容量相对较大的云端仓库,建议先将云端仓库克隆或下载到本地,再使用Git客户端进行迁移。
  • Git客户端推送(以Git Bash为例) 在进行Git Bash客户端推送之前请确保已在代码托管服务中配置SSH密钥或HTTPS密码。 进入目标代码托管服务。 将本地仓库初始化为Git仓库,用于与代码托管仓库进行关联。 在您的仓库中打开Git Bash客户端,执行以下命令: git init 初始化成功如下图,此时当前文件夹已经是本地Git仓库了。 将本地仓库与代码托管仓库进行绑定。 进入代码托管仓库,获取仓库地址。 在本地使用remote命令,将本地仓库与代码托管仓库进行绑定。 git remote add 仓库别名 仓库地址 示例为: git remote add origin git@*****/java-remote.git #复制使用时注意换成您自己的仓库地址 一般用origin作为仓库别名,因为当您从远程仓库clone到本地时,默认产生的别名就是origin,您也可以使用任意别名。 如果提示仓库名重复,更换一个即可。 无回显即为绑定成功。 将代码托管仓库master分支拉取到本地仓库。 此步骤主要是避免冲突。 git fetch origin master #复制使用时 注意是否需要将origin替换为您仓库的别名 将本地代码文件提交到master分支。 依次执行: git add . git commit -m "您的提交备注" 下图为成功的执行。 将本地master分支与代码托管master分支进行绑定。 git branch --set-upstream-to=origin/master master #复制使用时 注意是否需要将origin替换为您仓库的别名 成功执行如下图所示,提示您已经将合并后的仓库放在工作区与版本库。 合并代码托管仓库与本地仓库的文件,并存储在本地。 git pull --rebase origin master #复制使用时 注意是否需要将origin替换为您仓库的别名 成功执行如下图所示,提示您已经将合并后的仓库放在工作区与版本库。 将本地仓库推送覆盖代码托管仓库。 因为之前已经进行了绑定,直接push即可。 git push 成功后,再直接拉取pull,验证代码托管仓库与本地仓库版本相同,如下图。
  • 分支操作 新建分支 Git新建分支的本质就是创建一个指向最后一次提交的可变指针,所以,Git分支的创建不是复制版本库的内容,仅仅是新建了一个指针,它以40个字符长度SHA-1字串形式保存在文件中。 1 #git branch branchName commitID 基于commitID即某一个版本号拉出新分支,如果没有commitID则基于当前分支的HEAD拉出新分支。 例如,新建feature分支,执行的命令为git branch feature,如下图所示。 切换分支 命令如下。 1 #git checkout branchName 例如,切换到feature分支,执行的命令为git checkout feature,如下图所示。 分支合并 无论哪种工作流都会涉及到分支合并(把一个分支中的修改整合到当前分支),主要有两种方法:三方合并(merge) 和衍合(rebase)。通过对同一种场景进行不同操作体会两种合并方法的区别。 场景:master分支新增了C4节点, hotfix分支新增了C3节点,现将hotfix分支合并到master分支: 三方包括hotfix新增节点C3,master新增节点C4,以及两者的共同祖先节点C2。这种合并操作简单,但新增合并节点C5,形成了环形,版本记录可读性差,如下图所示。 1 2 #git checkout master #git merge hotfix 衍合先将master分支新增节点C4以补丁形式保存在.git/rebase目录中,然后同步hotfix分支最新代码,再应用补丁C4’,如下图所示。 1 2 #git checkout master #git rebase hotfix 冲突解决 场景一:两个合并分支修改了同一行代码 解决方法: 分析哪种修改方法正确,手动合并。 提交修改。 场景二:文件被重命名为不同的名字 解决方法: 确认哪个名字是正确的,删除错误的。 提交修改。
  • 推送架构代码 打开本地框架代码,确保根目录名与云端创建的代码仓库名一致,在根目录下右键打开Git bash终端。 推送本地代码到云端。 在当前Git Bash终端依次输入如下命令: 初始化本地代码仓库,执行该命令后,在“D:/code/repo1/”下多了一个“.git”文件夹。 1 git init 关联云端代码仓库。 1 git remote add origin repoUrl 仓库地址如下图进入仓库详情页,单击”克隆/下载“,所示单击红色方框处获取。 推送代码到云仓库。 1 2 3 4 5 git add . git commit -m "init project" git branch --set-upstream-to=origin/master master git pull --rebase git push
  • 数据保护技术 CodeArts Repo通过多种手段保护数据安全。 数据保护手段 简要说明 详细介绍 传输加密(HTTPS) 通过在云端对托管在CodeArts Repo的代码库进行落盘加密,可以有效避免数据拥有者之外的人接触到用户的明文数据,避免数据在云端发生泄露。同时,代码加密过程对用户完全透明,用户可以使用任意官方Git端来访问CodeArts Repo上的代码仓库。 - 密钥管理 通过SSH密钥和部署密钥管理,确保请求发起是请求发起方,让用户只能浏览被授权的数据,保证数据安全。 关于SSH密钥详细介绍及获取方式,请参见SSH密钥。 git-crypt加密传输与存储 git-crypt是一款第三方开源软件,可以用于对Git仓库中的文件进行透明化的加密和解密。 其可对指定文件、指定文件类型等进行加密存储,开发者可以将加密文件(如机密信息或敏感数据)与可共享的代码存储在同一个仓库中,并如同普通仓库一样被拉取和推送,只有持有对应文件密钥的人才能查看到加密文件的内容,但并不会限制参与者对非加密文件读写。关于git-crypt加密传输与存储详细介绍及获取方式,请参见git-crypt加密。 敏感数据匿名和高价值 数据加密 CodeArts Repo在利用统一、准确的数据支撑应用程序和服务的同时充分保障了数据安全性和隐私性。 日志和数据库中无可避免有一些敏感数据,包含但不限于密钥,账号信息等等。为防止敏感数据泄露造成安全问题,需要把这些数据进行匿名或者加密处理,其原理是哈希函数,是对一段信息产生信息摘要,以防止被篡改。 防DDOS工具 DDoS高防(Anti-DDoS)是防护DDoS攻击的工具。当您的互联网服务器遭受大流量的DDos攻击时,DDoS高防可以保护其应用服务持续可用。 DDoS高防支持通过DNS解析和IP直接指向两种引流方式,实现网站域名和业务端口的接入防护。根据您在DDoS高防中为业务配置的转发规则,DDoS高防将业务的DNS域名解析或业务IP指向DDoS高防实例IP或CNAME地址进行引流。 来自公网的访问流量都将优先经过高防机房,恶意攻击流量将在高防流量清洗中心进行清洗过滤,正常的访问流量通过端口协议转发的方式返回给源站服务器,从而保障源站服务器的稳定访问。 流量限制 流量限制可以用来限制用户在给定时间内HTTP请求的数量,流量限制用来保护上游应用服务器不被同时太多用户请求所压垮。 CodeArts Repo的主要使用Nginx流控和APIGW流控。Nginx的流量限制使用漏桶算法,该算法在通讯和分组交换计算机网络中广泛使用,用以处理带宽有限时的突发情况。APIGW流控可限制单位时间内API的被调用次数,保护后端服务,提供持续稳定的服务。 容灾备份 容灾备份不仅保证数据不丢失,还要保证在服务器宕机后接管服务器的业务,保证业务连续性。保障用户可以不间断的使用应用服务,让用户的服务请求能够持续运行,保证信息系统提供的服务完整、可靠、一致。 - Hash分片存储 Hash分片存储,即通过数据分片提高隐私性和私密性,就是按照一定的规则,将数据集划分成相互独立正交的数据子集。然后数据被随机分散到多个节点中,没有任何一个节点可以访问完整的数据,它们只包含数据的某一部分。 - 水印 为防止未经授权拍照、截图或其他手段随意传播公司核心资产,可以开启水印设置。 关于水印的详细设置方法,请参见设置水印。 备份 仓库备份操作保障代码安全,防止他人误删除,分为两种备份形式。 将仓库备份到华为云的其它区域。 将仓库备份到您本地计算机。 关于备份仓库的详细操作方法,请参见备份仓库。 父主题: 安全
  • 日志 ● 云日志 云日志服务(Log Tank Service)提供一站式日志采集、秒级搜索、海量存储、结构化处理、转储和可视化图表等功能,满足应用运维、网络日志可视化分析、等保合规和运营分析等应用场景。 出于分析问题的目的,CodeArts Repo将系统运行的日志实时记录到LTS,并保存3天。 基于服务器、数据库等的日志进行监控,对触发监控规则的日志信息通过短信和邮件进行告警,确保现网故障和隐患能第一时间被发现并进行有效处理,保证用户的业务正常运转,做到问题的及时发现和处理,减少对用户业务的影响。 ● 操作日志 操作日志旨在记录代码仓的所有行为活动,相关操作人员和时间点,帮助管理员和仓库所有者监督和回溯代码仓的行为活动。 关于操作日志的详细查看方法,请参见查看操作日志。
  • 责任共担 华为云秉承“将公司对网络和业务安全性保障的责任置于公司的商业利益之上”。针对层出不穷的 云安全 挑战和无孔不入的云安全威胁与攻击,华为云在遵从法律法规业界标准的基础上,以安全生态圈为护城河,依托华为独有的软硬件优势,构建面向不同区域和行业的完善云服务安全保障体系。 安全性是华为云与您的共同责任,如图1所示。 华为云:负责云服务自身的安全,提供安全的云。华为云的安全责任在于保障其所提供的 IaaS、PaaS 和 SaaS 类云服务自身的安全,涵盖华为云数据中心的物理环境设施和运行其上的基础服务、平台服务、应用服务等。这不仅包括华为云基础设施和各项云服务技术的安全功能和性能本身,也包括运维运营安全,以及更广义的安全合规遵从。 租户:负责云服务内部的安全,安全地使用云。华为云租户的安全责任在于对使用的 IaaS、PaaS 和 SaaS 类云服务内部的安全以及对租户定制配置进行安全有效的管理,包括但不限于虚拟网络、 虚拟主机 和访客虚拟机的操作系统,虚拟防火墙、API 网关和高级安全服务,各项云服务,租户数据,以及身份账号和密钥管理等方面的安全配置。 《华为云安全白皮书》详细介绍华为云安全性的构建思路与措施,包括云安全战略、责任共担模型、合规与隐私、安全组织与人员、基础设施安全、租户服务与租户安全、工程安全、运维运营安全、生态安全。 图1 华为云安全责任共担模型 父主题: 安全