云服务器内容精选

  • 特征 在离线异步应用场景中,工作负载具有以下一个或多个特征: 执行时间长 业务的处理耗时一般在分钟~小时级,Response Time不敏感。 提交后立即返回 在触发调用后立即得到返回,从而不因长耗时处理阻塞业务主逻辑的执行。 实时感知任务状态 无 并行处理 离线GPU任务需要处理大量数据,对GPU资源供给要求高,通过API调用并行运行加快处理速度。 数据源集成 离线GPU任务对数据源的需求多种多样,处理过程中需要与多种存储产品(例如对象存储OBS)和多种消息产品(例如消息队列)进行频繁交互。
  • 操作步骤 登录 FunctionGraph 控制台,配置 Java 函数,并打开“快照式冷启动”开关。 (可选)配置 Restore Hook,并在函数代码中实现对应的 Hook 逻辑。 图1 开启Restore Hook 函数代码中Restore Hook示例如下: 函数发布新版本后,触发快照的自动化制作。 图2 发布新版本 请耐心等待快照制作完成(5min 超时时间)。 调用 Java 函数,体验快照优化后的性能提升。
  • 概述 华为云发布的基于进程级快照的冷启动加速方案,是一种性能优化服务,用户无需额外付费,只需进行简单的配置、少量的代码修改,即可享受到该创新方案带来的冷启动性能提升。 当用户 Java 函数打开冷启动加速的配置开关后,华为云 FunctionGraph 会预先执行函数对应的初始化代码,获取其初始化执行上下文环境的快照,并进行加密缓存。后续调用该函数并触发冷启动扩容时,会直接从提前初始化后的应用快照来恢复执行环境,而非重新走一遍初始化流程,以此达到极大提升启动性能的效果。
  • 约束与限制 仅支持Java函数。 如果应用函数强依赖于有状态,需要考虑使用Restore Hook进行状态刷新。 对于强依赖CPU指令集特性的函数,请先提前与客服确认。 依赖硬编码的host 环境(例如 hostname, 或者 hostip)的函数在迁移到其他主机上的时候,可能会有问题。建议避免依赖这些变量,请先提前与客服确认。 当前仅支持基于x86机器开发的应用。 该功能当前仅支持西南-贵阳一、土耳其-伊斯坦布尔。
  • 场景二:Web类应用 使用FunctionGraph和其他云服务或租户VM结合,用户可以快速构建高可用,自动伸缩的Web/移动应用后端。比如小程序、网页/App、聊天机器人、BFF等。 其优势有: 高可用,利用OBS,Cloud Table的高可用性实现网站数据的高可靠性,利用API Gateway和FunctionGraph的高可用性实现网站逻辑的高可用。 灵活扩展,业务爆发时可以自动调度资源运行更多函数实例以满足处理需求。 按需收费,只有对函数处理文件数据的时间进行计费,无需购买冗余的资源用于非峰值处理。
  • 场景一:事件驱动类应用 以事件驱动的方式执行服务,按需供给,开发者无需关注业务波峰波谷,节省闲时成本,最终降低运维成本。比如视频直播/转码、实时数据流处理、IoT规则/事件处理等。 实时文件处理 客户端上传文件到OBS,触发FunctionGraph函数,在上传数据后立即进行处理。可以使用FunctionGraph实时创建图像缩略图、转换视频编码、进行数据文件汇聚、筛选等。 其优势有: 灵活扩展,业务爆发时可以自动调度资源运行更多函数实例以满足处理需求。 事件触发,通过上传文件到OBS,触发FunctionGraph函数进行文件处理。 按需收费,只有对函数处理文件数据的时间进行计费,无需购买冗余的资源用于非峰值处理。 使用对象存储服务(OBS),创建两个桶,上传图片,通过构建和触发函数对图片进行压缩,参考使用函数压缩图片。 实时数据流处理 使用FunctionGraph和DIS处理实时流数据,跟踪应用程序活动、顺序事务处理、分析数据流、整理数据、生成指标、筛选日志、建立索引、分析社交媒体以及遥测和计量IoT设备数据。 其优势有: 事件触发,通过DIS流采集数据,批量数据通过事件触发处理函数进行处理。 灵活扩展,业务爆发时可以自动调度资源运行更多函数实例以满足处理需求。 按需收费,只有对函数处理文件数据的时间进行计费,无需购买冗余的资源用于非峰值处理。 如使用数据接入服务采集IOT实时数据流,通过构建函数,将采集到的数据进行处理(比如格式转换),然后存储到表格存储服务(CloudTable Service)中,参考使用函数处理DIS数据。
  • 场景三:AI类应用 各行各业智能化深入带来更多的应用开发场景,通常需要集成各类服务快速上线。比如三方服务集成、AI推理、车牌识别。 其优势有: 快速搭建,用户上传图像后触发函数工作流执行调用文字识别/内容检测服务针对图像进程处理,并将结果以JSON结构化数据返回。按需使用函数与多个智能服务集成,形成丰富的应用处理场景。并随时根据业务改变对函数处理过程做调整,实现业务灵活变更。 简化运维,用户只需开通相关云服务并在函数服务中编写业务逻辑,无需配置或管理服务器,专注于业务创新。业务爆发时可以自动调度资源运行更多函数实例以满足处理需求。 按需计费,只有对函数执行的时间及各智能服务处理进行计费,无需购买冗余的资源用于非峰值处理。
  • FunctionGraph权限 默认情况下,新建的IAM用户没有任何权限,您需要将其加入用户组,并给用户组授予策略,才能使得用户组中的用户获得策略定义的权限,这一过程称为授权。授权后,用户就可以基于策略对云服务进行操作。 FunctionGraph资源通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在各区域(如华北-北京1)对应的项目(cn-north-1)中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问FunctionGraph时,需要先切换至授权区域。 根据授权精细程度分为角色和策略。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于华为云各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。 如表1所示,包括了FunctionGraph的所有系统权限。 表1 系统权限说明 系统角色/策略名称 描述 类别 依赖关系 FunctionGraph Administrator 函数工作流(FunctionGraph)管理员,具有管理函数、工作流、触发器以及调用函数的权限(该权限后期会下线,建议您不使用) 系统角色 Tenant Guest FunctionGraph Invoker 函数工作流(FunctionGraph)调用者,具有查询函数、工作流、触发器以及调用函数的权限 系统角色 无 FunctionGraph FullAccess 函数工作流服务所有权限 系统策略 无 FunctionGraph ReadOnlyAccess 函数工作流服务只读权限 系统策略 无 FunctionGraph CommonOperations 函数工作流(FunctionGraph)调用者,具有查询函数和触发器,以及调用函数的权限 系统策略 无 当添加了FunctionGraph FullAccess权限的子账号在创建触发器或使用其他功能时仍没有操作权限,是因为该服务或功能不支持细粒度鉴权,因此需要您单独添加对应服务或功能的Admin权限。具体详情如下: CTS、APIG、DIS当前不支持细粒度鉴权,需要添加对应admin权限。 SMN目前部分局点已支持细粒度鉴权,如您遇到无法细粒度鉴权情况,则需要添加对应admin权限。 IoTDA是新增加的触发器,FullAccess中缺少对应权限。您在创建该触发器时会提示需要创建委托并添加相应权限,创建委托需要您先添加iam: agencies:list,iam:agencies:createAgency 权限; TMS、DNS、BSS、CES、EG、DMS是新增加功能,FullAccess中缺少对应权限,需单独添加; 更多触发器及相关功能需要的权限,请参见表2所示。 表2 触发器及相关功能的权限 触发器/服务功能 权限 APIG apig:groups:get apig:groups:list apig:apis:create apig:apis:delete apig:apis:update apig:apis:publish apig:apis:list apig:apis:get apig:apis:offline apig:apps:list apig:envs:list APIG专享版 apig:instances:get apig:instances:create apig:instances:update apig:instances:list apig:sharedInstance:operate CTS cts:notification:create cts:notification:delete cts:notification:update cts:operation:list cts:tracker:list cts:trace:list DDS dds:instance:get dds:instance:list DIS dis:streams:list IoTDA iotda:routingrules:create iotda:routingrules:delete iotda:routingrules:queryList iotda:routingrules:query iotda:routingactions:create iotda:routingactions:delete iotda:routingactions:query iotda:routingactions:queryList iotda:subscriptions:queryList iotda:rules:modifyStatus iotda:apps:queryList LTS lts:groups:create lts:groups:get lts:groups:list lts:groups:put lts:logstreams:delete lts:logstreams:list lts:topics:get lts:subscriptions:create lts:subscriptions:delete lts:subscriptions:put lts:structConfig:create lts:structConfig:get OBS obs:bucket:GetBucketLocation obs:bucket:GetBucketNotification obs:bucket:PutBucketNotification obs:bucket:ListBucket SMN smn:topic:list smn:topic:update TMS tms:predefineTags:list tms:tagValues:list DNS dns:recordset:create, dns:recordset:list, dns:recordset:update, dns:zone:create, dns:zone:delete, dns:zone:get, dns:zone:list BSS bss:bill:view bss:renewal:view CES ces:alarms:get ces:alarms:list ces:alarms:create DMS dms:instance:get EG eg:subscriptions:get eg:subscriptions:list eg:sources:list eg:sources:get eg:agency:create eg:subscriptions:create eg:subscriptions:delete eg:subscriptions:operate 表3列出了FunctionGraph常用操作与系统权限的授权关系,您可以参照该表选择合适的系统权限。 表3 常用操作与系统权限之间的关系 操作 FunctionGraph Invoker FunctionGraph Administrator FunctionGraph ReadOnlyAccess FunctionGraph CommonOperations FunctionGraph FullAccess 创建函数 × √ × × √ 查询函数 √ √ √ √ √ 修改函数 × √ × × √ 删除函数 × √ × × √ 调用函数 √ √ × √ √ 查看函数日志 √ √ √ √ √ 查看函数指标数据 √ √ √ √ √
  • 与其他服务的关系 FunctionGraph服务与以下云服务的对接,实现相关功能,如表1所示。 表1 对接服务 服务名称 实现功能 消息通知服务(SMN) 构建FunctionGraph函数来处理SMN的通知,相关内容请参考消息通知服务用户指南。 API网关(API Gateway) 通过HTTPS调用FunctionGraph函数,使用API Gateway自定义REST API和终端节点来实现。相关内容请参考API网关用户指南。 对象存储服务(OBS) 构建FunctionGraph函数来处理OBS存储桶事件,例如对象事件或删除事件。当用户将一张照片上传到存储桶时,OBS存储桶调用FunctionGraph函数,实现读取图像和创建照片缩略图。相关内容请参考对象存储服务用户指南。 数据接入服务(DIS) 构建FunctionGraph函数定期轮询DIS数据流中的新记录,例如网站点击流、财务交易记录、社交媒体源、IT日志和位置跟踪事件等。相关内容请参考数据接入服务用户指南。 云日志服务(LTS) 构建FunctionGraph函数来处理云日志服务订阅的日志。当云日志服务采集到订阅的日志后,可以通过FunctionGraph函数对其进行自定义处理、分析或将其加载到其他系统。相关操作请参考云日志服务用户指南。 云审计服务(CTS) 构建FunctionGraph函数,根据CTS云审计服务类型和操作订阅所需要的事件通知,由函数对日志中的关键信息进行分析和处理。相关内容请参考云审计服务用户指南。 通过云审计服务,您可以记录与FunctionGraph服务相关的操作事件,便于日后的查询、审计和回溯。相关内容请参考云审计服务支持的FunctionGraph操作列表。 审计日志。开通云审计服务后,系统开始记录云服务资源的操作。云审计服务管理控制台保存最近7天的操作记录。操作步骤请参考查看追踪事件。 文档数据库服务(DDS) 使用DDS触发器,每次更新数据库中的表时,都可以触发Functiongraph函数以执行额外的工作,创建DDS文档数据库实例请参见购买文档数据库实例。 云监控服务(CES) FunctionGraph函数实现了与云监控服务对接,函数上报云监控服务的监控指标,用户可以通过云监控服务来查看函数产生的监控指标和告警信息。相关内容请参考云监控服务用户指南。 云监控支持的函数监控指标请参考监控配置。 虚拟私有云(VPC) 函数支持用户创建虚拟私有云(VPC)并访问自己VPC内的资源,同时支持通过SNAT方式绑定EIP访问外网。相关内容请参考虚拟私有云用户指南。
  • 函数管理 提供控制台管理函数。 函数支持Node.js、Java、Python、Go等多种运行时语言,同时支持用户自定义运行时,说明如表1所示。 建议使用相关语言的最新版本。 表1 运行时语言说明 运行时语言 支持版本 Node.js 6.10、8.10、10.16、12.13、14.18、16.17、18.15 Python 2.7、3.6、3.9、3.10 Java 8.0、11 Go 1.x C# .NET Core 2.1、.NET Core 3.1 PHP 7.3 定制运行时 - 函数支持多种代码导入方式 支持在线编辑代码、OBS文件引入、上传ZIP包、上传JAR包等方式。不同运行时支持的代码上传方式如表2所示。 表2 代码上传方式说明 运行时 在线编辑 上传ZIP文件 上传JAR包 从OBS上传文件 Node.js 支持 支持 不支持 支持 Python 支持 支持 不支持 支持 Java 不支持 支持 支持 支持 Go 不支持 支持 不支持 支持 C# 不支持 支持 不支持 支持 PHP 支持 支持 不支持 支持 定制运行时 支持 支持 不支持 支持
  • 初始化功能 引入initializer接口: 分离初始化逻辑和请求处理逻辑,程序逻辑更清晰,让用户更易写出结构良好,性能更优的代码。 用户函数代码更新时,系统能够保证用户函数的平滑升级,规避应用层初始化冷启动带来的性能损耗。新的函数实例启动后能够自动执行用户的初始化逻辑,在初始化完成后再处理请求。 在应用负载上升,需要增加更多函数实例时,系统能够识别函数应用层初始化的开销,更准确的计算资源伸缩的时机和所需的资源量,让请求延时更加平稳。
  • 函数流 函数流是用来编排FunctionGraph函数的工具,可以将多个函数编排成一个协调多个分布式函数任务执行的工作流。 用户通过在可视化的编排页面,将事件触发器、函数和流程控制器通过连线关联在一个流程图中,每个节点的输出作为连线下一个节点的输入。编排好的流程会按照流程图中设定好的顺序依次执行,执行成功后支持查看工作流的运行记录,方便您轻松地诊断和调试。 函数流功能特性和优势: 功能特性 函数可视化编排 函数流执行引擎 错误处理 可视化监控 优势 使用更少代码快速构建应用程序 函数流允许用户将函数组合编排成一个完整的应用程序,而无需进行代码编写。可以实现快速构建,快速上线。当业务调整时,可以快速调整流程,完成快速上线,无需编写任何代码。 完善的错误处理机制 支持对流程中发生的错误进行捕获和重试,用户可以进行灵活的异常处理。 可视化的编排和监控体验 通过拖拽进行流程编排,学习成本低,可以快速上手。 监控页面使用流程可视化的查看方式,可以做到快速识别问题位置。
  • 函数公共请求头 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地址是固定。如需了解更多详情请咨询技术支持工程师。
  • 使用限制 单账号跟踪的事件可以通过云审计控制台查询。多账号的事件只能在账号自己的事件列表页面去查看,或者到组织追踪器配置的OBS桶中查看,也可以到组织追踪器配置的CTS/system日志流下面去查看。 用户通过云审计控制台只能查询最近7天的操作记录。如果需要查询超过7天的操作记录,您必须配置转储到对象存储服务(OBS),才可在OBS桶里面查看历史文件。否则,您将无法追溯7天以前的操作记录。 云上操作后,1分钟内可以通过云审计控制台查询管理类事件操作记录,5分钟后才可通过云审计控制台查询数据类事件操作记录。