云服务器内容精选

  • 集中式工作流流程 创建代码仓库。Repo目前支持新建自定义代码仓库、按模板新建代码仓库、Fork已有的代码仓库,也支持从本地导入已有的代码仓库、导入Git平台的代码仓、导入SVN平台的代码仓。 开发者克隆代码仓。Repo目前支持使用SSH密钥克隆代码仓到本地、使用HHPS协议克隆代码仓到本地。 开发者在本地创建分支并开发代码或者在线创建分支分支并开发代码。 开发者提交更改的代码文件到缓存区。Repo目前支持使用Git Bash提交代码、在Eclipse提交代码。 开发者新建合并请求。 开发者解决检视意见。 Committer合入合并请求。
  • 集中式工作流缺点 依赖中央仓库:所有的代码都依赖于中央仓库,如果中央仓库出现问题,整个团队的开发工作都将受到影响。 代码冲突:由于所有的代码都在中央仓库中进行管理,团队成员在进行代码修改时容易发生冲突,需要通过手动解决冲突来保证代码的正确性。 需要权限管理:由于所有的代码都在中央仓库中进行管理,需要对团队成员的权限进行管理,以保证代码的安全性和可靠性。 不适合大型项目团队:对于大型项目团队而言,集中式工作流可能会导致中央仓库的管理和维护变得困难,影响开发效率和代码质量。
  • Git工作流概述 什么是Git工作流?你可以理解为代码管理的分支策略,它不仅仅是版本管理范畴,更服务于项目流程管理和团队协同开发。所以,有必要制定适合自己研发场景的工作流。 下面介绍四种工作流的工作方式、优缺点,以及使用中的一些注意事项。 集中式工作流 功能分支工作流 Git flow工作流(推荐) Forking工作流 研发团队可以根据实际研发场景制定合理的工作流,能有效提高项目管理水平和团队协同开发能力, 并通过CodeArts Repo平台,高效、安全的管理代码资产,将更多的精力集中在业务开发上,实现持续集成、持续交付和快速迭代的目标。 父主题: Git工作流
  • 配置说明 异步调用目标的配置说明参见表2,异步调用目标的事件内容参见如下示例: { "timestamp": "2020-08-20T12:00:00.000Z+08:00", "request_context": { "request_id": "1167bf8c-87b0-43ab-8f5f-26b16c64f252", "function_urn": "urn:fss:xx-xxxx-x:xxxxxxx:function:xxxx:xxxx:latest", "condition": "", "approximate_invoke_count": 0 }, "request_payload": "", "response_context": { "status_code": 200, "function_error": "" }, "response_payload": "hello world!" } 表2 配置参数说明 参数 说明 timestamp 调用时间戳。 request_context 请求上下文。 request_context.request_id 异步调用的请求ID。 request_context. function_urn 异步执行的函数URN。 request_context.condition 调用错误类别。 request_context. approximate_invoke_count 异步调用的执行次数。当该值大于1时,说明函数计算对您的函数进行了重试。 request_payload 请求函数的原始负载。 response_context 返回上下文。 response_context.statusCode 调用函数的返回码(系统)。当该返回码不为200时,说明出现了系统错误。 response_context.function_error 调用错误信息。 response_payload 执行函数返回的原始负载。
  • 步骤二:本地验证 启动docker容器 docker run -u 1003:1003 -p 8000:8000 custom_container_http_example:latest 打开一个新的命令行窗口,向开放的8000端口发送消息,支持访问模板代码中根目录“/”下所有路径,以下以“helloworld”为例。 curl -XPOST -H 'Content-Type: application/json' -d '{"message":"HelloWorld"}' localhost:8000/helloworld 按照模块代码中返回 Hello FunctionGraph, method POST 在容器启动端口可以看到 receive {"message":"HelloWorld"} 或者使用docker logs命令获取容器的日志
  • 准备工作 注册华为账号 并实名认证。 在创建函数前,请先注册华为账号并实名认证,具体步骤请参考注册华为账号并开通华为云和实名认证介绍。 如果您已有一个华为账号并实名认证,请跳过此步骤。 免费额度。 函数工作流 服务每个月都会提供一定数量的免费额度,免费额度是子主账户共同使用,具体详情请参见免费额度。 当免费额度使用完后,若您继续使用函数工作流时,账户的可用额度小于待结算的账单时,即被判定为账户欠费。欠费后,可能会影响您的服务资源的正常运行,请及时充值,具体详情请参考账户充值。 为用户添加函数的操作权限。 本章节所有操作均默认具有操作权限,请确保您登录的用户已有“FunctionGraph Administrator”权限,即FunctionGraph服务所有权限,更多权限的说明请参考权限管理。
  • 步骤五:测试函数 在函数详情页,单击“测试”,在弹窗中创建新的测试事件。 选择“apig-event-template”,事件名称输入“helloworld”,测试事件修改为如下所示,完成后单击“创建”。 { "body": "{\"message\": \"helloworld\"}", "requestContext": { "requestId": "11cdcdcf33949dc6d722640a13091c77", "stage": "RELEASE" }, "queryStringParameters": { "responseType": "html" }, "httpMethod": "POST", "pathParameters": {}, "headers": { "Content-Type": "application/json" }, "path": "/helloworld", "isBase64Encoded": false }
  • 步骤二:本地验证 启动docker容器 docker run -u 1003:1003 -p 8000:8000 custom_container_event_example:latest 打开一个新的命令行窗口,向开放的8000端口发送消息,访问模板代码中指定的/init路径 curl -XPOST -H 'Content-Type: application/json' localhost:8000/init 按照模块代码中返回 Hello init 打开一个新的命令行窗口,向开放的8000端口发送消息,访问模板代码中指定的/invoke路径 curl -XPOST -H 'Content-Type: application/json' -d '{"message":"HelloWorld"}' localhost:8000/invoke 按照模块代码中返回 Hello invoke 在容器启动端口可以看到 Listening on http://localhost:8000 receive {} receive { message: 'HelloWorld' } 或者使用docker logs命令获取容器的日志
  • 准备工作 注册华为账号并实名认证。 在创建函数前,请先注册华为账号并实名认证,具体步骤请参考注册华为账号并开通华为云和实名认证介绍。 如果您已有一个华为账号并实名认证,请跳过此步骤。 免费额度。 函数工作流服务每个月都会提供一定数量的免费额度,免费额度是子主账户共同使用,具体详情请参见免费额度。 当免费额度使用完后,若您继续使用函数工作流时,账户的可用额度小于待结算的账单时,即被判定为账户欠费。欠费后,可能会影响您的服务资源的正常运行,请及时充值,具体详情请参考账户充值。 为用户添加函数的操作权限。 本章节所有操作均默认具有操作权限,请确保您登录的用户已有“FunctionGraph Administrator”权限,即FunctionGraph服务所有权限,更多权限的说明请参考权限管理。
  • 创建SFS Turbo文件系统 登录华为云弹性文件服务控制台,选择“SFS Turbo”,单击“创建文件系统”,进入“创建文件系统”界面。 在“创建文件系统”界面填写如下参数: 计费模式:根据实际情况选择,推荐按需计费。 弹性文件服务的计费介绍请参见计费说明,计费价格请参见价格计算器。 区域:请选择“华东-上海一”,当前Stable-Diffusion应用仅支持上海一部署。 项目:默认。 可用区:与子网可用区保持一致。 文件系统类型:根据实际需要选择。 存储类型:根据实际需要选择。 容量:根据实际需要选择。 选择网络:请选择上一步创建的VPC和子网。 安全组:请根据提示信息配置。 企业项目:default。 其他保持默认。 参数配置完成后,单击“立即创建”,等待SFS Turbo文件系统创建完成即可。 父主题: 准备
  • 运行动作 输入参数 用户配置运行动作执行动作,相关参数说明如表1所示。 表1 运行动作属性配置输入参数说明 参数 必须 说明 函数名称 是 选择下拉列表中的函数,一般是之前已定义保存的函数,也可以进行以下操作。 单击:可以直接在弹出的“创建函数”页面快速创建函数,参数配置完成后可单击“创建”保存函数。 单击:选择函数后,单击该图标可以在弹出的“编辑函数”页面中快速编辑函数,参数编辑完成后可单击“更新”保存函数。 单击:创建或编辑函数后,单击该图标,可刷新下拉列表中的函数列表。 单击:选择函数后,单击该图标可快速复制函数。 连接 否 可选项,选择了连接,在Code代码时可通过连接器认证参数mssiAuthData获取该连接认证信息。 创建流时,当选择该执行动作后,根据选择的函数不同,需要输入的参数不同,具体请以界面为准。 输出参数 该执行动作是根据用户定义的函数内容输出指定参数。
  • 函数公共请求头 HTTP函数请求头默认携带如下字段。 表2 默认请求头 字段 描述 X-CFF-Request-Id 当前请求ID X-CFF-Memory 分配的内存 X-CFF-Timeout 函数超时时间 X-CFF-Func-Version 函数版本 X-CFF-Func-Name 函数名称 X-CFF-Project-Id ProjectID X-CFF-Package 函数组 X-CFF-Region 当前region
  • 概述 HTTP函数专注于优化 Web 服务场景,用户可以直接发送 HTTP 请求到 URL 触发函数执行,从而使用自己的Web服务。HTTP函数只允许创建APIG/APIC的触发器类型,其他触发器不支持。 HTTP函数当前不区分编程语言,函数执行入口必须在bootstrap文件中设置,用户直接写启动命令,端口统一开放成8000,绑定IP为127.0.0.1。 bootstrap文件是HTTP函数的启动文件,HTTP函数仅支持读取bootstrap 作为启动文件名称,其它名称将无法正常启动服务,bootstrap启动文件请参见bootstrap文件示例。 HTTP函数支持多种开发语言。 用户函数需要返回一个合法的http响应报文。 该章节均以Nodejs为样例,若需要使用其他语言,则更换语言路径即可,代码包路径无需更换。其他各语言路径请参见表1。 关于Go语言构建FunctionGraph HTTP函数,请参考使用Go构建FunctionGraph HTTP函数。 函数发起HTTP请求时,如果是内网访问,则请求IP地址是动态;如果是公网访问,则请求IP地址是固定。如需了解更多详情请咨询技术支持工程师。
  • 概述 函数是处理事件的自定义代码,您可以使用空白模板函数创建函数,根据实际业务场景进行函数配置。 由于FunctionGraph承担计算资源的管理工作,在函数完成编码以后,需要为函数设置运算资源等信息,目前主要是在FunctionGraph函数控制台完成。 创建函数时可以使用空模板,也可以使用示例模板创建函数、使用容器镜像部署函数。 使用空模板创建函数时,需要设置基础配置信息和代码信息,如表1所示,带*参数为必填项。 每个FunctionGraph函数都运行在其自己的环境中,有其自己的资源和文件系统。
  • 配置代码源 您可以根据所选的运行时语言Runtime,参见创建程序包,选择适合的方式进行代码源部署,完成后单击“部署”。 以下图为例,运行时语言为“Node.js 10.16”,可以选择“在线编辑”、“Zip文件”、“OBS地址”三种方式进行代码源部署。 图2 部署代码源 当使用“OBS地址”方式进行代码源部署时,请确保创建函数选择的“区域”与创建OBS桶选择的“区域”一致。 代码若有修改,请修改完成后再次单击“部署”,重新部署代码。